適用於 PostgreSQL 的 Azure 資料庫中的高可用性 – 超大規模 (Citus)

高可用性 (HA) 藉由維護伺服器群組中每個節點的待命複本來避免資料庫停機。 如果節點關閉,超大規模資料庫 (Citus) 將連入連線從失敗的節點切換到其待命。 容錯移轉會在幾分鐘內發生,而升級的節點一律會透過 PostgreSQL 同步串流複寫擁有全新的資料。

即使未啟用 HA,每個超大規模 (Citus) 節點都有自己的本地備援儲存體 (LRS) ,且Azure 儲存體服務維護三個同步複本。 如果發生單一複本失敗,則會由Azure 儲存體服務偵測到,而且會以透明方式重新建立。 如需 LRS 儲存體持久性,請參閱 此頁面上的計量。

啟用 HA時,超大規模 (Citus) 會針對伺服器群組中的每個主要節點執行一個待命節點。 主要和其待命使用同步 PostgreSQL 複寫。 如果主要節點失敗,此複寫可讓客戶有可預測的停機時間。 簡單地說,我們的服務會偵測主要節點上的失敗,並容錯移轉至沒有資料遺失的待命節點。

若要利用協調器節點上的 HA,資料庫應用程式必須偵測並重試中斷的連線和失敗的交易。 新升級的協調器可以使用相同的連接字串來存取。

高可用性狀態

復原可以分成三個階段:偵測、容錯移轉和完整復原。 超大規模 (Citus) 在每個節點上執行定期健康情況檢查,並在四次失敗檢查之後判斷節點已關閉。 超大規模 (Citus) 然後將待命升級至主要節點狀態, (容錯移轉) ,並布建新的待命狀態。 串流複寫會開始,讓新節點更新為最新狀態。 複寫所有資料之後,節點已達到完整復原。

超大規模 (Citus) 會在 Azure 入口網站 中伺服器群組的 [概觀] 頁面上顯示其容錯移轉進度狀態。

  • 狀況良好:已啟用 HA,且節點會完整複寫至其待命。
  • 進行中的容錯移轉:在主要節點上偵測到失敗,並起始容錯移轉至待命。 此狀態會在容錯移轉至待命節點完成之後轉換為 建立待 命節點,而待命會變成新的主要複本。
  • 建立待命:先前的待命已升階為主要,並為其建立新的待命。 當新的次要複本就緒時,此狀態將會轉換為 進行中的複寫
  • 進行中的複寫:布建新的待命節點,且正在進行資料同步處理。 一旦所有資料複寫到新的待命,主要和待命節點之間就會啟用同步複寫,而節點的狀態將會轉換回 狀況良好
  • :此節點上未啟用 HA。

下一步