使用適用於 MongoDB 的 Azure Cosmos DB API 來設定全域散發的資料庫

適用於: MongoDB

在本文中,我們將示範如何使用 Azure 入口網站,利用適用於 MongoDB 的 Azure Cosmos DB API 來設定全域散發的資料庫並與之連線。

本文涵蓋下列工作:

使用 Azure 入口網站新增全域資料庫區域

全球所有 Azure 區域都有提供 Azure Cosmos DB。 選取資料庫帳戶的預設一致性層級之後,您可以關聯一或多個區域 (取決於您對於預設一致性層級和全球發佈需求的選擇)。

  1. Azure 入口網站的左列中,按一下 [Azure Cosmos DB]

  2. 在 [Azure Cosmos DB] 頁面中,選取要修改的資料庫帳戶。

  3. 在帳戶頁面中,從功能表中按一下 [全域複寫資料]

  4. 在 [全域複寫資料] 頁面中,按一下地圖中的區域以選取要新增或移除的區域,然後按一下 [儲存]。 新增區域需要費用,如需詳細資訊,請參閱價格頁面使用 Azure Cosmos DB 全球散發資料一文。

    Click the regions in the map to add or remove them

在您新增第二個區域後,就會在入口網站中的 [全域複寫資料] 頁面上啟用 [手動容錯移轉] 選項。 您可以使用此選項來測試容錯移轉程序,或變更主要寫入區域。 在您新增第三個區域後,將會在相同的頁面上啟用 [容錯移轉優先順序] 選項,讓您能夠變更讀取的容錯移轉順序。

選取全球資料庫區域

設定兩個或更多區域有兩個常見案例︰

  1. 為使用者提供低延遲的資料存取 (無論使用者位於世界何處)
  2. 新增區域性復原能力來提供商務持續性和災害復原 (BCDR)

若要為使用者提供低延遲,建議您在應用程式使用者所在位置的對應區域中部署應用程式和 Azure Cosmos DB。

對於 BCDR,建議根據 Azure 中的跨區域複寫:商務持續性和災害復原文章中所述的區域配對來新增區域。

驗證您的區域設定

使用 Azure Cosmos DB 的 API for MongoDB 檢查全域設定的最簡單方法,就是從 Mongo 殼層執行 isMaster() 命令。

從您的 Mongo 殼層︰

   db.isMaster()

範例結果︰

   {
      "_t": "IsMasterResponse",
      "ok": 1,
      "ismaster": true,
      "maxMessageSizeBytes": 4194304,
      "maxWriteBatchSize": 1000,
      "minWireVersion": 0,
      "maxWireVersion": 2,
      "tags": {
         "region": "South India"
      },
      "hosts": [
         "vishi-api-for-mongodb-southcentralus.documents.azure.com:10255",
         "vishi-api-for-mongodb-westeurope.documents.azure.com:10255",
         "vishi-api-for-mongodb-southindia.documents.azure.com:10255"
      ],
      "setName": "globaldb",
      "setVersion": 1,
      "primary": "vishi-api-for-mongodb-southindia.documents.azure.com:10255",
      "me": "vishi-api-for-mongodb-southindia.documents.azure.com:10255"
   }

連線到慣用的區域

適用於 MongoDB 的 Azure Cosmos DB API 可讓您針對全域散發的資料庫,指定集合的讀取喜好設定。 為了兼顧低延遲讀取和全球高可用性,建議將集合的讀取喜好設定設為 [最接近]。 [最接近] 讀取喜好設定會設定為從最近的區域讀取。

var collection = database.GetCollection<BsonDocument>(collectionName);
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.Nearest));

如果應用程式具有主要讀取/寫入區域和次要地區以因應災害復原 (DR) 情況,我們建議將集合的讀取喜好設定設為「慣用的主要區域」。 「慣用的主要區域」讀取喜好設定會設定當主要區域無法使用時,從次要地區讀取。

var collection = database.GetCollection<BsonDocument>(collectionName);
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.SecondaryPreferred));

最後,如果您想要手動指定讀取區域, 您可以在讀取喜好設定內設定區域標記。

var collection = database.GetCollection<BsonDocument>(collectionName);
var tag = new Tag("region", "Southeast Asia");
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.Secondary, new[] { new TagSet(new[] { tag }) }));

就這麼簡單,這樣便已完成本教學課程。 您可以透過閱讀 Azure Cosmos DB 中的一致性層級,來了解如何管理全域複寫帳戶的一致性。 如需有關 Azure Cosmos DB 中全域資料庫複寫運作方式的詳細資訊,請參閱使用 Azure Cosmos DB 來全域散發資料

下一步

在本教學課程中,您已完成下列操作:

  • 使用 Azure 入口網站來設定全域散發
  • 使用適用於 MongoDB 的 Azure Cosmos DB API 來設定全域散發

您現在可以繼續進行到下一個教學課程,以了解如何使用 Azure Cosmos DB 本機模擬器在本機進行開發。

正在嘗試為遷移至 Azure Cosmos DB 進行容量規劃嗎? 您可以使用現有資料庫叢集的相關資訊進行容量規劃。