1.要解決的問題
在數據庫訪問頻率變高而導致數據庫服務器不堪重負時,通常會對服務器規格進行升級(也就是服務器的縱向擴展)。當縱向擴展很難時,你可以採用橫向擴張來水平分佈數據庫服務器;然而,這種方法一向非常困難。對數據庫服務器來說,一般讀數據的比例是多於寫數據的,所以總體來說應該主要提升系統的讀性能。
2.雲模式的說明
提升讀性能有很多種方法。你可以使用這種模式,通過將讀取任務分配給多個“讀複本”(即,用於讀取的副本)從而提升整體性能。讀副本遵循主服務器的記錄,反映數據本身。可以通過主要從副本讀取數據從而減少主服務器的負載。
3.實施
AWS關係型數據庫管理系統(RDSMS)服務,亞馬遜RDS服務,可以使只讀數據庫,也就是讀副本的創建變得十分簡單。創建只讀數據庫也可以由EC2實例來代替。
爲主數據庫創建只讀副本。RDS控制的數據庫可以使用讀複本功能創建只讀副本。
當應用讀取數據時,將讀副本設爲訪問地址。
雖然可以使用多個讀副本,但是必須在應用端中指定。這過程中,需要使用到如HAProxy或MySQL Proxy這樣的中間件。
4.配置
5.好處
如果數據庫的讀取負載很高,可以使用這種模式分散負載。
如果您想執行一個進程而又不增加主數據庫的負載,這種模式也很有效,比如說一個數據分析應用。
由於讀複製模式的目的不是爲了進行冗餘,所以如果你是想增加數據庫的持久性,則可以考慮採用數據庫複製模式,而不是讀副本。當然,也可以並行使用這兩種模式。
特別強調,讀複本是一種異步複製,所以要當心主服務器和讀副本之間會有輕微的延遲。
在RDS上禁用自動備份(即,設置“備份保留時間”爲0)將阻止讀副本從RDS上備份。