当从库出现故障,与主库有差异数据,或者要新搭建一个新的从库时,可以利用xtrabackup备份主库,恢复从库数据。
一 试验环境
角色 | IP | Xtrabackup 版本 | Mysql版本 |
主库 | 192.168.1.202 | 2.4.4 | 5.7 |
备库 | 192.168.1.203 |
二 试验步骤
2.1 备份主库
innobackupex --port=3307 --user=XtrabackupUser --password=123456 /download/bak/xtrbak/
#将备份文件拷贝到从库
scp -r /download/bak/xtrbak/2020-03-17_08-37-19/ 192.168.1.203:/download/bak/xtrbak/
2.2 在从库上恢复数据
innobackupex --apply-log /download/bak/xtrbak/2020-03-17_08-37-19
service mysqld stop
#将数据目录设置为空
cd /data/server/mysql_3307/
mv data data_bak
innobackupex --copy-back /download/bak/xtrbak/2020-03-17_08-37-19
chown -R mysql:mysql data
service mysqld start
2.3 设置gtid_purged跳过GTID
#查看xtrabackup_binlog_info中记录的GTID范围
cd /download/bak/xtrbak/2020-03-17_08-37-19/
[root@pc1 2020-03-17_08-37-19]# cat xtrabackup_binlog_info
mysql-bin.000036 1792 2daff865-67ce-11ea-874e-080027040516:1-7,
a4ac8cd2-e17c-11e9-a602-080027040516:1-89,
d4d2f1d2-66f2-11ea-972a-080027040516:1-17
在从库中执行:
mysql> set @@global.gtid_purged='2daff865-67ce-11ea-874e-080027040516:1-7,
'> a4ac8cd2-e17c-11e9-a602-080027040516:1-89,
'> d4d2f1d2-66f2-11ea-972a-080027040516:1-17
'> ';
ERROR 1840 (HY000): @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.
若报上述错误,需要先reset master,再执行该命令。
2.4 change master to
从库恢复完数据后,复制信息消失:
mysql> show slave status \G;
Empty set (0.00 sec)
ERROR:
No query specified
需要重新配置主从复制:
change master to master_host='192.168.1.202',master_port=3307,master_user='RepUser',master_password='123456',master_auto_position=1;
start slave;
#检查主从复制
show slave status \G;