mysql job 参数_MySQL 参数slave_pending_jobs_size_max设置

今天生产环境上从库出现SQL进程停止的异常,错误信息如下:

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1864

Last_Error: Cannot schedule event Write_rows, relay-log name ./mysql-relay-bin.001304, position 416228895 to Worker thread because its size 16777357 exceeds 16777216 of slave_pending_jobs_size_max.

从报错信息可以看出,是因为slave_pending_jobs_size_max的大小小于当前需要执行事件所需的内存大小。经查看,slave_pending_jobs_size_max的大小设置的是默认值16777216(即16M),小于16777357。

异常处理步骤如下:

1.查看主库max_allowed_packet的大小;

mysql> show variables like 'max_allowed_packet'; -- 134217728 即128M

+--------------------+-----------+

| Variable_name | Value |

+--------------------+-----------+

| max_allowed_packet | 134217728 |

+--------------------+-----------+

1fc74c6c7cbad72f3b3bce02e6929041.png

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

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)

mysql> set global slave_pending_jobs_size_max=157286400;

Query OK, 0 rows affected (0.00 sec)

mysql> start slave;

Query OK, 0 rows affected (0.05 sec)

3.处理完毕检查一下主从同步情况

mysql> show slave status\G

fbd6b4fb0eb423b3272dee413ea6b8c0.png

Tips:

slave_pending_jobs_size_max的用途:

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

耿小厨已开通个人微信公众号,想进一步沟通或想了解其他文章的同学可以关注我

3ae3f846620d6b4ffa33f1e4a7772ae6.png

作者:懂点IT的耿小厨

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值