Last_SQL_Errno: 1864 Last_SQL_Error: Cannot schedule event Update_rows, relay-log ... position ... to Worker thread because its size 8200 exceeds 1024 of slave_pending_jobs_size_max.
從庫多線程複制(slave_parallel_workers > 0)時,佇列中待應用事件超過 slave_pending_jobs_size_max(預設 16MB)導致 SQL 線程停止。
STOP SLAVE; SET GLOBAL slave_pending_jobs_size_max = 20000000; -- 20MB,視業務調大 START SLAVE;
max_allowed_packet,否則主庫能寫入的事件從庫卻無法接收。SHOW SLAVE STATUS\G 中 Slave_pending_jobs_size_max 實際使用情況。-- 從庫設置極小閾值 SET GLOBAL slave_parallel_workers=4; SET GLOBAL slave_pending_jobs_size_max=1024; -- 主庫製造大事務 SET GLOBAL max_binlog_cache_size=8388608000000; BEGIN; UPDATE erp_mkpf SET usnam='測試1864錯誤'; -- 7 萬行 COMMIT; -- 觀察從庫報錯 1864,調大閾值後自動恢復
Last_SQL_Errno=1864 立即通知。slave_pending_jobs_size_max 納入 Puppet/Ansible 基線,建議 ≥ 64MB。slave_pending_jobs_size_max 自動擴容機制,減少人工干預。