为 Azure Cosmos DB 帐户启用多主数据库

创建 Azure Cosmos DB 帐户时启用多主数据库支持。 可以使用 Azure 门户、PowerShell 或 Azure 资源管理器模板创建 Azure Cosmos DB 帐户。

Important

当前只能为新的 Azure Cosmos DB 帐户启用多主数据库支持。 现有 Azure Cosmos DB 帐户不能使用该功能。 我们正在致力于为现有帐户提供支持,可用时将宣布此支持。

创建具有多主数据库支持的 Azure Cosmos DB 帐户后,可以创建数据库和容器、上传文档,并分配冲突解决策略。 有关多主数据库和代码示例中的冲突解决信息,请参阅多主数据库代码示例一文。

使用 Azure 门户启用多主数据库

  1. 登录到 Azure 门户

  2. 单击并选择“创建资源”>“数据库”>“Azure Cosmos DB”。

  3. 在“新建帐户”窗格中,输入新 Azure Cosmos DB 帐户的以下设置:

    设置 建议的值 说明
    订阅 {你的订阅} 选择要用于此 Azure Cosmos DB 帐户的 Azure 订阅。
    资源组 {你的资源组名称} 选择现有资源组,或选择  新建 ,然后输入帐户的新资源组名称。
    帐户名 {你的帐户名} 输入标识此 Azure Cosmos DB 帐户的唯一名称。
    API 任意 选择 API 类型。
    位置 选择任何区域 选择要在其中托管 Azure Cosmos DB 帐户的地理位置。 此帐户将位于多个区域中,因此可以选择任何区域。
    启用异地冗余 启用 选择以启用下方所选的多主数据库。
    启用多主数据库 启用 选择以为此帐户启用多主数据库。

在 SDK 中使用多主数据库

使用启用了多主数据库的帐户,在应用程序中,可通过利用如下所示的 ConnectionPolicy 来使用多主数据库。

ConnectionPolicy policy = new ConnectionPolicy
{
   ConnectionMode = ConnectionMode.Direct,
   ConnectionProtocol = Protocol.Tcp,
   UseMultipleWriteLocations = true,
};
policy.PreferredLocations.Add(LocationNames.ChinaNorth2);
policy.PreferredLocations.Add(LocationNames.ChinaEast);
policy.PreferredLocations.Add(LocationNames.ChinaNorth);

使用 PowerShell 启用多主数据库

此外,通过将 enableMultipleWriteLocations 参数为“true”,还可创建启用了多主数据库的 Cosmos DB 帐户。 若要创建启用了多主数据库的 Cosmos DB 帐户,请打开 PowerShell 窗口,并运行以下脚本:

$locations = @(@{"locationName"="China East"; "failoverPriority"=0},
             @{"locationName"="China North"; "failoverPriority"=1})

$iprangefilter = "<ip-range-filter>"

$consistencyPolicy = @{"defaultConsistencyLevel"="Session";
                       "maxIntervalInSeconds"= "10";
                       "maxStalenessPrefix"="200"}

$CosmosDBProperties = @{"databaseAccountOfferType"="Standard";
                        "locations"=$locations;
                        "consistencyPolicy"=$consistencyPolicy;
                        "ipRangeFilter"=$iprangefilter;
                        "enableMultipleWriteLocations"="true"}

New-AzureRmResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
  -ApiVersion "2015-04-08" `
  -ResourceGroupName "myResourceGroup" `
  -Location "China East" `
  -Name "myCosmosDbAccount" `
  -Properties $CosmosDBProperties

使用资源管理器模板启用多主数据库

以下 JSON 代码是可用于部署 Azure Cosmos DB 帐户的示例资源管理器模板。 如需了解资源管理器模板的格式和语法,请参阅资源管理器文档。 此模板中需要注意的关键参数为 "enableMultipleWriteLocations": true。

{
    "$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "name": {
            "type": "String"
        },
        "location": {
            "type": "String"
        },
        "locationName": {
            "type": "String"
        },
        "defaultExperience": {
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.DocumentDb/databaseAccounts",
            "kind": "GlobalDocumentDB",
            "name": "[parameters('name')]",
            "apiVersion": "2015-04-08",
            "location": "[parameters('location')]",
            "tags": {
                "defaultExperience": "[parameters('defaultExperience')]"
            },
            "properties": {
                "databaseAccountOfferType": "Standard",
                "locations": [
                    {
                        "id": "[concat(parameters('name'), '-', parameters('location'))]",
                        "failoverPriority": 0,
                        "locationName": "[parameters('locationName')]"
                    }
                ],
                "isVirtualNetworkFilterEnabled": false,
                "enableMultipleWriteLocations": true,
                "virtualNetworkRules": [],
                "dependsOn": []
            }
        }
    ]
}

后续步骤

本文介绍了如何为 Azure Cosmos DB 帐户启用多主数据库支持。 接下来请浏览以下资源: