將適用於 NoSQL 的 Azure Cosmos DB 遷移至可用性區域支援
本指南說明如何將適用於 NoSQL 的 Azure Cosmos DB 從非可用性區域支援移轉至可用性支援。
在 Azure Cosmos DB 中使用可用性區域對效能或延遲沒有明顯的影響。 它不需要對選取的一致性模式進行任何調整,也不需要對應用程式程式代碼進行任何修改。
啟用可用性區域時,Azure Cosmos DB 會以智慧方式將數據的四個複本分散到所有可用區域。 這可確保在一個可用性區域中發生中斷時,帳戶仍可完全運作。 相反地,如果沒有可用性區域,所有複本都會位於單一可用性區域(我們不會公開哪一個),如果特定區域遇到問題,就會導致潛在的停機時間。
啟用可用性區域是增加 Cosmos DB 資料庫的復原能力的絕佳方式,而不需要引入額外的應用程式複雜度、影響效能,或甚至產生額外的成本,如果也使用自動調整。
必要條件
無伺服器帳戶可以使用可用性區域,但此選項只能在帳戶建立期間使用。 沒有可用性區域的現有帳戶無法轉換成可用性區域組態。 對於任務關鍵性工作負載,建議選擇布建的輸送量。
瞭解啟用可用性區域不是全帳戶的選擇。 單一 Cosmos DB 帳戶可以跨越任意數目的 Azure 區域,每個區域都可以獨立設定來利用可用性區域,而某些區域組可能沒有可用性區域支援。 這很重要,因為某些區域尚不支援可用性區域,但將它們新增至 Cosmos DB 帳戶並不會防止在該帳戶設定的其他區域中啟用可用性區域。 計費模型也會反映這種可能性。 如需 Cosmos DB SLA 的詳細資訊,請參閱 適用於 NoSQL 的 Cosmos DB 可靠性。 若要了解哪些區域支援可用性區域,請參閱具有可用性區域支援的 Azure 區域。
停機時間需求
當您移轉至可用性區域支援時,新增和移除次要區域時,會發生少量的寫入無法使用(幾秒鐘),因為系統會刻意停止寫入,以檢查區域之間的一致性。
遷移
由於您無法在已新增至帳戶的區域中啟用可用性區域,因此您必須移除該區域,並在啟用可用性區域后再次新增。 若要避免任何服務中斷,您將新增並故障轉移至暫存區域,直到可用性區域設定完成為止。
請遵循下列步驟,在選取區域中為您的帳戶啟用可用性區域。
依照將區域新增至資料庫帳戶中的 步驟,將暫存區域新增至資料庫帳戶。
如果您的 Azure Cosmos DB 帳戶已設定多重區域寫入,請跳至下一個步驟。 否則,請遵循在 Azure Cosmos DB 帳戶上執行手動故障轉移中的步驟,執行手動故障轉移至暫存區域。
依照將區域移除至資料庫帳戶中的步驟,移除您想要啟用可用性區域的區域。
將區域加回以可用性區域開啟的區域:
- 將區域新增至資料庫帳戶。
- 在 [寫入區域] 資料行中 尋找新新增的區域 ,並啟用 該區域的可用性區域 。
- 選取儲存。
遵循在 Azure Cosmos DB 帳戶上執行手動故障轉移中的步驟,以執行已啟用可用性區域的區域容錯回復。
依照將區域移除至資料庫帳戶中的步驟,移除暫存區域。
將暫存區域新增至資料庫帳戶。 下列範例示範如何將美國西部新增為僅以美國東部區域設定的帳戶作為次要區域。 您必須在命令中包含所有現有的區域和任何新的區域。
az cosmosdb update --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --locations regionName=eastus failoverPriority=0 isZoneRedundant=False --locations regionName=westus failoverPriority=1 isZoneRedundant=False
如果您的 Azure Cosmos DB 帳戶已設定多重區域寫入,請跳至下一個步驟。 否則,請執行手動故障轉移至新增的暫存區域。 下列範例示範如何執行從美國東部區域(目前寫入區域)到美國西部區域(目前只讀區域)的故障轉移。 您必須在 命令中包含這兩個區域。
az cosmosdb failover-priority-change --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --failover-policies westus=0 eastus=1
拿掉您想要啟用可用性區域的區域。 下列範例示範如何從以美國西部 (寫入區域) 和美國東部 (唯讀) 區域設定的帳戶中移除美國東部區域。 您必須在命令中包含不應移除的所有區域。
az cosmosdb update --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --locations regionName=westus failoverPriority=0 isZoneRedundant=False
將區域加回以可用性區域啟用的區域。 下列範例示範如何將美國東部新增為已啟用 AZ 的次要區域,新增至僅使用美國西部區域設定的帳戶。 您必須在命令中包含任何現有的區域和所有新的區域。
az cosmosdb update --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --locations regionName=westus failoverPriority=0 isZoneRedundant=False --locations regionName=eastus failoverPriority=1 isZoneRedundant=True
執行容錯回復至已啟用可用性區域的區域。 下列範例示範如何執行從美國西部區域(目前寫入區域)到美國東部區域(目前只讀區域)的故障轉移。 您必須在 命令中包含這兩個區域。
az cosmosdb failover-priority-change --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --failover-policies eastus=0 westus=1
拿掉暫存區域。 下列範例示範如何從以美國東部 (寫入區域) 和美國西部 (只讀) 區域設定的帳戶中移除美國西部區域。 您必須在命令中包含不應移除的所有帳戶。
az cosmosdb update --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup --locations regionName=eastus failoverPriority=0 isZoneRedundant=True
相關內容