二、MySQL主從復制的應用場景
MySQL主從復制有利於數據庫架構的健壯性、提升訪問速度和易於維護管理。
1、主從服務器互為備份
主從服務器架構的設置,可以大大的加強數據庫架構的健壯性。例如:當主服務器出現問題時,我們可以人工或自動切換到從服務器繼續提供服務。
這類似nfs存儲數據通過inotify+rsync同步到備份的nfs非常類似,只不過MySQL的同步方案,是其自帶的工具。
*異步可能不一致:
1)找一台從庫專門做備份,主出問題,備接管服務,把主的binlog拉過來補全數據
2)雙寫()
3)通過應用程序,寫一個一分鍾的短時日志,補全從庫
4)把異步同步換成實時同步(谷歌開發半同步插件:如果主成功,備也成功,才算成功,還有效率問題,設置等待時間)
非人為的硬件,服務故障,對人為的執行drop,delete無能為力。
2、主從服務器讀寫分離分擔網站壓力
主從服務器架構可通過程序(php,java)或代理軟件(mysql-proxy,amoeba)對用戶(客戶端)的請求實現讀寫分離,即通過在從服務器上僅僅處理用戶的select查詢請求,降低用戶查詢響應時間及讀寫同時在主服務器帶來的壓力,對於更新的數據(updata,insert,delete)仍然交給主服務器處理,確保主服務器和從服務器保持實時同步,如果網站是以非更新(以瀏覽器為主)為主的業務,如blog,www首頁展示等業務,查詢請求不較多,這是從服務器的讀寫分離負載均衡策略就很有效了,這就是傳說中的讀寫分離數據庫結構。
中大型公司:通過程序(php,java)
測試環境:代理軟件(mysql-proxy,amoeba)
門戶網站:分布式dbproxy(讀寫分離,hash負載均衡,健康檢查)
3、根據服務器拆分業務獨立並分擔壓力
可以把幾個不同的從服務器,根據公司的業務進行拆分。例如:有為外部用戶提供查詢服務的從服務器,有DBA用來備份的從服務器,還有提供公司內部人員為訪問的后台、腳本,日志分析及開發人員服務的從服務器。這樣的拆分除了減輕主服務器的壓力外。使得對外用戶瀏覽、對內處理公司內部用戶業務,及DBA備份業務互不影響。具體可以用下面的簡單架構來說明:

邏輯圖:

