1、在slave1:3306从库进行备份
innobackupex --defaults-file=/mysql/mysql57/my.cnf --user=root --password=xxx --socket=/mysql/mysql3306/tmp/mysql.sock --slave-info /mysql/innobak
2、在从库slave2上新启3307实例进行恢复并与线上master进行同步
1)slave2:3307 准备恢复:
innobackupex --defaults-file=/mysql/mysql57/my3307.cnf --apply-log /mysql/innobak/2019-12-03_18-12-38
2)slave2:3307恢复
innobackupex --defaults-file=/mysql/mysql57/my3307.cnf --copy-back /mysql/innobak/2019-12-03_18-12-38
3)启动slave2:3307实例
/mysql/mysql57/bin/mysqld_safe --defaults-file=/mysql/mysql57/my3307.cnf --datadir=/mysql/mysql3307/data/ --user=mysql &
4)查看文件xtrabackup_slave_info(在数据目录下),过滤掉已执行过的gtid
注意:innobackupex 备份从库的时候,会在备份文件中多出xtrabackup_slave_info文件,看到gtid_purged的值有两个,一个是主库的,另一个是备份时的从库的,所以执行purged的时候一起purged掉
找到:SET GLOBAL gtid_purged 所在的这一行
#less xtrabackup_slave_infoSET GLOBAL gtid_purged='2e8c1f87-0c14-11ea-87c1-ac1f6ba4e118:1-3, f42b4135-cdf5-11e9-81ad-3ca82ae8dd1c:1-74966943';
CHANGE MASTERTO MASTER_AUTO_POSITION=1
5).查看slave2:3307已执行的gtid是否为空,如果不为空,需要执行reset MASTER进行清理,否则无法设置gtid。
mysql> show master status \G;
6)如果不为空,执行reset master进行清理
7)、执行GTID_PURGED
mysql>SET GLOBAL gtid_purged='2e8c1f87-0c14-11ea-87c1-ac1f6ba4e118:1-3, f42b4135-cdf5-11e9-81ad-3ca82ae8dd1c:1-74966943';
8)、change master to
9)、start slave;
10) set global read_only=1;