12343052 发表于 2018-10-6 11:45:49

mysql系列之6--------使用第三方工具-percona来备份mysql和恢复

  使用第三方工具来备份mysql-----percona
  一、前期准备工作:
  1、安装依赖包:yum-yinstallperl-Digest-MD5   perl-DBD-MySQL
  rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
  2、安装主包:    percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
  percona是一款在线热备工具
  3、包含两个组件:
  /usr/bin/xtrabackup   :支持innodb和xtraDB(增量备份)
  /usr/bin/innobackupex   :支持innodb和myisam(只支持全备,不支持增量)
  4、innobackupex 包含的一些选项
  --user                  用户名
  --password          密码
  --databases         库名
  --no-timestamp          不使用系统日期做备份目录的子目录名
  --apply-log               恢复日志
  --copy-back               恢复数据
  二、完全备份和完全恢复
  1、完全备份
  innobackupex --user root --password 123456 --database="mysql db66 performance sys"
  --no-timestamp   /allbak   //指定备份三个数据库,生成的备份文件目录不用系统时间做目录名
  2、恢复数据时,数据库目录为空,三个系统库必须备份进去
  首先恢复日志:innobackupex --user root --password 123456 --apply-log/allbak
  删除数据库目录:   rm    -rf      /var/lib/mysql
  创建数据库目录:   mkdir /var/lib/mysql
  恢复数据:innobackupex --user root --password123456--copy-back/allbak/
  赋予数据目录权限:chown -R mysql:mysql /var/lib/mysql
  重启服务,验证:systemctl restart mysqld
  三、增量备份和增量恢复
  1、在增量备份之前先做一次完全备份。
  innobackupex --user root --password 123456
  --databases="performance_schema sys mysql db666"
  --no-timestamp/onebak
  2、第一次增量备份
  innobackupex --user root --password 123456   //指定用户名密码
  --databases="performance_schema sys mysql db666" //指定需要备份的数据库
  --incremental /new1                //指定增量备份的路径
  --incremental-basedir=/onebak   //指定以哪个备份来做为增量备份的参考
  --no-timestamp
  3、第二次增量备份:
  innobackupex --user root --password 123456
  --databases="performance_schema sys mysql db666"
  --incremental /new2   //第二次增量备份的路径
  --incremental-basedir=/new1   //以上次增量备份做为参考来做增量备份
  --no-timestamp
  4、增量恢复的文件目录说明
  xtrabackup_checkpoints    xtrabackup_logfile         //这两个文件记录修改的lsn号
  5、恢复步骤
  A、删除数据目录下的文件:rm -rf/var/lib/mysql/*
  B、恢复日志---完全备份的日志
  innobackupex --user root --password 123456
  --databases="performance_schema sys mysql db666"
  --apply-log --redo-only   //恢复日志,并合并日志
  /onebak --no-timestamp
  C、恢复第一次增量的备份(只需要恢复日志,日志合并即可)
  innobackupex --user root --password 123456
  --databases="performance_schema sys mysql db666"
  --apply-log --redo-only /onebak//源日志路径
  --incremental-dir=/new1 --no-timestamp   //需合并的日志文件的路径
  D、恢复第二次增量的备份
  innobackupex --user root --password 123456
  --databases="performance_schema sys mysql db666"
  --apply-log --redo-only /onebak   //源日志文件的路径
  --incremental-dir=/new2 --no-timestamp   //第二次增量备份合并的日志
  E、恢复数据,只需还原全备份里面的,因为增量备份的内容已经合并到全备里面
  innobackupex --user root --password 123456--copy-back/onebak
  F、给数据目录给权限,重启服务验证
  chown    -R   mysql:mysql    /var/lib/mysql
  systemctl   restart      mysqld
  四、恢复完全备份数据中的单张表
  1、export//导出表信息   import //导入表空间
  删除表空间:altertable 表    discardtablespace;
  2、备份单个数据库:
  innobackupex --user root --password 123456
  --databases="mydb" --no-timestamp /mydb//只备份一个数据库
  3、删除表,创建表(表字段必须要和以前的一样,模拟表丢失
  drop table t1;       create table t1(id int);
  4、导出表信息:用到的参数是--export
  innobackupex --user root --password 123456 --databases="db66" --apply-log --export /db66
  5、删除表空间:在mysql命令行里操作
  alter table db66.t1 discard tablespace;
  6、把备份目录下导出的表信息拷贝到数据库目录下,并给权限
  cp /db66/db66/t1.{cfg,exp,ibd} /var/lib/mysql/db66/
  chown mysql /var/lib/mysql/db66/t1.*
  7、导入表空间
  alter table db66.t1 import tablespace;
  8、验证:select * from db66.t1;

页: [1]
查看完整版本: mysql系列之6--------使用第三方工具-percona来备份mysql和恢复