mysql多线程复制crash_MySQL 并行复制(MTS) 从库发生异常crash分析

本文介绍了在MySQL 5.7.16中,两个使用多线程复制(MTS)的从库因大事务处理而发生异常崩溃的情况。分析表明,大事务可能导致内存溢出,尽管没有直接的日志指示。建议减少大事务的使用,调整slave_pending_jobs_size_max参数,并考虑记录binlog中的语句详情以辅助分析。
摘要由CSDN通过智能技术生成

背景

半同步复制从库在晚上凌晨2点半发生异常crash,另一个异步复制从库在第二天凌晨3点也发生了异常crash。

版本

mysql 5.7.16

redhat 6.8

mysql> show variables like ‘%slave_para%’;

+————————+—————+

| Variable_name | Value |

+————————+—————+

| slave_parallel_type | LOGICAL_CLOCK |

| slave_parallel_workers | 16 |

+————————+—————+

分析

mysqld服务在以mysqld_safe守护进程启动的情况下,在发生mysqld异常情况(比如OOM)会自动拉起mysqld服务,但已确认两个从库实例messages中无与OOM相关的日志。

从监控中发现,两个从库与Seconds_Behind_Master没有很高的异常上升。

参数slave_pending_jobs_size_max 在多线程复制时,在队列中Pending的事件所占用的最大内存,默认为16M,如果内存富余,或者延迟较大时,可以适当调大;注意这个值要比主库的max_allowed_packet大。

参考官方文档:slave_pending_jobs_size_max

两个发生异常crash的从库日志中都出现了ibuf record inserted to page x:x ,通过查看space_id发现都是对应的同一张表(a_xxx.join_acct_flow),疑是晚上的定时任务对这张表做了大事务的操作。从库的并行复制只有对并发提交的事务才会进行并行应用,对一个大事务,只有一个线程进行应用。

741f99352489683f244f1145dbc435bb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值