RDS SQL Server支持高可用主備切換功能。當主實例發生故障或不可用時(例如操作系統錯誤、硬件故障等),系統會自動觸發主備切換,主實例和備實例將進行互換,切換后實例地址保持不變,應用程序會自動連接到新的主實例(原備實例),從而保障業務的連續性和高可用性。此外,您還可以手動切換主備實例,應對系統升級、維護或故障排查等情況。
前提條件
實例系列為高可用系列或集群系列。
集群系列實例只支持自動切換,不支持手動切換。集群系列實例未直接開放手動主備切換功能,如有需求,請聯系阿里云技術支持人員。
基礎系列實例、SQL Server只讀實例采用單節點架構,沒有備節點,因此不涉及主備實例的切換。
功能介紹
自動切換:實例默認開啟自動切換,當主實例出現故障無法訪問時,會自動切換到備實例。主備切換的觸發時機,請參見主備切換原因。
手動切換:即使自動切換是開啟狀態,您也可以手動進行主備切換。手動切換可用于容災演練或多可用區場景下的就近連接等需求。
主備實例的數據會實時同步,您只能訪問主實例,備實例僅作為備份形式存在,不提供業務訪問。
功能限制
Serverless實例不支持手動切換主備。系統會在Serverless實例出現故障無法訪問時,自動切換主備。
注意事項
SQL Server的主備同步機制可以保證用戶數據庫的全量同步,但不對ALTER LOGIN配置進行全量同步。當前僅支持對ALTER LOGIN中的SID、login_name以及password參數進行同步,其他參數取系統默認值。更多信息,請參見ALTER LOGIN (Transact-SQL)。
影響
主備實例切換過程中通常會出現不超過30秒的服務不可用,請確保您的應用程序具有自動重連機制。
如果您的應用程序使用的是較早版本的Druid組件進行數據庫連接管理,可能會遇到數據庫連接斷開后不會自動重連恢復的問題,建議您將Druid升級到1.1.16或之后版本,以避免此問題。
如果實例下掛載有只讀實例,那么主備實例切換后,只讀實例的數據會有幾分鐘的延遲,因為需要重建復制鏈路、同步增量數據等。
主備切換不會導致實例連接地址變更,但后臺對應的IP地址可能會變化。使用實例連接地址時,主備切換不會對您的應用正常運行造成影響。更多詳情,請參見如何查看或修改連接地址和端口。
當實例發生故障時,切換時間可能會延長。
影響
主備實例切換過程中通常會出現不超過30秒的服務不可用,請確保您的應用程序具有自動重連機制。
如果您的應用程序使用的是較早版本的Druid組件進行數據庫連接管理,可能會遇到數據庫連接斷開后不會自動重連恢復的問題,建議您將Druid升級到1.1.16或之后版本,以避免此問題。
如果實例下掛載有只讀實例,那么主備實例切換后,只讀實例的數據會有幾分鐘的延遲,因為需要重建復制鏈路、同步增量數據等。
主備切換不會導致實例連接地址變更,但后臺對應的IP地址可能會變化。使用實例連接地址時,主備切換不會對您的應用正常運行造成影響。
當實例發生故障時,切換時間可能會延長。
手動切換主備實例
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄中,選擇服務可用性。
在實例可用性區域,單擊主備庫切換。
選擇切換時間,然后單擊確定。
說明在主備實例切換期間,有很多操作無法執行,例如管理數據庫和賬號、切換網絡類型等,建議您選擇在設置時間內切換當前設置。
臨時關閉主備自動切換
使用場景
自動切換默認為開啟,主實例出現故障會自動切換到備實例,在遇到如下情形時您可以選擇臨時關閉主備自動切換:
大促活動等,不希望主備切換影響系統可用性。
重要應用系統升級等,不希望主備切換引入其他變數。
重大事件或者穩定保障期,不希望主備切換影響系統穩定性。
操作步驟
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄中,選擇服務可用性。
在實例可用性區域,單擊自動切換主備。
說明如果看不到自動切換主備按鈕,請再次確認本文的前提條件。
選擇臨時關閉,并設置臨時關閉截止時間,然后單擊確定。
說明到達臨時關閉截止時間后,實例恢復為自動進行主備切換。
默認為臨時關閉1天,最長可設置為7天后的23:59:59。
設置完畢后,您可以在服務可用性頁面查看臨時關閉主備自動切換的截止時間。
查看主備切換日志
僅SQL Server 2008 R2(本地SSD盤)實例支持查看主備切換日志。
訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。
在左側導航欄中,選擇服務可用性。
在主備切換日志區域,調整查詢時間范圍,查看主備切換日志。
常見問題
Q:主備切換后,是否需要手動切換回主實例?
A:不需要,主備實例的數據完全一致,主備切換后原備實例被選舉成為新的主實例,無需進行額外操作。
Q:主備切換后,超過十分鐘,實例狀態仍未恢復運行中,可能是什么原因?如何處理?
A:RDS在發生異常觸發高可用切換時,應用端長連接可能無法感知到連接狀態變化,如果沒有設置socket超時時間,應用程序會一直等待數據庫返回結果,通常會等到幾百秒后才會斷連,期間數據庫的部分連接無法正常工作,SQL會出現大量執行異常。為了避免無效連接,建議配置connectTimeout和socketTimeout,防止出現網絡錯誤時一直等待的情況,從而縮短故障時間。
超時配置值需要根據業務負載和使用方式進行評估,在線事務場景中建議connectTimeout配置為1~2秒,socketTimeout配置為60~90秒,此配置僅供參考。
相關API
API | 描述 |
切換RDS主備實例。 | |
開啟或關閉RDS實例主備自動切換。 | |
查看RDS實例主備自動切換設置。 |