之前設置好正式環境中的 MySQL Master/Slave 後一直沒有什麼空調效一下,直到最近 DW 的同事回報說在Mirror的從庫資料更新緩慢,有時資料差到數小時或快一天, 研究了一下及加入了一些監控的設置,主要是環境後有發生當主庫大量異動時從庫來不及同步及寫入,一直以為是機器性能的問題,後來看了文件發現這個問題還不少人都有發生,這也是很常見的問題
看了一下在MySQL 5.7官方宣稱已解決或改善這個問題,因此來好好的研究及記錄一下 方便自已日後需要調整時參考.
主要參數如下:
slave_parallel_type 預設是 DATABASE 變更為 LOGICAL_CLOCK
slave_parallel_workers 預設是 0 變更為 8 (我是依 CPU個數x2 去設置)
slave_preserve_commit_order 預設是 OFF
log_slave_updates 預設是 ON 變更為 OFF
binlog_transaction_dependency_tracking 預設是 COMMIT_ORDER 變更為 WRITESET
transaction_write_set_extraction 預設是 OFF 變更為 XXHASH64
binlog_format 預設是 ROW
binlog_group_commit_sync_delay 預設是 0 變更為 3000
所以要先在 SLAVE 上將 slave stop掉.才能變更 slave_parallel_type
[Master]
> set global slave_parallel_type=LOGICAL_CLOCK;
> set global slave_parallel_workers=8;
> set global slave_preserve_commit_order=OFF;
> set global binlog_transaction_dependency_tracking=WRITESET;
> set global transaction_write_set_extraction=XXHASH64;
> set global binlog_format=ROW;
> set global binlog_group_commit_sync_delay=3000;
[Slave]
> slave stop;
> set global slave_parallel_type=LOGICAL_CLOCK;
> set global slave_parallel_workers=8;
> set global slave_preserve_commit_order=OFF;
> set global binlog_transaction_dependency_tracking=WRITESET;
> set global transaction_write_set_extraction=XXHASH64;
> set global binlog_format=ROW;
> set global binlog_group_commit_sync_delay=3000;
> slave start;
還有記得別忘了在 mysql.cnf 中一起將這些設定加上去,這樣應就可以了
我也順手設置了一下用 prometheus 去抓slave 和 master 的lagging second 這樣以後就不用登上去看差異時間了 XD
收工~
你必須 登入 才能發表評論。