记一次mysql主从复制中断的问题

1主4从:  s1,  s2, s3, s4

 

s1, s2 主从复制正常;

s3, s4主从端口,last error 显示为 

Cannot schedule event Query, relay-log name ./xxxx-vl-101-38-relay-bin.001626, position 219328831 to Worker thread because its size 53108658 exceeds 40821760 of slave_pending_jobs_size_max

 

发现错误原因是由于从库的 slave_pending_jobs_size_max 导致,slave_pending_jobs_size_max的大小小于当前需要执行事件所需的内存大小。原因是业务在夜里修复数据,直接批量写入主库改数据导致。

 

解决办法:

.

查看主库max_allowed_packet的大小;

mysql> show variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 67108864 |
+--------------------+----------+

 

设置从库slave_pending_jobs_size_max的大小,注意,需要大于主库max_allowed_packet的大小

stop slave;
set global slave_pending_jobs_size_max=134217728;  
start slave;
show slave status\G;

 

slave_pending_jobs_size_max的用途:

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

你可能感兴趣的:(记一次mysql主从复制中断的问题)