使用第三方工具来备份mysql-----percona
一、前期准备工作:
1、安装依赖包:yum -y install perl-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 --password 123456 --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 //导入表空间
删除表空间:alter table 表 discard tablespace;
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;
原文地址:https://blog.51cto.com/14421632/2415070