架构
异机还原IP:172.17.100.103(5.6.39)
还原IP:172.17.100.104(5.6.39)
线上备份:阿里云RDS(5.6.16)
备份IP:172.17.100.100(5.7.22)
###################################################
实验一:Xtrabackup流备
###################################################
惯例性的先处理报错
报错原因:InnoDB: Error number 24 means 'Too many open files'
检查系统层面的参数ulimit
可以看到open files对应的是-n
ulimit -n 65535将该值修改为65535
或者修改/etc/security/limits.conf
在最底下添加2行,然后logout重新登陆会话
在/etc/my.cnf里面添加
open_files_limit=20480
重启mysql
发现该参数已经得到修改
重新执行innobackupex,正常执行。
#执行流备到异机
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf -uroot -pbeacon --stream=tar /tmp | ssh root@172.17.100.103 \ "cat - > /data/Xtrabackup/bak.tar"
第一个粗体是本机的路径;第二个粗体引号前面一定要有空格,否则引号会被转义;第三个粗体是异机的路径
实际执行中,本机路径下不会生成任何文件,最终的文件会被生成到异机的指定路径下
最终这个bak.tar会生成到172.17.100.103的/data/Xtrabackup路径下
注意的是,如果用tar压缩成了gz文件,在103上执行解压时需要采用-i参数
tar -xif bak.tar.gz
在103上恢复之前,需要prepare;因为流式备份不会prepare
###################################################
实验二:Xtrabackup增量备份
###################################################
插曲
之前把线上的5.6版本的mysql恢复到本机5.6和5.7的库上均没有问题
今天试了下,把5.7的库恢复到5.6,提示为失败
MySQL支持向后兼容,但是向前是不行滴
#首先做一个全备
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf -uroot -pbeacon /data/Xtrabackup/
#数据库进行一次事务操作
#基于前面的全备进行增备
全备路径:/data/Xtrabackup/
增备路径:/data/Incremental/
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf -uroot -pbeacon --incremental --incremental-basedir=/data/Xtrabackup/2018-07-05_17-25-03/ /data/Incremental/
第一个粗体部分是全备的路径;第二个粗体部分是增备路径
查看lsn的变化
#基于增备进行增备
前面一次增备的lsn为57454873398
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf -uroot -pbeacon --incremental --incremental-lsn=57454873398 /data/Incremental/
基于前面的(2次)增备进行还原
①#将全量备份直接解压到数据路径下/data/mysql/mysql3306/data/
#基于全量的还原(和普通全量还原相比,就是多了一个--redo-only参数)
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf --apply-log --redo-only /data/mysql/mysql3306/data/
②#将增量备份(除开最后一次)解压到其他路径下/data/Incremental/2018-07-05_17-26-22/
#基于前面的全量,进行增量(除开最后一次增量)的还原,有--redo-only参数,还有--incremental-dir参数;最后跟着全量恢复的路径
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf --apply-log --redo-only --incremental-dir=/data/Incremental/2018-07-05_17-26-22/ /data/mysql/mysql3306/data/
③#将最后一次增量备份解压到对应路径下/data/Incremental/2018-07-05_17-35-04/
#基于前面的增量完成最后一次增量的恢复,没有--redo-only参数,incremental-dir写成最后一次增备的路径
innobackupex --defaults-file=/data/mysql/mysql3306/my3306.cnf --apply-log --incremental-dir=/data/Incremental/2018-07-05_17-35-04/ /data/mysql/mysql3306/data/
修改数据路径的权限为mysql,打开数据库,确认恢复成功
###################################################
实验三:Xtrabackup主从的备份
###################################################
###################################################
实验四:Xtrabackup备份的校验
###################################################
###################################################
实验五:Xtrabackup备份脚本
###################################################
参考文档:艺龄妹子的流备
参考文档:艺龄妹子的流备脚本
网友评论