閱讀125 返回首頁    go 阿裏雲


高可用服務__係統架構_產品簡介_雲數據庫 RDS 版-阿裏雲

高可用服務由 Detection、Repair、Notice 等模塊組成,主要保障數據鏈路服務的可用性,除此之外還負責處理數據庫內部的異常。

另外,RDS 還通過遷移到支持多可用區的地域和采用適當的高可用策略,提升 RDS 的高可用服務。

Detection

Detection 模塊負責檢測 DB Engine 的主節點和備節點是否提供了正常的服務。通過間隔為 8~10 秒的心跳信息,HA 節點可以輕易獲得主節點的健康情況,結合備節點的健康情況和其他 HA 節點的心跳信息,Detection 模塊可以排除網絡抖動等異常引入的誤判風險,在 30 秒內完成異常切換操作。

Repair

Repair 模塊負責維護 DB Engine 的主節點和備節點之間的複製關係,還會修複主節點或者備節點在日常運行中出現的錯誤。

例如:

  • 主備複製異常斷開的自動修複
  • 主備節點表級別損壞的自動修複
  • 主備節點 Crash 的現場保存和自動修複

Notice

Notice 模塊負責將主備節點的狀態變動通知到 負載均衡 或者 Proxy,保證用戶訪問正確的節點。

例如:Detection 模塊發現主節點異常,並通知 Repair 模塊進行修複。Repair 模塊進行了嚐試後無法修複主節點,通知 Notice 進行流量切換。Notice 模塊將切換請求轉發至 負載均衡 或者Proxy,此時用戶流量全部指向備節點。與此同時,Repair 在別的物理服務器上重建了新的備節點,並將變動同步給 Detection 模塊。Detection 模塊開始重新檢測實例的健康狀態。

多可用區

多可用區是在單可用區的級別上,將同一地域的多個單可用區組合成的物理區域。相對於單可用區 RDS 實例,多可用區 RDS 實例可以承受更高級別的災難。

例如,單可用區 RDS 實例可以承受服務器和機架級別的故障,而多可用區 RDS 實例可以承受機房級別的故障。

目前多可用區 RDS 不額外收取任何費用,在已開通多可用區地域的用戶可以直接購買多可用區 RDS 實例,也可以通過跨可用區遷移將單可用區 RDS 實例轉化成多可用區 RDS 實例。

注意: 因為多可用區之間存在一定的網絡延遲,因此多可用區 RDS 實例在采用半同步數據複製方案的時候,對於單個更新的響應時間會比單可用區實例長。這種情況最好通過提高並發量的方式來實現整體吞吐量的提高。

高可用策略

高可用策略是根據用戶自身業務的特點,采用服務優先級和數據複製方式之間的不同組合,以組合出適合自身業務特點的高可用策略。

服務優先級有以下兩個級別:

  • RTO(Recovery Time Objective)優先:數據庫應該盡快恢複服務,即可用時間最長。對於數據庫在線時間要求比較高的用戶應該使用 RTO 優先策略。
  • RPO(Recovery Point Objective)優先:數據庫應該盡可能保障數據的可靠性,即數據丟失量最少。對於數據一致性要求比較高的用戶應該使用 RPO 優先策略。

數據複製方式有以下三種方式:

  • 異步複製(Async):應用發起更新(含增加、刪除、修改操作)請求,Master 完成相應操作後立即響應應用,Master 向 Slave 異步複製數據。因此異步複製方式下, Slave 不可用不影響主庫上的操作,而 Master 不可用有較小概率會引起數據不一致。
  • 強同步複製(Sync):應用發起更新(含增加、刪除、修改操作)請求,Master 完成操作後向 Slave 複製數據,Slave 接收到數據後向 Master 返回成功信息,Master 接到 Slave 的反饋後再響應應用。Master 向 Slave 複製數據是同步進行的,因此 Slave 不可用會影響 Master 上的操作,而 Master 不可用不會引起數據不一致。
  • 半同步複製(Semi-Sync):正常情況下數據複製方式采用強同步複製方式,當 Master 向 Slave 複製數據出現異常的時候(Slave 不可用或者雙節點間的網絡異常),Master 會暫停對應用的響應,直到複製方式超時退化成異步複製。如果允許應用在此時更新數據,則 Master 不可用會引起數據不一致。當雙節點間的數據複製恢複正常(Slave 恢複或者網絡恢複),異步複製會恢複成強同步複製。恢複成強同步複製的時間取決於半同步複製的實現方式,阿裏雲數據庫 MySQL5.5 版和 MySQL5.6 版有所不同。

用戶可以根據自身業務特點,選擇服務優先級和數據複製方式的不同組合方式,提高可用性。

雲數據引擎 服務優先級 數據複製方式 組合特點
MySQL 5.1 RPO Async 在 Master 發生故障的情況下,切換會發生在 Slave 應用完所有的 Relay Log 之後。
在 Slave 發生故障的情況下,應用操作 Master 不受影響。在 Slave 恢複之後再同步 Master 上麵的數據。
MySQL 5.5 RPO Async 在 Master 發生故障的情況下,切換會發生在 Slave 應用完所有的 Relay Log 之後。
在 Slave 發生故障的情況下,應用操作 Master 不受影響。在 Slave 恢複之後再同步 Master 上麵的數據。
MySQL 5.5 RTO Semi-Sync 在 Master 發生故障且數據複製未退化的情況下,因為數據一致性已經得到保障,RDS 將立即觸發切換操作把流量導向 Slave。
在 Slave 發生故障的情況下,應用操作 Master 將會出現超時,而後數據複製方式退化為異步複製方式;在 Slave 恢複並同步完 Master 上的數據之後,數據複製方式恢複為強同步。
在雙節點數據不一致且數據複製方式已經退化為異步複製方式的情況下,如果 Master 發生了故障,則切換會發生在 Slave 應用完所有的 Relay Log 之後。
MySQL 5.6 RPO ASync 在 Master 發生故障的情況下,切換會發生在 Slave 應用完所有的 Relay Log 之後。
在 Slave 發生故障的情況下,應用操作 Master 不受影響。在 Slave 恢複之後再同步 Master 上麵的數據。
MySQL 5.6 RTO Semi-Sync 在 Master 發生故障且數據複製未退化的情況下,因為數據一致性已經得到保障,RDS 將立即觸發切換操作把流量導向 Slave。
在 Slave 發生故障的情況下,應用操作 Master 將會出現超時,而後數據複製方式退化為異步複製方式;在 Slave 恢複並同步完 Master 上的數據之後,數據複製方式恢複為強同步。
在雙節點數據不一致且數據複製方式已經退化為異步複製方式的情況下,如果 Master 發生了故障,則切換會發生在 Slave 應用完所有的 Relay Log之後。
MySQL 5.6 RPO Semi-Sync 在 Master 發生故障且數據複製未退化的情況下,因為數據一致性已經得到保障,RDS 將立即觸發切換操作把流量導向 Slave。
在 Slave 發生故障的情況下,應用操作 Master 將會出現超時,而後數據複製方式退化為異步複製方式;在 Slave 重新獲取到 Master 信息時(Slave 恢複或者網絡故障恢複),數據複製方式恢複為強同步方式。
在雙節點數據不一致且 Slave 上的數據差異無法補全的情況下,如果 Master 發生了故障,則用戶可以通過 API 獲取 Slave 的時間點並決定何時切換以及補全數據的方法。
MySQL 5.7 X X 目前不支持調整
SQL Server 2008 R2 X X 目前不支持調整
SQL Server 2012 X X 目前不支持調整
PostgreSQL X X 目前不支持調整
PPAS X X 目前不支持調整

最後更新:2016-12-20 11:43:04

  上一篇:go 數據鏈路服務__係統架構_產品簡介_雲數據庫 RDS 版-阿裏雲
  下一篇:go 備份恢複服務__係統架構_產品簡介_雲數據庫 RDS 版-阿裏雲