数据库运维
记录DBA学习成长历程

MySQL延时从库应用案例

1主1从,从库延时5分钟,主库误删除1个库
1. 5分钟之内 侦测到主库发生了逻辑损坏误删除操作
2. 立即停止延时从库SQL线程
4.挂维护页
5. 截取relaylog进行恢复(人为模拟SQL线程工作,直到drop之前)
起点 :停止SQL线程时relay最后应用位置
终点:误删除之前的position(GTID)
6. 恢复截取的日志到从库
7. 从库身份解除,替代主库工作

故障模拟及恢复

1.确认已开启延时从库

mysql> show slave status \G
SQL_Delay: 300
SQL_Remaining_Delay: NULL

2..主库数据操作故障模拟

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

3. 停止从库SQL线程

stop slave sql_thread;

4. 找relaylog的截取起点和终点

起点:
mysql [(none)]>show slave status \G
Relay_Log_File: xiaoyong-relay-bin.000002
Relay_Log_Pos: 476
[root@xiaoyong data]# cat ./3308/data/relay-log.info
./xiaoyong-relay-bin.000002
476
终点:
mysql [(none)]>show relaylog events in 'xiaoyong-relay-bin.000002'
| xiaoyong-relay-bin.000002 | 1146 | Query | 7 | 2291 | drop database delay |
[root@xiaoyong data]#mysqlbinlog --start-position=476 --stop-position=1146 /data/3308/data/xiaoyong-relay-bin.000002>/tmp/relay.sql

5.从库恢复relaylog

[root@xiaoyong data]# mysql -uroot -p -S /data/3308/mysql.sock
mysql [(none)]>set sql_log_bin=0;
mysql [(none)]>source /tmp/relay.sql

6.从库身份解除

stop slave;
reset slave all;
赞(2)
MySQL学习笔记 » MySQL延时从库应用案例