多執行緒複制 (MTS) 環境下,從庫報錯 Last_SQL_Errno: 1864,訊息顯示事件大小超過 slave_pending_jobs_size_max 預設值 (16MB)。
Last_SQL_Error: Cannot schedule event Update_rows, relay-log name ./HE1-relay-bin.000005, position 494 to Worker thread because its size 8200 exceeds 1024 of slave_pending_jobs_size_max.
STOP SLAVE; SET GLOBAL slave_pending_jobs_size_max = 20000000; -- 20MB START SLAVE;
| 參數 | 預設值 | 建議調整 |
|---|---|---|
| slave_pending_jobs_size_max | 16777216 (16MB) | 佇列中待處理事件最大記憶體,視主庫大交易調整 |
| max_allowed_packet | 4MB/64MB | 必須大於 slave_pending_jobs_size_max |
| slave_parallel_workers | 0 (單執行緒) | >0 啟用 MTS,如 4, 8, 16 |
-- 從庫設定極小值觸發錯誤 SET GLOBAL slave_parallel_workers = 4; SET GLOBAL slave_pending_jobs_size_max = 1024; -- 1KB -- 主庫大交易 SET GLOBAL max_binlog_cache_size = 8388608000000; BEGIN; UPDATE erp_mkpf SET usnam='測試1864錯誤'; -- 7萬行 COMMIT; -- 從庫報錯 SHOW SLAVE STATUS\G -- Last_SQL_Errno: 1864 -- Last_SQL_Error: Cannot schedule event Update_rows ... size 8200 exceeds 1024
SHOW SLAVE STATUS 中 Slave_pending_jobs_size_max 相關指標slave_pending_jobs_size_max 設為 max_allowed_packet 的 2-4 倍slave_parallel_mode=optimistic 提升並行度