延时从库应用之误删恢复

1主1从,从库延时5分钟,主库误删除1个库

故障恢复思路:
1. 5分钟之内 侦测到误删除操作
2. 停从库SQL线程
3. 截取relaylog
起点 :停止SQL线程时,relay最后应用位置
终点:误删除之前的position(GTID)
4. 恢复截取的日志到从库
5. 从库身份解除,替代主库工作

2.故障模拟及恢复

# 1.主库数据操作
create database relay charset utf8;
use relay
create table t1 (id int);
insert into t1 values(1);
drop database relay;
# 2.从库操作(停止从库SQL线程)
stop slave sql_thread;
# 3.从库操作(找relaylog的截取起点和终点)
# 起点:
cd /usr/local/mysql/data/
cat relay-log.info
./db01-relay-bin.000002
482
# 或者 show slave statusG
Relay_Log_File: db01-relay-bin.000002
Relay_Log_Pos: 482

# 终点:
show relaylog events in 'db01-relay-bin.000002'
| db01-relay-bin.000002 | 1046 | Xid            |         7 |        2489 | COMMIT /* xid=144 */                  |
| db01-relay-bin.000002 | 1077 | Anonymous_Gtid |         7 |        2554 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS'  |
mysqlbinlog --start-position=482 --stop-position=1077  /data/3308/data/db01-relay-bin.000002>/tmp/relay.sql
# 4.从库身份解除
stop slave;
reset slave all;
# 5.从库恢复relaylog
set sql_log_bin=0; 数据库上执行的语句都不记录到binlog
source /tmp/relay.sql
原文地址:https://www.cnblogs.com/Applogize/p/13381435.html