高可用
當云數據庫Tair(兼容 Redis)監測到實例的主節點不可用時,會自動觸發主備切換,將備節點提升為主節點,保障實例的高可用性。若您收到短信、郵件、控制臺站內信等通知,告知您實例已完成主備切換,您可以參考本文了解主備切換的原因、影響和處理建議等。
為什么會觸發主備切換?
實例底層主機故障
阿里云檢測到實例底層主機發生故障,例如進程異常中斷、實例負載過高導致內存異常等無法正常使用時,系統會立即觸發主備切換,及時恢復實例,降低故障影響時長。
此類觸發方式會以短信或站內信、郵件等形式通知到您,通知示例如下:
【阿里云】尊敬的****:您的云數據庫Tair(兼容 Redis)實例:r-bp1zxszhcgatnx****(名稱:****)出現異常,高可用系統已經觸發切換,確保實例穩定運行。請檢查程序連接是否正常,建議設置自動重連機制以避免切換影響。
實例底層主機存在風險隱患
阿里云檢測到實例底層主機存在風險時,例如網絡抖動異常、磁盤異常等風險時,且此類風險可能會在未來影響實例的正常使用。系統會自動下發主動運維任務來處理此類風險項,并在可維護時間段觸發主備切換,替換掉存在風險的主機節點。
但緊急風險修復類事件通常會在第一時間修復并觸發主備切換,例如發現了Redis社區的嚴重Bug,實例會主動進行小版本升級。您可以在歷史事件中查詢到此類觸發方式的記錄,更多信息請參見查詢歷史事件。您也可以管理待處理的主備切換事件,更多信息請參見查看并管理計劃內事件。
是否會影響使用?
實例會自動完成完整的切換流程,在切換完成后,實例將正常運行。
但在切換過程中,會出現以下情況:
執行切換的數據節點將出現秒級的連接閃斷,可能還會出現30秒內的只讀狀態。
在實例處于切換中狀態時,將無法執行實例級別的操作(例如變更配置、遷移可用區等)。當實例完成主備切換后,實例狀態會顯示為運行中。
操作建議
請提前為您的應用設計重連機制和異常處理的能力,否則業務應用可能在實例切換階段產生間歇性的異常信息,例如:
READONLY You can't write against a read only instance
或DISABLE You can't write or read against a disable instance
。當實例觸發主備切換后,實例會自動完成完整的切換流程:將備節點提升為主節點,同時會創建新的備節點,進行主備節點數據同步。您無需進行任何操作。
說明雙可用區實例在主備切換后,主節點位于備可用區、備節點位于主可用區,此時可能產生實例與其他業務跨機房訪問的情況。如需解決該問題,您可以在控制臺服務可用性頁面手動切換可用區。
相關文檔
云數據庫Tair(兼容 Redis)也支持手動觸發主備切換,可用于容災演練或多可用區場景下的就近連接等需求,更多信息請參見手動執行主備切換。
常見問題
Q:實例故障觸發主備切換的原理是什么?
A:依賴高可用HA(High Availability)系統的探活機制實現故障檢測,具體如下:
主要事件
說明
健康檢測
HA系統會探測確認主備節點健康狀態。
主節點異常
發現主節點不可用,會將備節點提升為主節點,同時將虛擬IP地址VIP(Virtual IP Address)切換至備節點,但不會變更實例連接地址。
創建新的備節點并完成數據同步。
備節點異常
發現備節點不可用,HA系統將自動創建新的備節點并完成數據同步,保障主備雙副本架構的持續性。
說明由于主備節點間的同步數據是異步實現的,可能會丟失主節點最近寫入的部分數據。
Q:實例為讀寫分離版時,主備切換對只讀節點的使用有影響嗎?
A:在切換過程中,只讀節點的數據會臨時減少1個,在切換完成后恢復正常。
Q:實例為集群版時,切換某個數據分片中的主備節點對實例整體有什么影響?
A:不會影響整體實例,僅影響該數據分片。