笔记:一次mysql主从复制延迟高的处理尝试
背景
mysql 5.7 主从复制
主库进行了一次灌数,导致多个大事务产生,主从延迟下不去,经确认该表最终truncate,并且该表仅有insert和select操作,故对该表的事务进行跳过,直到同步至truncate
跳过事务需谨慎,一定一定要谨慎!!
操作
总体思路就是查看备库状态,到卡顿点后查看卡顿位置执行的语句是否为该表语句,是则进行跳过,直至追平
1,查看备库状态
show slave status\G
找到如下信息
Relay_Log_File: db02-relay-bin.000221
Relay_Log_Pos: 510549382
2,检查当前relaylog对应pos正在执行什么
mysqlbinlog --no-defaults -vvv db02-relay-bin.000221|grep -i -B 30 -A 100 "510549382"
show relaylog events in 'db02-relay-bin.000221' from 510549382 limit 10 ;
3,确认后跳过
show slave status\G
stop slave ;
set global sql_slave_skip_counter=1;
start slave;
show slave status\G
4,未避免因长时间stop引发的问题,配置参数限制stop时间,到时间后报错失败
原(单位s):
set global rpl_stop_slave_timeout=31536000
改(单位s):
set global rpl_stop_slave_timeout=600
其他
查看大事务
select * from information_schema.innodb_trx\G
一切提升主备同步的设置
set global sync_binlog=20;
set global innodb_flush_log_at_trx_commit=2;