背景:
主库:158.222.188.185
从库:158.222.188.186
mysql数据库:5.6
主从运行一段时间,由于测试人员不小心操作了从库,导致主从不一致,现在需要利用一份从库的数据。
主从是使用了gtid。
执行需要下面几个简单步骤
1.在从库上执行mysqldump,-A表示全库导出
mysqldump -uroot -p123456 -h158.222.188.185 --single-transaction --master-data -A > /root/185.sql
2.查看下导出的数据。
more 185.sql
可以找到
set @@GLOBAL.GTID_PUGED='6c490f06-c0f-11-bd22-0894e27829d:1-6781625';
change master to master_log_file='mysql-bin.000014',master_log_pos=210034;
3.在从库上执行,stop slave; 停止主从
4. 关闭auto_position
change master to master_auto_positon=0;
5.打开show slave status\G 可以看到excuted_gtid_set由两串gtid组成,一串是master写入过数据,从库读relaylog这set集合,一串是由于自身的,由于误操作,执行过写入产生的日志。
执行 reset master;清空binlog
执行 reset slave;
或者
如果要执行 RESET SLAVE ALL是清除从库的同步复制信息、包括连接信息和二进制文件名、位置。
6.在从库上导入数据,可以以下的办法,或者使用 source都可以
mysql -uroot -p123456
7.如果之前执行下的是reset slave all
那么需要重连主库信息,
CHANGE MASTER TO MASTER_HOST='158.222.188.185',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='replpass',
MASTER_CONNECT_RETRY=10,
;
8.将这讲句话重新执行下
set @@GLOBAL.GTID_PUGED='6c490f06-c0f-11-bd22-0894e27829d:1-6781625';
change master to master_log_file='mysql-bin.000014',master_log_pos=210034;
然后start slave ;