Mysql 同步故障處理
今天感謝張勇童鞋給我提供了一個主從同步故障處理的案例,在此share給大家。
MySQL slave同步報錯:
從字面意思看了一下是因爲slave_pending_jobs_size_max默認值爲16777216(16MB),但是slave接收到的slave_pending_jobs_size_max爲18483519;
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大