適用於 MongoDB 的 Azure Cosmos DB 虛擬核心中的跨區域複寫
適用於: MongoDB 虛擬核心
本文說明 Azure Cosmos DB for MongoDB 虛擬核心的跨區域災害復原 (DR)。 其中也涵蓋讀取作業的延展性,讀取其他區域中叢集複本的功能。
跨區複寫功能可讓您將資料從一個叢集複寫至另一個 Azure 區域中的唯讀叢集。 複本使用非同步複寫技術進行更新。 您可以選擇另一個區域中的一個叢集複本,做為主要 Azure Cosmos DB for MongoDB 虛擬核心叢集。 在罕見的區域中斷案例中,您可以升級另一個區域中的叢集複本變成新的讀寫叢集,使 MongoDB 資料庫能夠持續作業。 升級另一個區域中的叢集複本變成新的主要叢集之後,應用程式可能會繼續使用相同的連接字串。
複本是全新的叢集,管理方式與一般叢集類似。 針對每個讀取複本,系統會針對在虛擬核心中所佈建的計算量,以及在儲存體中所佈建的容量 (以每月 GB 為單位) 向您收費。 複本叢集的計算和儲存體成本結構與建立所在 Azure 區域的一般叢集和價格相同。
使用叢集讀取複本進行災害復原
跨區域複寫是 Azure 商務持續性和災害復原 (BCDR) 策略中多個重要的要素之一。 跨區域複寫會以非同步方式複寫其他 Azure 區域內相同的應用程式和資料,以進行災害復原保護。 並非所有 Azure 服務都會自動複寫資料,或從失敗的區域自動回復,以跨複寫至另一個已啟用的區域。 Azure Cosmos DB for MongoDB 虛擬核心可讓您選擇在另一個區域中建立叢集複本,將寫入於主要叢集的資料自動複寫至該複本。 如果主要區域發生中斷,必須手動啟動回溯至叢集複本。
在 Azure Cosmos DB for MongoDB 虛擬核心叢集上啟用跨區域複寫後,會持續將每個分區複寫至另一個區域。 此複寫會在所選取區域中維持一份資料複本。 若主要區域發生罕見的中斷情況,這類複本已準備好做為災害復原計劃的一部分。 複寫不是同步進行。 主要叢集分區上的寫入作業不會等待複寫至對應複本的分區完成,才傳送確認成功寫入。 非同步複寫有助於避免提高主要叢集上寫入作業的延遲。
叢集復本上的連續寫入、讀取作業,以及 連接字串
適用於 MongoDB 的 Azure Cosmos DB 中的全域讀寫 連接字串 會一致地將寫入導向啟用作用中寫入的叢集。 起始復本叢集升級時,區域 B 中的複本叢集會切換為寫入模式,而區域 A 中的原始主要叢集會轉換為唯讀。 升級之前,全域讀寫 連接字串 以區域 A 中的主要叢集為目標,然後更新以指向區域 B,因為它承擔寫入責任。 對於使用全域讀寫 連接字串 的應用程式,寫入作業會在升級過程中順暢地繼續,維護不間斷的數據流。
複本叢集也可供讀取。 這有助於卸載來自主要叢集的密集讀取作業,或是對靠近複寫區域位置的用戶端降低讀取作業的延遲。 啟用跨區域複寫時,應用程式可以使用複本叢集自我 連接字串 來執行叢集復本的讀取。 主要叢集可用於使用自己的自我 連接字串 進行讀取和寫入作業。
當您透過啟用跨區域複寫來建立複本時,複本不會繼承網路設定,例如主要叢集的防火牆規則。 您必須針對複本單獨設定這些設定值。 複本會繼承主要叢集的管理員帳戶。 使用者帳戶必須在主要叢集上進行管理。 您可以使用相同的使用者帳戶連線至主要叢集及其複本叢集。
複本叢集的升級
如果區域發生中斷,您可以執行災害復原作業,升級其他區域中的叢集複本以變為可供寫入。 複本升級作業期間會發生這些步驟:
- 除了讀取之外,也會啟用區域 B 複本的寫入。 先前的複本變成新的讀寫叢集。
- 區域 B 中的升級複本叢集會使用其 連接字串 和全域讀寫 連接字串 來接受寫入。
- 區域 A 中的叢集設定為唯讀,並保留其 連接字串。
重要
由於複寫是非同步的,因此升級區域 B 的叢集複本之後,區域 A 中叢集的某些資料可能不會複寫至區域 B。 如果是這種情況,升級可能會導致這兩個叢集上出現未經複寫的資料。
相關內容
- 了解如何啟用跨區域複寫和升級複本叢集
- 請參閱跨區域複寫限制和限制
- 若要解決跨區域復寫的問題,請參閱 此疑難解答指南。
- 了解 Azure Cosmos DB for MongoDB 虛擬核心中的可靠性