Xtrabackup安装备份还原<一>

架构

备份IP:172.17.100.103(5.6.39)

还原IP:172.17.100.104(5.6.39)

线上备份:阿里云RDS(5.6.16)

还原IP:172.17.100.101(5.7.22)

###################################################

实验一:完成Xtrabackup的安装,以及测试环境下的备份和还原

###################################################

Xtrabackup的安装

(CentOS6)前置依赖条件

#在centos6.6和6.8的版本上直接安装会提示缺少一个依赖条件,因此需要先打上这个rpm包

wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/libev-4.15-1.el6.rf.x86_64.rpm

yum install -y libev-4.15-1.el6.rf.x86_64.rpm

yum安装xtrabackup

wget http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

rpm -ivh percona-release-0.1-4.noarch.rpm

yum install percona-xtrabackup-24 -y

单机备份(172.17.100.103)

#创建备份路径

mkdir -p /data/Xtrabackup

#执行备份

(innobackupex -S /tmp/mysql3306.sock -uroot -p密码 /data/Xtrabackup/)

#上面一条执行备份时出现过报错,最好指定一下参数文件

innobackupex –defaults-file=/data/mysql/mysql3306/my3306.cnf –user=root –password=beacon /data/Xtrabackup/

#将备份拷贝到目的IP

scp -r /data/Xtrabackup/2018-06-26_09-27-15/ 172.17.100.104:/data/Xtrabackup/

单机还原(172.17.100.104)

#删除datadir下的数据文件(2台测试机没有开启binlog)

cd /usr/local/mysql/data

rm -rf *

#执行还原

innobackupex –apply-log /data/Xtrabackup/2018-06-26_09-27-15/

innobackupex –copy-back /data/Xtrabackup/2018-06-26_09-27-15/

#更改权限

chown -R mysql.mysql  /usr/local/mysql/data

遇到的问题

问题①

104的mysql没有执行关闭,直接执行的数据还原,完成之后可以登陆,也可以查看到有多少表被恢复过来,但是在执行表内容查询时,提示该表不存在

《Xtrabackup安装备份还原<一>》” /></p><p>并且无法用service mysqld stop去关闭mysql</p><p>#通过mysqladmin关闭mysql</p><p>mysqladmin -uroot -p shutdown</p><p>完成重启后,可以正常使用数据库</p><p>问题②</p><p>备份时报错InnoDB: File ./ib_logfile2: ‘open’ returned OS error 71. Cannot continue operation</p><p>解决方法:在备份时指定cnf文件</p><p>innobackupex –defaults-file=/data/mysql/mysql3306/my3306.cnf –user=root –password=beacon /data/Xtrabackup/</p><p>###################################################</p><p><b>实验二:线上RDS库(5.6.16)还原到本地(5.6.39)</b></p><p>###################################################</p><p>下载阿里云解压脚本</p><p>wget http://oss.aliyuncs.com/aliyunecs/rds_backup_extract.sh</p><p>chmod +x rds_backup_extract.sh</p><p>将RDS的备份文件拷贝到本地</p><p>./rds_backup_extract.sh -f hins4334903_data_20180625233726.tar.gz -C /usr/local/mysql/data/</p><p>#执行恢复</p><p>innobackupex –defaults-file=/usr/local/mysql/data/backup-my.cnf –apply-log /usr/local/mysql/data</p><p>#修改数据路径的权限</p><p>chown -R mysql.mysql /usr/local/mysql/data</p><p>#对数据目录(/usr/local/mysql/data)下之前解压出的backup-my.cnf进行修改,注释掉一堆RDS特有的设置</p><p>综合来说能留下的就是这3个设置</p><p>innodb_data_file_path=ibdata1:200M:autoextend</p><p>innodb_log_files_in_group=2</p><p>innodb_log_file_size=1048576000</p><p><img layer-src=lrzsz工具安装使用参考

cd ~

cp mysql-bin.0003* /data/mysql/mysql3306/logs

chown -R mysql.mysql /data/mysql/

#探寻末尾位置点

cd /data/mysql/mysql3306/logs

#将最后一个binlog导出成文本文件

mysqlbinlog -v –base64-output=DECODE-ROWS mysql-bin.000346 > 346.log

tail -10f 346.log

可以获知最后一个binlog的最后一个end_pos为86242654

《Xtrabackup安装备份还原<一>》” /></p><p>将需要还原的binlog排列全部列出,第一个binlog为336,最后一个为346;(中间的是否需要按顺序没有测试,我采取了顺序排列)</p><p>start-position为第一个binlog的相应的end_log_pos:13090077</p><p>stop-position为最后一个binlog的最后一个end_log_pos:86242654</p><p>#我是切换到/data/mysql/mysql3306/logs下执行的,在其他路径下执行,需要把binlog的位置写全</p><p>mysqlbinlog —<b>start-position=13090077</b> —<b>stop-position=86242654</b> <b>mysql-bin.000336</b> mysql-bin.000337 mysql-bin.000338 mysql-bin.000339 mysql-bin.000340 mysql-bin.000341 mysql-bin.000342 mysql-bin.000343 mysql-bin.000344 mysql-bin.000345 <b>mysql-bin.000346</b> |mysql -uroot</p><p>完成恢复后没有报错,重新启动mysql</p><p>在启动的log中可以看到recovery的相关log</p><p><img layer-src=     原文作者:飞翔的Tallgeese
    原文地址: https://www.jianshu.com/p/bdc34271f21f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

点赞