在對資料庫有少量寫請求,但有大量讀請求的應用情境下,單個執行個體可能無法承受讀取壓力,甚至對業務產生影響。為了實現彈性擴充的讀取能力,並分擔資料庫壓力,RDS SQL Server支援通過建立一個或多個唯讀執行個體來實現讀寫分離,通過唯讀執行個體滿足大量的資料庫讀取需求,可以增加應用程式的輸送量。
簡介
RDS SQL Server基於源生AlwaysOn技術,通過物理複製方式複製主執行個體產生唯讀執行個體,實現資料的同步。唯讀執行個體的資料與主執行個體保持一致,並且主執行個體的資料更新會自動同步到所有隻讀執行個體。
您需要開通讀寫分離(唯讀地址),並在應用程式中配置主執行個體地址和唯讀地址,系統會將寫請求轉寄到主執行個體,將讀請求轉寄到唯讀地址,唯讀地址會根據權重將讀請求自動轉寄給備節點和所有配置的唯讀執行個體中。
RDS SQL Server和RDS MySQL的讀寫分離功能略有不同:
RDS SQL Server:需要在應用程式中分別配置主執行個體地址和唯讀地址,實現讀寫分離。
RDS MySQL:只需要在應用程式中配置一個讀寫分離地址,實現讀寫分離。
RDS SQL Server叢集系列執行個體支援備庫可讀功能。叢集系列的主執行個體建立完成後,備節點預設唯讀。更多詳情,請參見備庫可讀。
唯讀地址和內外網地址區別
開通唯讀地址後,您將獲得一個額外的唯讀地址,將其配置在應用程式中,當用戶端發出的讀請求到達唯讀地址時,請求會根據執行個體的權重自動分配給備節點和所有配置的唯讀執行個體進行處理。
如果應用程式中只配置了主執行個體的內網或外網地址,那麼請求只會被發送給主執行個體,而不會被分配給唯讀執行個體進行處理。
因此,為了實現讀寫分離,必須在應用程式中添加主執行個體地址和唯讀地址,並配置唯讀地址的權重。
讀寫分離優勢
統一隻讀地址,方便維護。
通過串連唯讀地址,即可方便地對唯讀執行個體進行讀操作,降低了維護成本。同時,應用程式無需進行任何修改,只需添加唯讀執行個體的個數,即可不斷擴充系統的處理能力。
高安全鏈路原生支援,提升效能。
如果您在雲上自行搭建代理層實現讀寫分離,在資料到達資料庫之前需要經歷多個組件的語句解析和轉寄,對響應延遲有較大的影響。而RDS內建於已有的高安全鏈路,沒有任何額外的組件來消耗時間,可以有效降低延遲並提升處理速度。
可自訂設權重,符合多情境使用。
您可以自訂設定唯讀執行個體的讀請求權重,以適應不同的情境需求。
執行個體健全狀態檢查,提升資料庫系統的可用性。
讀寫分離模組會自動對唯讀執行個體進行健全狀態檢查,當發現某個執行個體發生宕機或延遲超過閾值時,系統將不再向該執行個體分配讀請求,而是在剩餘的健康執行個體間進行分配,以此確保單個唯讀執行個體發生故障時,不會影響應用的正常訪問。當執行個體被修複後,RDS會自動將該執行個體納回請求分配體系內。
說明為避免單點故障,建議您為一個主執行個體建立至少兩個唯讀執行個體。
唯讀地址免費使用,降低資源及維護成本。
RDS使用者可以免費使用唯讀地址,無需支付額外費用。但唯讀執行個體需要隨用隨付。
注意事項
請參見建立SQL Server唯讀執行個體和開通讀寫分離(唯讀地址)文中的注意事項部分。
使用方法
開始建立唯讀執行個體,詳情請參見建立SQL Server唯讀執行個體。
開通讀寫分離串連,並配置唯讀地址的權重比,系統將根據已配置的權重比例處理讀請求,詳情請參見開通讀寫分離(唯讀地址)。