一、percona软件的作用
XtraBackup工具
安装percona
[root@proxy ~]# yum -y install libev-4.15-1.el6.rf.x86_64.rpm #依赖包
[root@proxy ~]# yum -y install percona-xtrabackup-24-2.4.7-1.el7.x86_64.rpm
innobackupex命令
完全恢复
51设备上
[root@proxy ~]# innobackupex --user root -p 123qqq...A /root/all12 --no-timestamp
[root@proxy ~]# scp -r all12 [email protected]:/root/
52设备上
systemctl stop mysqld #前提条件
rm -rf /var/lib/mysql/*
[root@proxy1 ~]# innobackupex --apply-log /root/all12/ #执行准备恢复数据,执行完后type会发生改变
[root@proxy1 ~]# innobackupex --copy-back /root/all12/ #前提条件是必须要把mysql的目录(var)删除,而且mysql下的文件必须要改所有者和所有组(mysql)
systemctl start mysqld
部分恢复
52主机 仅恢复 b表的表记录
先delete清空表的内容
mysql> alter table gamedb.b discard tablespace; 删除b表的.ibd文件、
[root@proxy1 ~]# innobackupex --apply-log --export /root/full1.bak/ #该命令会多生成2个文件
[root@proxy1 ~]# ls full1.bak/dd1/
db.opt t1.cfg t1.exp t1.frm t1.ibd
[root@proxy1 ~]# cp full1.bak/dd1/t1.{cfg,exp,ibd} /var/lib/mysql/dd1/ #把这三个文件拷贝到对应的MySQL目录下
[root@proxy1 ~]# chown -R mysql:mysql /var/lib/mysql
mysql> alter table dd1.t1 import tablespace; #把.ibd文件导入到数据库
删除.cfg和.exp文件,不删会导致将来对应的数据库无法删除
.frm:表结构(desc) .ibd:表记录(select) .cfg和.exp:特殊的innodb数据字典文件
51设备上
如周一完全备份
[root@proxy ~]# innobackupex --user root --password 123qqq...A /root/full3.bak --no-timestamp
周二增量备份
[root@proxy ~]# innobackupex --user root --password 123qqq...A --incremental /root/nwe1dir --incremental-basedir=/root/full3.bak --no-timestamp
周三增量备份
[root@proxy ~]# innobackupex --user root --password 123qqq...A -incremental /root/new2dir --increment-basedir=/root/new1dir --no-timestamp
拷贝给52设备
[root@proxy1 ~]# innobackupex --apply-log --redo-only /root/full3.bak/ #先准备完全备份的数据
[root@proxy1 ~]# innobackupex --apply-log --redo-only /root/full3.bak/ --incremental-dir=/root/nwe1dir #合并周一与周二数据
[root@proxy1 ~]# cat full3.bak/xtrabackup_checkpoints #查看数据是否改变
[root@proxy1 ~]# innobackupex --apply-log --redo-only /root/full3.bak/ --incremental-dir=/root/nwe2dir/ #合并所有数据
[root@proxy1 ~]# cat full3.bak/xtrabackup_checkpoints #检查数据设备合并成功,查看lns日志序列号是否已改变
然后
systemctl stop mysqld #前提条件
rm -rf /var/lib/mysql/*
[root@proxy1 ~]# innobackupex --copy-back /root/full3.bak/ #把数据拷贝到数据库目录下
[root@proxy1 ~]# chown -R mysql:mysql /var/lib/mysql #修改文件的所有者组用户为mysql
systemctl start mysqld
完全备份准备好之后会变如下状态
做增量恢复是根据LNS日志序列号来恢复的,LNS序号存在日志文件里面