当前位置: 移动技术网 > IT编程>数据库>Mysql > Mysql 1864 主从错误解决方法

Mysql 1864 主从错误解决方法

2017年12月12日  | 移动技术网IT编程  | 我要评论

从字面意思看了一下是因为slave_pending_jobs_size_max默认值为16777216(16mb),但是slave接收到的slave_pending_jobs_size_max为17085453(17m);

解决方案

从库执行如下sql

mysql>stop slave;
mysql>set global slave_pending_jobs_size_max=20000000;
mysql> start slave;

#在多线程复制时,在队列中pending的事件所占用的最大内存,默认为16m,如果内存富余,或者延迟较大时,可以适当调大;注意

这个值要比主库的max_allowed_packet大

故障模拟:

从库设置

mysql> set global slave_parallel_workers=4;
mysql> show variables like 'slave_parallel_workers';
+------------------------+-------+
| variable_name | value |
+------------------------+-------+
|slave_parallel_workers | 4 |
+------------------------+-------+
1 row in set (0.00sec)
mysql>set global slave_pending_jobs_size_max=1024;
mysql> show variables like 'slave_pend%';
+-----------------------------+-------+
| variable_name | value |
+-----------------------------+-------+
|slave_pending_jobs_size_max | 1024 |
+-----------------------------+-------+
1 row in set (0.00sec)

主库操作:

mysql> update erp_mkpf set usnam='测试1864错误';
error 1197 (hy000):multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage; increase this mysqld variable and try again
mysql> set global max_binlog_cache_size=8388608000000;
query ok, 0 rowsaffected (0.00 sec)
mysql> begin;
query ok, 0 rowsaffected (0.00 sec)
mysql> update erp_mkpf set usnam='测试1864错误';
query ok, 70466 rowsaffected (0.38 sec)
rows matched:70466 changed: 70466 warnings: 0
mysql> commit;
query ok, 0 rowsaffected (0.08 sec)

从库查看状态:

mysql> show slavestatus\g
last_sql_errno: 1864
last_sql_error: cannot scheduleevent update_rows, relay-log name ./he1-relay-bin.000005, position 494 toworker thread because its size 8200 exceeds 1024 ofslave_pending_jobs_size_max.

以上所述是小编给大家介绍的mysql 1864 主从错误解决方法,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网