從字面意思看了一下是因?yàn)閟lave_pending_jobs_size_max默認(rèn)值為16777216(16MB),但是slave接收到的slave_pending_jobs_size_max為17085453(17M);
解決方案
從庫(kù)執(zhí)行如下SQL
mysql>stop slave;mysql>set global slave_pending_jobs_size_max=20000000;mysql> start slave;
#在多線程復(fù)制時(shí),在隊(duì)列中Pending的事件所占用的最大內(nèi)存,默認(rèn)為16M,如果內(nèi)存富余,或者延遲較大時(shí),可以適當(dāng)調(diào)大;注意
這個(gè)值要比主庫(kù)的max_allowed_packet大
故障模擬:
從庫(kù)設(shè)置
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)
主庫(kù)操作:
mysql> update erp_mkpf set usnam='測(cè)試1864錯(cuò)誤';ERROR 1197 (HY000):Multi-statement transaction required more than 'max_binlog_cache_size' bytes ofstorage; increase this mysqld variable and try againmysql> 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='測(cè)試1864錯(cuò)誤';Query OK, 70466 rowsaffected (0.38 sec)Rows matched:70466 Changed: 70466 Warnings: 0mysql> commit;Query OK, 0 rowsaffected (0.08 sec)
從庫(kù)查看狀態(tài):
mysql> show slavestatus/GLast_SQL_Errno: 1864Last_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 主從錯(cuò)誤解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選