MySQL延迟同步

本文介绍了MySQL从库如何实现延迟同步以防止主库误操作影响从库,并详细阐述了在出现逻辑故障时的恢复步骤,包括监控、停止SQL线程、截取relaylog、模拟SQL线程回放以及根据不同情况恢复业务的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目的是 防止主库的误操作造成从库也被误操作。
mysql>stop slave;
mysql>CHANGE MASTER TO MASTER_DELAY = 1800;单位为秒
mysql>start slave;
mysql>show slave status \G;?
如下图所示: 红色框中参数的意义:
在这里插入图片描述
Master_Log_File 主库mysql的binlog文件名
Read_Master_Log_Pos 读取主库mysql的binlog文件的位置
Exec_Master_Log_Pos 从库执行主库mysql的binlog文件的位置
Seconds_Behind_Master 从库延迟主库同步的时间单位秒
SQL_Delay 设置从库服务器相较于主库服务器的延迟同步时间

延时从库的恢复思路
(1) 监控到数据库逻辑故障

(2) 停从库SQL线程,记录已经回放的位置点(截取日志起点)
stop slave sql_thread ;
show slave status \G
Relay_Log_File: db01-relay-bin.000002
Relay_Log_Pos: 320

(3) 截取relaylog
起点:
show slave status \G
Relay_Log_File ,Relay_Log_Pos

终点: drop之前的位置点
show relaylog events in ‘’
进行截取

(4) 模拟SQL线程回访日志
从库 source
(5) 恢复业务
情况一: 就一个库的话
从库替代主库工作
情况二:
从库导出故障库,还原到主库中.

故障演练

主库 :
create database delay charset utf8mb4;
use delay;
create table t1 (id int);
insert into t1 values(1),(2),(3);
commit;
drop database delay;

从库:

1.停止 从库SQL 线程,获取relay的位置点
mysql> stop slave sql_thread;
mysql> show slave status \G
Relay_Log_File: db01-relay-bin.000002
Relay_Log_Pos: 626

  1. 找到relay的截取终点
    mysql> show relaylog events in ‘db01-relay-bin.000002’;
    | db01-relay-bin.000002 | 1299 | Query | 7 | 1228 | drop database delay

  2. 截取relay
    [root@db01 data]# cd /data/3308/data/
    [root@db01 data]# mysqlbinlog --start-position=626 --stop-position=1299 db01-relay-bin.000002 >/tmp/relay.sql

  3. 恢复relay到从库
    [root@db01 data]# mysql -uroot -p -S /data/3308/mysql.sock
    mysql> set sql_log_bin=0;
    mysql> source /tmp/relay.sql

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值