所謂的讀寫分離就是事先准備兩種類型的MySQL數據庫,一種做更新操作(master)、一種做查詢操作(slave)。當應用系統需要更新數據時調用master,查詢數據時調用slave。這樣做的好處就是將單一數據庫的業務處理分擔給多個數據庫,也可以理解為負載均衡,這樣就有一個問題,master的數據什麼時候通過哪種方式同步到slave中呢?這時候就用到了主從復制了,主從復制提供了多種方式將Master中的數據同步到Slave中,具體如何實踐請參考網絡上其他文章。
下邊通過一張圖來看下系統結構:
上邊說到了利用主從復制實現讀寫分離來提高系統的負載能力,其實還應該再加上一個Master來實現數據庫系統的高可用性,這樣就算是其中任何一個數據庫服務器宕機也不影響系統業務使用。
關於應用系統如何實現讀寫分離、高可用性請根據具體的項目情況,例如:在spring項目中配置多個數據源,使用aop切入點根據save*、update*、delete*等方法調用master數據源,根據find*、get*、query*來調用slave數據源。