Mysql
對 MySQL Replicant 上的 my.cnf 的建議
我有在主從配置中執行的複制環境。複製者很少進行所有的寫入和選擇——而且沒有一個需要高性能。
除了必須設置的複制選項本身之外,這裡的 db 管理員是否對配置 mysql 副本有任何建議,這將不同於同時執行選擇和寫入的主伺服器上的預設 my.cnf 值?
我可以提供我自己的 mysql-tuner 結果和 my.cnf 配置,但我想我希望對主要進行寫入的複制者的配置最佳實踐有一個更全面的概述。
對於這樣的奴隸沒有硬性規定。我們來看兩個場景
情景#1
有些標準化所有數據庫伺服器以具有相同的配置。這背後的基本原理是將奴隸提升為主人應該必須故障轉移到它。
情景#2
一個縮小的 Slave 用作數據備份。沒有從那個 Slave 讀取。
奴隸的比較
對於唯一的工作是備份和簡單數據冗餘的從站,使用較少的優化是可以的,但可能會產生溢價。為何如此 ?
如果您的 Master 具有高寫入量,這可能導致 MySQL 複製具有大量複製滯後(Seconds_Behind_Master > 0 並增加)。當 Master 有 20 個並行發生的 INSERT、UPDATE 和 DELETE 時,就會發生這種情況。這 20 條命令在 Master 的二進制日誌中序列化,並由 Slave 上的 SQL 執行緒串列處理。如果你將 Slave 上的硬體和 MySQL 配置設置縮減太多,那麼複製日誌可能會比前面提到的更新序列化更糟糕。
結論
Master 上的寫入量應該與 Slave 的縮減成反比:
Master 上的寫入量越大
- 從屬的縮小比例越小
- 複製滯後的容差越低(最好沒有)
Master 上的寫入量越低
- 從屬的規模縮小得越多
- 複製滯後的容忍度越高(預計不常見)
警告
在這種情況下,縮小意味著
需要更少的 RAM
減少對 CPU/核心的需求
較低的記憶體設置
更新 2015-02-02 12:53 EST
根據您對 writes 的評論中的問題,您可以在 Slave 上增加以下內容
- innodb_write_io_threads調整 CPU 的寫入
- innodb_log_buffer_size記憶體寫入