mysql監控優化(二)主從復制
復制解決的基本問題是讓一臺服務器的數據和其他服務器保持同步。一臺主服務器的數據可以同步到多臺從服務器上。並且從服務器也可以被配置為另外一臺服務器的主庫。主庫和從庫之間可以有多種不同的組合方式。
MySQL支持兩種復制方案:基於語句的復制(statement-based replication)和基於行的復制(Row-based replication)。基於語句的復制在MySQL3.23就已經存在,它是使用較多的復制方式。基於行的復制是MySQL5.1引入的。這2種復制方式都是通過記錄主服務器的二進制日誌,並在從服務器進行重放(replay)完成復制。它們都是異步的。也就是說,從服務器上的數據並非都是最新的。
復制通常不會增加主庫的開銷,主要是啟用二進制日誌帶來的開銷,但出於備份戒及時從崩潰中恢復的目的,這些開銷是必要的。通過復制可以將讀操作指向從庫來獲得更好的讀擴展,但對於寫操作,並不適合通過復制來擴展。
1、mysql復制用途
- 分布數據
MySQL通常不會對帶寬造成很大的壓力。因此可以在不同的地理位置來分布數據,實現跨機房跨地域的數據分布。
- 負載均衡
通過MySQL復制可以將讀操作分布到多個服務器上,實現對讀密集型應用的優化。
- 備份
復制對備份很有幫助,但是從服務器並不是備份。
- 高可用性和故障轉移
復制可以避免在應用程序中出現MySQL失效。好癿故隓轉移能顯著的減少停機時間,甚至讓用戶無感知。
- 測試MySQL版本升級
一個常見的方法是先把從服務器升級到MySQL新版本,然後用它來測試查詢,確保無異常後再升級主服務器
2、案例:客戶投訴:修改了xx信息,提示修改成功。再查看還是舊數據。怎麽回事?
很有可能是數據庫主從延遲造成的
3、MySQL主從延時延時問題如何處理?
1.偶發性延時:控制寫入速度,削峰填谷。
2.頻發性延時:拆分數據庫實現多點寫入
3.最後一招:從庫磁盤硬件升級為ssd
4、 mysql主從復制的過程是怎樣的呢?如下圖所示
3個線程完成復制:
- 主庫1個線程負責記錄數據庫變更日誌
- 從庫1個線程負責拉取主庫的變更日誌
- 從庫1個線程負責執行主庫的變更日誌
- 實現了獲取事件和重放事件的解耦,允許異步進行。
- 復制的瓶頸:主庫並行(多線程)寫入和從庫串行(單線程)寫入,會造成主從延遲。
mysql監控優化(二)主從復制