Mysql
啟用 log-slave-updates 時如何避免滯後?
掌握:
- 48GB 記憶體
- 16核
my.cnf
: https://clbin.com/hlkUo奴隸:
- 64GB 記憶體
- 24核
my.cnf
: https://clbin.com/viLm0兩者都在執行 5.5.28。
出於增量備份的目的,我需要啟用該
log-slave-updates
選項。但Seconds_Behind_Master
重啟 MySQL 後立即增加。一個簡單的語句get… 2分鐘在slave上更新。忙的時候,Slave好像趕不上Master,只好註釋掉,重啟MySQL。有什麼辦法可以改善這一點嗎?
由於您主要關心的是擁有增量備份解決方案,因此您可以更改以下變數:
變化:
innodb_max_dirty_pages_pct
- 將其設置為 75,然後 innoDB 將記憶體一些更改並立即將其刷新到磁碟。
innodb_doublewrite
- 禁用 innodb 雙重寫入
sync_binlog
- 禁用同步二進制日誌
long_query_time
- 增加長查詢時間或禁用它(此時您正在記錄每個查詢)為什麼奴隸延遲?
另一種想法是,它看起來是一個忙碌的主人,在主人上你可以同時處理 768 個連接,這意味著 768 執行緒可以向 MySQL 寫入數據,並且伺服器(如果沒有看起來問題)將執行所有這些查詢同時進行。在另一端(從站),您有一個複制執行緒來執行從主站接收到的所有查詢,如果在從站上執行查詢需要 10 秒,則唯一可用於從主站執行更改的執行緒將很忙,在這種情況下,預計會有一些延遲。在您的情況下,您還使用從屬伺服器作為主伺服器的只讀副本,然後複製執行緒可能還需要等待某些行上的其他執行緒釋放鎖定以應用更改。
您可以嘗試在您的從站上註釋掉這兩個變數以使用預設值 - 它們可能會導致高磁碟 I/O:
max_binlog_size sync_binlog