通过延迟从库恢复主库误删表

 

如果公司有条件的话,或者是数据库数据量比较大,备份时间比较长。可以配置一个延迟从库,代替备份。这样恢复ddl的数据,就不用通过备份+binlog进行拉取了。

 

模拟故障,环境: 主从,从配置延迟复制。

配置3600s的延迟从库

stop slave;
change master to master_delay = 3600;
start slave;

 

主库drop表

use test;
drop table t1;

 

如果发现主库出现误操作,第一时间关闭从库sql_thread

stop slave sql_thread;

 

主库解析binlog,找到关键字DROP TABLE 相关的那条日志

/usr/local/mysql/bin/mysqlbinlog -vvv --base64-output=decode-rows mysql-bin.000050 > /tmp/1.log

# at 43456042
#190918 14:34:39 server id 1753333  end_log_pos 43456103        GTID    last_committed=26452    sequence_number=26453   rbr_only=no
SET @@SESSION.GTID_NEXT= '44b68395-ca31-11e9-b10a-00163e3211a2:443813'/*!*/;
# at 43456103
#190918 14:34:39 server id 1753333  end_log_pos 43456214        Query   thread_id=73858 exec_time=0     error_code=0
SET TIMESTAMP=1568788479/*!*/;
DROP TABLE `t1` /* generated by server */
/*!*/;

 

从库开启复制,until到drop之前的事务

change master to master_delay = 0;
start slave until sql_before_gtids = '44b68395-ca31-11e9-b10a-00163e3211a2:443813';

 

然后从库将该表dump出来,导入到主库中。

然后从库重启一下同步

stop slave;
change master to master_delay = 3600;
start slave;

 

转载于:https://www.cnblogs.com/yujiaershao/p/11542805.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值