ip 数据库角色 数据库端口 数据库版本 192.168.102.168 master 3308 5.7.11 192.168.102.169 slave 3308 5.7.11 主库生成测试数据: create database test; use test; CREATE TABLE `t1` ( `id` int(11) NOT NULL, `name` varchar(2) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into t1(id,name) values(1,'a'),(2,'b'),(3,'c'); 备库:设置为延时同步 stop slave; change master to master_delay=1800; start slave; 主库模拟误操作 truncate use test; truncate table t1; 主库: session1: 在t1表上加只读锁,防止产生脏数据 flush tables t1 with read lock; session2: 在主库创建临时库,用于数据恢复 create database tmp; session1: show master logs; show binlog events in 'mysql-bin.000002'; #找到误操作时的gtid位置 延时备份的从库需要根据这个位点进行跳过 备库:跳过误操作的语句 stop slave; set gtid_next='4658262b-835c-11e8-87a4-005056910c4b:31'; begin;commit; set gtid_next='automatic'; change master to master_delay=0; start slave; 备库进行数据备份 mysqldump -uroot -pzhtx1.q -S /tmp/mysql3308.sock test t1 --set-gtid-purged=off >/tmp/t1.sql 主库导入数据到新创建的临时库: session2: mysql -uroot -pzhtx1.q -S /tmp/mysql3308.sock tmp < /tmp/t1.sql session1: 解锁 unlock tables; rename table test.t1 to test.t2; rename table tmp.t1 to test.t1; 至此数据恢复完成。 | |||||||||||||||||||||||||||||||||||||||