云數據庫 Tair(兼容 Redis)作為高性能的Key-Value數據庫,在業務場景中往往承載著大量的重要數據,為保障數據安全性,云數據庫 Tair(兼容 Redis)提供了多種災備方案供您選擇。
容災架構演進
當實例因不可預料的原因(例如設備故障、機房斷電等)發生故障,容災機制可用于保障數據的一致性和業務可用性。
災備方案 | 災備級別 | 說明 |
★★★☆☆ | 主備節點部署在同一可用區中的不同機器上,當任一節點發生故障時,由高可用HA(High Availability)系統自動執行故障切換,避免單點故障引起的服務中斷。 | |
★★★★☆ | 主備節點分別部署在同一地域下兩個不同的可用區,當任一可用區因電力、網絡等不可抗因素失去通信時,高可用HA系統將執行故障切換,確保整個實例的持續可用。 | |
★★★★★ | 由多個子實例構成全球多活實例,所有子實例通過同步通道保持實時數據同步,由通道管理器負責子實例的健康狀態監測、主備切換等等異常事件的處理,適用于異地災備、異地多活、應用就近訪問、分攤負載等場景。 |
單可用區高可用方案
實例全架構(不含單副本版)均支持單機房高可用架構。由高可用HA(High Availability)系統監控主備節點的健康狀態并自動執行故障切換,避免單點故障引起的服務中斷。
部署架構 | 說明 |
標準架構(雙副本)實例采用雙機主從(Master-Replica)架構,高可用HA模塊偵測到主節點故障時,會自動進行主從切換,將Replica提升為Master,而原來的Master恢復連接后會成為新的Replica。 | |
集群架構(多副本)實例中的數據分片用于承載數據,每個數據分片均為多副本(分別部署在不同機器上)高可用架構,主節點發生故障后,系統會自動進行主備切換保證服務高可用。 | |
|
同城容災方案
云數據庫 Tair(兼容 Redis)提供跨雙機房的同城容災架構。如果業務為單一地域部署,且對容災要求較高,可在創建實例時,選擇支持同城容災的可用區(即多可用區)。操作方法,請參見創建實例。
完成創建后,備機房將創建與主機房相同規格的Replica實例,主備機房的實例數據通過專門的復制通道同步。
當主機房出現電力或網絡問題時,Replica實例將升級為Master實例,系統調用Config Server接口為Proxy更新路由信息。同時,云數據庫 Tair(兼容 Redis)優化了Redis的同步機制,在同步位點上借鑒MySQL的GTID,實現了全局Opid,查找Opid的操作通過后臺線程無鎖進行,發送AOF binlog是異步同步的過程(可限流),保障了Redis服務的性能。
跨地域容災方案
隨著業務的快速發展,在業務分布較廣時,如果還采用跨地域遠距離訪問的架構,將導致訪問的延遲大,影響用戶體驗。借助阿里云的Tair全球多活(分布式緩存)功能,可幫助您解決業務因跨地域訪問導致延遲大的問題,全球多活功能具有如下優勢:
可直接創建或指定需要同步的子實例,無需通過業務自身的冗余設計來實現,極大降低業務設計的復雜度,讓您專注于上層業務的開發。
可提供跨域復制(Geo-replication)能力,快速實現數據異地災備和多活。
該功能可應用于跨地域數據同步場景及多媒體、游戲、電商等行業的全球化業務部署等場景。更多介紹,請參見全球多活。
如何應對故障
故障(例如設備故障、機房斷電、自然災害等)通常可分為主節點故障或可用區級別故障,雖然發生概率較低,但故障可能會導致實例一段時間無法寫入、閃斷,甚至會造成實例停機或數據丟失(實例的可靠性還與架構息息相關,通常集群架構的可靠性更高)。為了盡可能地降低故障帶來的影響,多副本、多可用區實例會在故障時自動執行切換,這會最大限度地縮短停機時間。下文向您介紹不同災備方案的實例如何應對故障。
應對節點故障
當主節點發生故障時:
若實例為單可用區多副本節點(例如具備主、備節點):系統會在發生節點故障時自動執行故障切換,選取復制延遲最小的備節點成為新的主節點,并更新路由關系。
若實例為單可用區單副本節點:系統會在發生節點故障時創建一個全新的節點,原實例數據會丟失。
若實例為多可用區:系統會在發生節點故障時自動執行故障切換,選取另一可用區的備節點成為新的主節點,并更新路由關系。但此時可能產生實例與其他業務跨機房訪問的情況。
說明在多可用區集群架構中,當主、備可用區都存在備節點時,主備切換會優先選擇主可用區的備節點進行切換,避免業務跨可用區訪問。
應對可用區故障
當發生可用區故障(例如斷電、火災等,造成整個機房不可用)時:
若實例為單可用區部署:實例整體不可用,需要等待該可用區恢復,此時,您可以通過歷史的備份數據在其他可用區創建新實例。
若實例為多可用區部署:會觸發自動切換。
從安全性來說,選擇多可用區、并在每個可用區創建多個副本可以盡可能地減少停機時間,但您需要在發生故障的概率、業務數據的重要性、成本之間作出選擇。
全球多活的子實例也適用上述原則,但單個子實例故障時不會影響其他子實例的可用性。推薦全球多活的子實例為多可用區部署,避免因單個子實例故障而導致數據寫入失敗。