Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
适用对象:
Mongodb
重要
你是否正在寻找一种数据库解决方案,以应对需要高扩展性、99.999% 可用性服务级别协议(SLA)、即时自动扩展和跨多个区域的自动故障转移的场景? 请考虑使用 Azure Cosmos DB for NoSQL。
本文介绍如何使用 Azure 门户设置多区域分布式数据库,并使用 Azure Cosmos DB 的用于 MongoDB 的 API 连接到该数据库。
本文涵盖以下任务:
- 使用 Azure 门户配置多区域分布
- 使用 Azure Cosmos DB 的用于 MongoDB 的 API 配置多区域分发
使用 Azure 门户添加多区域数据库区域
Azure Cosmos DB 面向中国的所有 Azure 区域提供。 为数据库帐户选择默认的一致性级别后,可以关联一个或多个区域(具体取决于所选的默认一致性级别和多区域分布需求)。
在 Azure 门户的左侧栏中,单击“Azure Cosmos DB”。
在“Azure Cosmos DB”页中,选择要修改的数据库帐户。
在“帐户”页上的菜单中单击“全局复制数据”。
在“全局复制数据”页中,通过单击地图中的区域选择要添加或删除的区域,并单击“保存”。 添加区域会产生费用,有关详细信息,请参阅定价页或使用 Azure Cosmos DB 多区域分布数据一文。
添加第二个区域后,门户中的“全局复制数据”页上会启用“手动故障转移”选项。 可以使用此选项测试故障转移过程或更改主写入区域。 添加第三个区域后,会在同一页上启用“故障转移优先级”选项,以便更改读取的故障转移顺序。
选择多区域数据库区域
配置两个或更多区域有两个常见方案:
- 向最终用户提供对数据的低延迟访问,而无论用户位于中国的何位置
- 添加区域冗余以实现业务连续性和灾难恢复 (BCDR)
若要向最终用户提供低延迟,建议在与应用程序用户所在位置对应的区域中同时部署应用程序和 Azure Cosmos DB。
为了实现 BCDR,建议根据Azure 中的跨区域复制:业务连续性和灾难恢复一文中描述的区域对来增加新的区域。
验证您的区域设置
使用 Azure Cosmos DB 的用于 MongoDB 的 API 检查多区域配置的一种简单方法是从 Mongo Shell 运行 isMaster() 命令。
在 Mongo Shell 中:
db.isMaster()
示例结果:
{
"_t": "IsMasterResponse",
"ok": 1,
"ismaster": true,
"maxMessageSizeBytes": 4194304,
"maxWriteBatchSize": 1000,
"minWireVersion": 0,
"maxWireVersion": 2,
"tags": {
"region": "China East2"
},
"hosts": [
"vishi-api-for-mongodb-chinaeast.documents.azure.cn:10255",
"vishi-api-for-mongodb-chinanorth.documents.azure.cn:10255",
"vishi-api-for-mongodb-chinaeast2.documents.azure.cn:10255"
],
"setName": "globaldb",
"setVersion": 1,
"primary": "vishi-api-for-mongodb-chinanorth2.documents.azure.cn:10255",
"me": "vishi-api-for-mongodb-chinanorth2.documents.azure.cn: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", "China North2");
collection = collection.WithReadPreference(new ReadPreference(ReadPreferenceMode.Secondary, new[] { new TagSet(new[] { tag }) }));
本教程到此结束。 阅读 Azure Cosmos DB 中的一致性级别,了解如何管理多区域复制帐户的一致性。 有关 Azure Cosmos DB 中多区域数据库复制的工作原理的详细信息,请参阅 使用 Azure Cosmos DB 以多区域方式分配数据。
后续步骤
在本教程中,已完成以下内容:
- 使用 Azure 门户配置多区域分布
- 使用 Azure Cosmos DB 的用于 MongoDB 的 API 配置多区域分发
现在可以继续学习下一个教程,了解如何使用 Azure Cosmos DB 本地模拟器在本地开发。
尝试为迁移到 Azure Cosmos DB 进行容量规划? 可以使用有关现有数据库群集的信息进行容量规划。
- 若只知道现有数据库群集中的 vCore 和服务器数量,请阅读使用 vCore 或 vCPU 估算请求单位
- 如果您知道当前数据库工作负荷的典型请求速率,请阅读有关使用 Azure Cosmos DB 容量规划工具来估计请求单位的文章