MySQL主从复制(7)延迟从库的设置与恢复

一、延迟从库的作用

MySQL从5.6开始支持延迟复制,通过人为配置延迟复制的目的:

  • · 用户在主库上误操作,通过延迟从库中的数据来恢复被误删除的数据
  • · 经常要求查询时间比较久远的数据进行比对,不需要重新加载备份数据。比如要查看一周前的数据,就配置一个从库延迟一周 

二、延迟从库配置

在需要配置为延迟从库的客户端上执行以下命令

mysql > stop slave sql_thread; #配置前需要停止SQL线程
mysql > change master to master_delay = 3600;  #SQL线程延迟1小时,IO线程不影响
mysql > start slave;
mysql > show slave status \G  #查看SQL_Dely的值

三、使用延迟从库进行数据恢复 

  • · 方法1 
1、主库执行错误语句,错误的删除了一个数据
delete from student where id=5 
2、从库还处于延迟阶段,立即停止SQL_THREAD,防止从库执行了该语句
stop slave sql_thread;
3、使用mysqldump在从库导出正常数据,比如主库执行了一个delete语句
mysqldump -uroot -p school student --where 'id=5' --no-create-db -no-create-info > 5.sql
4、主库执行从库导出的SQL将该数据恢复,然后从库恢复SQL线程
  • · 方法2 
1、如果主库执行了错误的语句,比如drop database linuxe,现在需要使用延迟从库来恢复数据。首先就是在延迟从库上停止SQL线程,让它不再继续执行relay中的SQL
stop slave sql_thread;
2、查看延迟从库relaylog位置点(假设position=482),这个点可以作为数据库恢复的起点
show slave status \G  #查看relay_log_file和relay_log_pos信息
3、查看延迟从库relaylog中误操作语句的位置点(假设position=1402),通常是在最后一个relaylog中,这里需要注意Position信息只需要看左边一列的,它才是relaylog中的位置,而relaylog中的End_log_pos是主库中的位置,不需要关注
mysql > show  relaylog events in 'relay-bin.000005';
4、生成用于恢复数据的SQL,这步操作将把从库停止SQL_THREAD之后和误操作之前的SQL进行导出
mysqlbinlog --start-position=482  --stop-position=1402 /data/mysqllog/relay-bin.00005 > /tmp/relay.sql
5、需要注意补齐上一步之后产生的数据

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值