Mysql 同步故障處理 (參數 slave_pending_jobs_size_max)

Mysql 同步故障處理

今天感謝張勇童鞋給我提供了一個主從同步故障處理的案例,在此share給大家。

MySQL slave同步報錯:
Last_Error: Cannot schedule event Rows_query, relay-log name ./db-s18-relay-bin.000448, position 419156572 to Worker thread because its size 18483519 exceeds 16777216 of slave_pending_jobs_size_max.

從字面意思看了一下是因爲slave_pending_jobs_size_max默認值爲16777216(16MB),但是slave接收到的slave_pending_jobs_size_max爲18483519;

首先查一下slave_pending_jobs_size_max;

show global variables like '%slave_pending_jobs_size_max%';
+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| slave_pending_jobs_size_max | 16777216 |
+-----------------------------+----------+
1 row in set (0.00 sec)


果然是因爲slave_pending_jobs_size_max這個值爲16777216,
果斷

stop slave;
set global slave_pending_jobs_size_max=20000000;
start slave;
show global variables like '%slave_pending_jobs_size_max%';

+-----------------------------+----------+
| Variable_name               | Value    |
+-----------------------------+----------+
| slave_pending_jobs_size_max | 19999744 |
+-----------------------------+----------+
1 row in set (0.00 sec)

已經順利解決掉了

介紹一下slave_pending_jobs_size_max的用途:
#在多線程複製時,在隊列中Pending的事件所佔用的最大內存,默認爲16M,如果內存富餘,或者延遲較大時,可以適當調大;注意這個值要比主庫的max_allowed_packet大


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章