使用適用於 MongoDB 的 Azure Cosmos DB API 來設定全域散發的資料庫
適用於: MongoDB
在本文中,我們將示範如何使用 Azure 入口網站,利用適用於 MongoDB 的 Azure Cosmos DB API 來設定全域散發的資料庫並與之連線。
本文涵蓋下列工作:
- 使用 Azure 入口網站來設定全域散發
- 使用適用於 MongoDB 的 Azure Cosmos DB API 來設定全域散發
使用 Azure 入口網站新增全域資料庫區域
全球所有 Azure 區域都有提供 Azure Cosmos DB。 選取資料庫帳戶的預設一致性層級之後,您可以關聯一或多個區域 (取決於您對於預設一致性層級和全球發佈需求的選擇)。
在 Azure 入口網站的左列中,按一下 [Azure Cosmos DB]。
在 [Azure Cosmos DB] 頁面中,選取要修改的資料庫帳戶。
在帳戶頁面中,從功能表中按一下 [全域複寫資料]。
在 [全域複寫資料] 頁面中,按一下地圖中的區域以選取要新增或移除的區域,然後按一下 [儲存]。 新增區域需要費用,如需詳細資訊,請參閱價格頁面或使用 Azure Cosmos DB 全球散發資料一文。
在您新增第二個區域後,就會在入口網站中的 [全域複寫資料] 頁面上啟用 [手動容錯移轉] 選項。 您可以使用此選項來測試容錯移轉程序,或變更主要寫入區域。 在您新增第三個區域後,將會在相同的頁面上啟用 [容錯移轉優先順序] 選項,讓您能夠變更讀取的容錯移轉順序。
選取全球資料庫區域
設定兩個或更多區域有兩個常見案例︰
- 為使用者提供低延遲的資料存取 (無論使用者位於世界何處)
- 新增區域性復原能力來提供商務持續性和災害復原 (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 進行容量規劃嗎? 您可以使用現有資料庫叢集的相關資訊進行容量規劃。
- 如果您知道現有資料庫叢集中的虛擬核心和伺服器數目,請參閱使用虛擬核心或 vCPU 來估計要求單位
- 如果您知道目前資料庫工作負載的一般要求率,請參閱使用 Azure Cosmos DB 容量規劃工具來估計要求單位