还原使用连续备份模式的 Azure Cosmos DB 帐户

适用对象: NoSQL MongoDB Gremlin

Azure Cosmos DB 的时间点还原功能可帮助你从容器内的意外更改中恢复,还原已删除的帐户、数据库或容器,或者还原到任何区域(其中已存在备份)。 通过连续备份模式,可还原到过去 30 天内的任何时间点。

本文介绍了如何确定还原时间并将实时的或已删除的 Azure Cosmos DB 帐户还原。 它演示了如何使用 Azure 门户PowerShellCLIAzure 资源管理器模板来还原帐户。

使用 Azure 门户还原帐户

将实时帐户从意外修改中还原

可以使用 Azure 门户来还原整个实时帐户或该帐户下所选的数据库和容器。 还原数据需要完成以下步骤:

  1. 登录 Azure 门户

  2. 导航到 Azure Cosmos DB 帐户,打开“时间点还原”边栏选项卡。

    注意

    只有在你拥有 Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read 权限的情况下,才会填充 Azure 门户中的“还原”边栏选项卡。 若要了解有关如何设置此权限的详细信息,请参阅备份和还原权限一文。

  3. 填写以下详细信息以进行还原:

    • 还原点 (UTC) – 在过去 30 天内的时间戳。 该帐户应存在于该时间戳下。 可以指定 UTC 格式的还原点。 如果你希望还原,可将该还原点设为与第二个还原点相接近。 选择“单击此处”,获取有关标识还原点的帮助。

    • 位置 - 还原帐户的目标区域。 在给定时间戳此帐户应存在于该区域中(例如“中国北部”或“中国东部”)。 帐户只能还原到源帐户所在的区域。

    • 还原资源 – 可选择“整个帐户”,也可选择要还原的“所选数据库/容器”。 数据库和容器应存在于规定时间戳下。 根据所选的还原点和位置,将填充恢复资源,以便用户可以选择需要还原的特定数据库或容器。

    • 资源组 - 将在该资源组下创建并还原目标帐户。 此资源组必须已存在。

    • 还原目标帐户 – 目标帐户名称。 目标帐户名称需要遵循与创建新帐户时相同的准则。 此帐户将通过源帐户所在的同一区域中的还原过程来创建。

    使用 Azure 门户将实时帐户从意外修改中还原。

  4. 选择以上参数后,选择“提交”按钮,开始还原。 还原费用是一次性的费用,具体取决于数据大小和所选区域中备份存储的费用。 如要了解详细信息,请参阅定价部分。

在还原过程中删除源帐户可能会导致还原失败。

实时帐户的可还原时间戳

若要还原未删除的 Azure Cosmos DB 实时帐户,最佳做法是始终标识容器的最新可还原时间戳。 然后,可以使用此时间戳将帐户还原到最新版本。

使用事件源来标识还原时间

在 Azure 门户中填写还原点时间时,如果不知道如何确定还原点,请选择“单击此处”链接,转到“事件源”边栏选项卡。 事件源提供了创建、替换、删除数据库和源帐户容器上的事件的完整保真列表。

例如,如果要在删除或更新某个容器之前还原到该点,请检查此事件源。 事件将按事件发生时的时间降序显示,最新事件显示在顶部。 用户可以浏览结果,并选择事件前后的时间以进一步缩小时间范围。

使用事件源来标识还原时间。

注意

事件源不会显示对项资源所做的更改。 你可以随时手动指定过去 30 天内的任何时间戳(只要在该时间戳有账户存在)进行还原。

还原已删除的帐户

可使用 Azure 门户在删除帐户的 30 天内完全还原该帐户。 完成以下步骤还原已删除的帐户:

  1. 登录 Azure 门户

  2. 在全局搜索栏中搜索“Azure Cosmos DB”资源。 随后将列出所有现有帐户。

  3. 接下来,选择“还原”按钮。 “还原”边栏选项卡会显示可在保留期内还原的已删除帐户的列表,保留期为自删除时间起 30 天。

  4. 选择要还原的帐户。

    从 Azure 门户还原已删除的帐户。

    注意

    只有在你拥有 Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read 权限的情况下,才会填充 Azure 门户中的“还原”边栏选项卡。 若要了解有关如何设置此权限的详细信息,请参阅备份和还原权限一文。

  5. 选择要还原的帐户,并输入以下详细信息还原已删除的帐户:

    • 还原点 (UTC) – 在过去 30 天内的时间戳。 该时间戳下应已存在该账户。 指定 UTC 格式的还原点。 如果你希望还原,可将该还原点设为与第二个还原点相接近。

    • 位置 – 帐户需要还原到的目标区域。 源帐户应存在于规定时间戳下以及此区域中。 例如“中国北部”或“中国东部”。

    • 资源组 - 将在该资源组下创建并还原目标帐户。 此资源组必须已存在。

    • 还原目标帐户 - 目标帐户名称需要遵循与创建新帐户时相同的准则。 此帐户将通过源帐户所在的同一区域中的还原过程来创建。

跟踪还原操作的状态

启动还原操作后,选择门户右上角的“通知”钟形图标。 它将提供一个显示正在还原的帐户状态的链接。 在还原过程中,帐户状态将为“正在创建”,还原操作完成后,帐户状态将更改为“联机”。

当操作完成时,已还原帐户的状态从“正在创建”更改为“联机”。

从还原的帐户获取还原详细信息

还原操作完成后,你可能想要了解从其还原的源帐户的详细信息或还原时间。

使用以下步骤从 Azure 门户获取还原详细信息:

  1. 登录 Azure 门户,导航到还原的帐户。

  2. 导航到“导出模板”窗格。 它会打开与还原的帐户相对应的 JSON 模板。

使用 Azure PowerShell 还原帐户

在还原帐户之前,请安装最新版 Azure PowerShell 或高于 9.6.0 的版本。 接下来,请使用以下命令连接到 Azure 帐户并选择所需的订阅:

  1. 使用以下命令登录到 Azure:

    Connect-AzAccount -Environment AzureChinaCloud
    
  2. 使用以下命令选择特定订阅:

    Select-AzSubscription -Subscription <SubscriptionName>
    

为 API for NoSQL 帐户触发还原操作

以下 cmdlet 是通过使用目标帐户、源帐户、位置、资源组、PublicNetworkAccess、DisableTtl 和时间戳,使用还原命令触发还原操作的示例:


Restore-AzCosmosDBAccount `
  -TargetResourceGroupName "MyRG" `
  -TargetDatabaseAccountName "RestoredAccountName" `
  -SourceDatabaseAccountName "SourceDatabaseAccountName" `
  -RestoreTimestampInUtc "UTCTime" `
  -Location "AzureRegionName" ` 
  -PublicNetworkAccess Disabled `
  -DisableTtl $true

示例 1: 还原整个帐户:


Restore-AzCosmosDBAccount `
  -TargetResourceGroupName "MyRG" `
  -TargetDatabaseAccountName "Pitracct" `
  -SourceDatabaseAccountName "source-sql" `
  -RestoreTimestampInUtc "2021-01-05T22:06:00" `
  -Location "China North" `
  -PublicNetworkAccess Disabled
  -DisableTtl $false


如果未设置 PublicNetworkAccess,则可从公用网络访问还原的帐户,请确保将 Disabled 传递给 PublicNetworkAccess 选项,以禁用已还原帐户的公共网络访问。 将 DisableTtl 设置为 $true 可确保在还原的帐户上禁用 TTL,如果之前设置了 TTL,则不提供参数会在启用 TTL 的情况下还原帐户。

注意

若要在禁用公用网络访问的情况下进行还原,则所需的 Az.CosmosDB 最低稳定版本为 1.12.0。

示例 2: 还原特定集合和数据库。 此示例还原 MyDB1 中的集合 MyCol1、MyCol2,以及整个数据库 MyDB2(包含其中的所有容器)。

$datatabaseToRestore1 = New-AzCosmosDBDatabaseToRestore -DatabaseName "MyDB1" -CollectionName "MyCol1", "MyCol2"
$datatabaseToRestore2 = New-AzCosmosDBDatabaseToRestore -DatabaseName "MyDB2"

Restore-AzCosmosDBAccount `
  -TargetResourceGroupName "MyRG" `
  -TargetDatabaseAccountName "Pitracct" `
  -SourceDatabaseAccountName "SourceSql" `
  -RestoreTimestampInUtc "2021-01-05T22:06:00" `
  -DatabasesToRestore $datatabaseToRestore1, $datatabaseToRestore2 `
  -Location "China North"

示例 3:还原 API for Gremlin 帐户。 此示例还原 MyDB1 中的图 graph1、graph2,以及整个数据库 MyDB2(包含其中的所有容器)。

$datatabaseToRestore1 = New-AzCosmosDBGremlinDatabaseToRestore  -DatabaseName "MyDB1" -GraphName "graph1", "graph2"  
$datatabaseToRestore2 = New-AzCosmosDBGremlinDatabaseToRestore  -DatabaseName "MyDB2"

Restore-AzCosmosDBAccount `
  -TargetResourceGroupName "MyRG" `
  -TargetDatabaseAccountName "Pitracct" `
  -SourceDatabaseAccountName "SourceGremlin" `
  -RestoreTimestampInUtc "2022-04-05T22:06:00" `
  -DatabasesToRestore $datatabaseToRestore1, $datatabaseToRestore2 `
  -Location "China North"

示例 4:还原 API for Table 帐户。 此示例从 MyDB1 还原表 table1 和 table2

$tablesToRestore  = New-AzCosmosDBTableToRestore -TableName "table1", "table2"  

Restore-AzCosmosDBAccount `
  -TargetResourceGroupName "MyRG" `
  -TargetDatabaseAccountName "Pitracct" `
  -SourceDatabaseAccountName "SourceTable" `
  -RestoreTimestampInUtc "2022-04-06T22:06:00" `
  -TablesToRestore $tablesToRestore ` 
  -Location "China North"

使用 CLI 还原通过托管标识配置的连续帐户

若要还原客户管理的密钥 (CMK) 连续帐户,请参阅此处提供的步骤

从还原的帐户获取还原详细信息

导入 Az.CosmosDB 模块版本 1.12.0 并运行以下命令,以获取还原详细信息。 restoreTimestamp 将位于 restoreParameters 对象下:

Get-AzCosmosDBAccount -ResourceGroupName MyResourceGroup -Name MyCosmosDBDatabaseAccount 

枚举 API for NoSQL 的可还原资源

枚举 cmdlet 可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户、数据库和容器资源上的密钥事件源。

列出可在当前订阅中还原的所有帐户

运行 Get-AzCosmosDBRestorableDatabaseAccount PowerShell 命令以列出可在当前订阅中还原的所有帐户。

响应包括可还原的所有数据库帐户(实时帐户和已删除帐户)以及可从中还原的区域。

{
    "accountName": "SampleAccount",
    "apiType": "Sql",
    "creationTime": "2020-08-08T01:04:52.070190+00:00",
    "deletionTime": null,
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "identity": null,
    "location": "China North",
    "name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "restorableLocations": [
      {
        "creationTime": "2020-08-08T01:04:52.945185+00:00",
        "deletionTime": null,
        "location": "China North",
        "regionalDatabaseAccountInstanceId": "30701557-ecf8-43ce-8810-2c8be01dccf9"
      },
      {
        "creationTime": "2020-08-08T01:15:43.507795+00:00",
        "deletionTime": null,
        "location": "China East",
        "regionalDatabaseAccountInstanceId": "8283b088-b67d-4975-bfbe-0705e3e7a599"
      }
    ],
    "tags": null,
    "type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts"
  }

就像帐户的 CreationTimeDeletionTime 一样,区域也有一个 CreationTimeDeletionTime。 通过这些时间,你可以选择正确的区域和要还原到该区域的有效时间范围。

列出实时数据库帐户中的 SQL 数据库的所有版本

通过列出数据库的所有版本,可在数据库存在的实际时间未知的情况下选择正确的数据库。

运行以下 PowerShell 命令以列出数据库的所有版本。 此命令仅适用于实时帐户。 DatabaseAccountInstanceIdLocation 参数是从 Get-AzCosmosDBRestorableDatabaseAccount cmdlet 的响应中获取的 namelocation 属性。 DatabaseAccountInstanceId 属性引用要还原的源数据库帐户的 instanceId 属性:


Get-AzCosmosdbSqlRestorableDatabase `
  -Location "China East" `
  -DatabaseAccountInstanceId <DatabaseAccountInstanceId>

列出实时数据库帐户中数据库的 SQL 容器的所有版本

使用以下命令以列出 SQL 容器的所有版本。 此命令仅适用于实时帐户。 DatabaseRId 参数是要还原的数据库的 ResourceId。 它是在 Get-AzCosmosdbSqlRestorableDatabase cmdlet 的响应中找到的 ownerResourceid 属性的值。 响应中还包括对此数据库内的所有容器执行的操作的列表。


Get-AzCosmosdbSqlRestorableContainer `
  -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
  -DatabaseRId "AoQ13r==" `
  -Location "China North"

查找可在任意给定时间戳还原的数据库或容器

使用以下命令以获取可在任意给定时间戳还原的数据库或容器的列表。 此命令仅适用于实时帐户。


Get-AzCosmosdbSqlRestorableResource `
  -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
  -Location "China North" `
  -RestoreLocation "China East" `
  -RestoreTimestamp "2020-07-20T16:09:53+0000"

枚举 API for MongoDB 的可还原资源

下述枚举命令可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户、数据库和容器资源上的密钥事件源。 这些命令仅适用于实时帐户,与 API for NoSQL 命令类似,但命令名称中使用 MongoDB 而不是 sql

列出实时数据库帐户中的 MongoDB 数据库的所有版本


Get-AzCosmosdbMongoDBRestorableDatabase `
  -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
  -Location "China North"

列出实时数据库帐户中数据库的 MongoDB 集合的所有版本


Get-AzCosmosdbMongoDBRestorableCollection `
  -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
  -DatabaseRId "AoQ13r==" `
  -Location "China North"

列出可在给定时间戳和区域还原的 MongoDB 数据库帐户的所有资源


Get-AzCosmosdbMongoDBRestorableResource `
  -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
  -Location "China North" `
  -RestoreLocation "China North" `
  -RestoreTimestamp "2020-07-20T16:09:53+0000"

枚举 API for Gremlin 的可还原资源

枚举 cmdlet 可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户、数据库和图资源上的密钥事件源。

列出实时数据库帐户中的 Gremlin 数据库的所有版本

通过列出数据库的所有版本,可在数据库存在的实际时间未知的情况下选择正确的数据库。 运行以下 PowerShell 命令以列出数据库的所有版本。 此命令仅适用于实时帐户。 DatabaseAccountInstanceIdLocation 参数是从 Get-AzCosmosDBRestorableDatabaseAccount cmdlet 的响应中获取的 namelocation 属性。 DatabaseAccountInstanceId 属性引用要还原的源数据库帐户的 instanceId 属性:

Get-AzCosmosdbGremlinRestorableDatabase ` 
   -Location "China East" ` 
   -DatabaseAccountInstanceId <DatabaseAccountInstanceId> 

列出实时数据库帐户中数据库的 Gremlin 图的所有版本

使用以下命令以列出 API for Gremlin 图的所有版本。 此命令仅适用于实时帐户。 DatabaseRId 参数是要还原的数据库的 ResourceId。 它是在 Get-AzCosmosdbGremlinRestorableDatabase cmdlet 的响应中找到的 ownerResourceid 属性的值。 响应中还包括对此数据库内的所有图执行的操作的列表。

Get-AzCosmosdbGremlinRestorableGraph ` 
   -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" ` 
   -DatabaseRId "AoQ13r==" ` 
   -Location "China North" 

查找可在任意给定时间戳还原的数据库或图

使用以下命令以获取可在任意给定时间戳还原的数据库或图的列表。 此命令仅适用于实时帐户。

Get-AzCosmosdbGremlinRestorableResource ` 
   -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" ` 
   -Location "China North" ` 
   -RestoreLocation "China East" ` 
   -RestoreTimestamp "2020-07-20T16:09:53+0000" 

枚举 API for Table 的可还原资源

枚举 cmdlet 可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户和表资源上的密钥事件源。

列出实时数据库帐户中数据库的表的所有版本

使用以下命令以列出表的所有版本。 此命令仅适用于实时帐户。

Get-AzCosmosdbTableRestorableTable ` 
   -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68"   
   ` -Location "China North" 

查找可在任意给定时间戳还原的表

使用以下命令以获取可在任意给定时间戳还原的表的列表。 此命令仅适用于实时帐户。

Get-AzCosmosdbTableRestorableResource ` 
   -DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" ` 
   -Location "China North" ` 
   -RestoreLocation "China East" ` 
   -RestoreTimestamp "2020-07-20T16:09:53+0000" 

使用 Azure CLI 还原帐户

还原帐户之前,请通过以下步骤安装 Azure CLI:

  1. 安装最新版本的 Azure CLI

    • 安装最新版 Azure CLI 或高于 2.52.0 的版本。
    • 如果已经安装了 CLI,请运行 az upgrade 命令以更新到最新版本。 此命令仅适用于高于 2.52.0 的 CLI 版本。 如果有较早的版本,请使用上面的链接安装最新版本。
  2. 登录并选择你的订阅。

    • 使用 az login 命令登录到 Azure 帐户。
    • 使用 az account set -s <subscriptionguid> 命令选择所需订阅。

使用 Azure CLI 触发还原操作

触发还原的最简单方法是发出带有目标帐户或源帐户名称、位置、资源组名称、时间戳 (UTC) 以及数据库和容器名称(二者可选)的还原命令。 以下是触发还原操作的一些示例:

通过从现有帐户还原来创建新的 Azure Cosmos DB 帐户


az cosmosdb restore \
 --target-database-account-name <MyRestoredCosmosDBDatabaseAccount> \
 --account-name <MySourceAccount> \
 --restore-timestamp 2020-07-13T16:03:41+0000 \
 --resource-group <TargetResourceGroup> \
 --location "China North"
 --public-network-access Disabled \

如果未设置 --public-network-access,则可从公用网络访问还原的帐户。 请确保将 Disabled 传递到 --public-network-access 选项,以阻止对已还原帐户进行公用网络访问。

注意

若要在禁用公用网络访问的情况下进行还原,则 azure-cli 的最低稳定版本为 2.52.0。

通过从现有数据库帐户仅还原选定的数据库和容器来创建新的 Azure Cosmos DB 帐户


az cosmosdb restore \
 --resource-group MyResourceGroup \
 --target-database-account-name MyRestoredCosmosDBDatabaseAccount \
 --account-name MySourceAccount \
 --restore-timestamp 2020-07-13T16:03:41+0000 \
 --location "China North" \
 --databases-to-restore name=MyDB1 collections=Collection1 Collection2 \
 --databases-to-restore name=MyDB2 collections=Collection3 Collection4

通过以下方法创建一个新的 Azure Cosmos DB API for Gremlin 帐户:从现有的 API for Gremlin 帐户中仅还原选定的数据库和图


az cosmosdb restore \
 --resource-group MyResourceGroup \
 --target-database-account-name MyRestoredCosmosDBDatabaseAccount \
 --account-name MySourceAccount \
 --restore-timestamp 2022-04-13T16:03:41+0000 \
 --location "China North" \
 --gremlin-databases-to-restore name=MyDB1 graphs=graph1 graph2 \
 --gremlin-databases-to-restore name=MyDB2 graphs =graph3 graph4 

通过以下方法创建一个新的 Azure Cosmos DB API for Table 帐户:从现有的 API for Table 帐户中仅还原选定的数据库和图


az cosmosdb restore \
 --resource-group MyResourceGroup \
 --target-database-account-name MyRestoredCosmosDBDatabaseAccount \
 --account-name MySourceAccount \
 --restore-timestamp 2022-04-14T06:03:41+0000 \
 --location "China North" \
 --tables-to-restore table1 table2 

从还原的帐户获取还原详细信息

运行以下命令以获取还原详细信息。 az cosmosdb show 命令输出显示 createMode 属性的值。 如果该值设置为“Restore”,则表示该帐户已从另一个帐户还原。 restoreParameters 属性还包含其他详细信息,例如源帐户 ID restoreSourcerestoreSource 参数中的最后一个 GUID 是源帐户的 instanceId。 而且 restoreTimestamp 将在 restoreParameters 对象下面:

az cosmosdb show --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup

枚举 API for NoSQL 的可还原资源

下述枚举命令可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户、数据库和容器资源上的密钥事件源。

列出可在当前订阅中还原的所有帐户

运行以下 Azure CLI 命令可列出可在当前订阅中还原的所有帐户

az cosmosdb restorable-database-account list --account-name "Pitracct"

响应包括可还原的所有数据库帐户(实时帐户和已删除帐户)以及可从中还原的区域:

{
    "accountName": "Pitracct",
    "apiType": "Sql",
    "creationTime": "2021-01-08T23:34:11.095870+00:00",
    "deletionTime": null,
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/abcd1234-d1c0-4645-a699-abcd1234",
    "identity": null,
    "location": "China North",
    "name": "abcd1234-d1c0-4645-a699-abcd1234",
    "restorableLocations": [
      {
        "creationTime": "2021-01-08T23:34:11.095870+00:00",
        "deletionTime": null,
        "locationName": "China North",
        "regionalDatabaseAccountInstanceId": "f02df26b-c0ec-4829-8bef-3482d36e6230"
      }
    ],
    "tags": null,
    "type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts"
  }

就像帐户的 CreationTimeDeletionTime 一样,区域也有一个 CreationTimeDeletionTime。 通过这些时间,你可以选择正确的区域和要还原到该区域的有效时间范围。

列出实时数据库帐户中数据库的所有版本

通过列出数据库的所有版本,可在数据库存在的实际时间未知的情况下选择正确的数据库。

运行以下 Azure CLI 命令以列出数据库的所有版本。 此命令仅适用于实时帐户。 instance-idlocation 参数是从 az cosmosdb restorable-database-account list 命令的响应中获取的 namelocation 属性。 instanceId 属性也是要还原的源数据库帐户的属性:

az cosmosdb sql restorable-database list \
  --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
  --location "China North"

此命令输出现在会显示创建和删除数据库的时间。

[
  {
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/abcd1234-d1c0-4645-a699-abcd1234/restorableSqlDatabases/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
     "name": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
    "resource": {
      "database": {
        "id": "db1"
      },
      "eventTimestamp": "2021-01-08T23:27:25Z",
      "operationType": "Create",
      "ownerId": "db1",
      "ownerResourceId": "YuZAAA=="
    },
   
  },
  {
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/abcd1234-d1c0-4645-a699-abcd1234/restorableSqlDatabases/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
    "name": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
    "resource": {
      "database": {
        "id": "spdb1"
      },
      "eventTimestamp": "2021-01-08T23:25:25Z",
      "operationType": "Create",
      "ownerId": "spdb1",
      "ownerResourceId": "OIQ1AA=="
    },
 
  }
]

列出实时数据库帐户中数据库的 SQL 容器的所有版本

使用以下命令以列出 SQL 容器的所有版本。 此命令仅适用于实时帐户。 database-rid 参数是要还原的数据库的 ResourceId。 它是在 az cosmosdb sql restorable-database list 命令的响应中找到的 ownerResourceid 属性的值。

az cosmosdb sql restorable-container list \
    --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
    --database-rid "OIQ1AA==" \
    --location "China North"

此命令输出包括对此数据库内的所有容器执行的操作的列表:

[
  {
      "eventTimestamp": "2021-01-08T23:25:29Z",
      "operationType": "Replace",
      "ownerId": "procol3",
      "ownerResourceId": "OIQ1APZ7U18="
  },
  {
      "eventTimestamp": "2021-01-08T23:25:26Z",
      "operationType": "Create",
      "ownerId": "procol3",
      "ownerResourceId": "OIQ1APZ7U18="
  },
]

查找可在任意给定时间戳还原的数据库或容器

使用以下命令以获取可在任意给定时间戳还原的数据库或容器的列表。 此命令仅适用于实时帐户。


az cosmosdb sql restorable-resource list \
  --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
  --location "China North" \
  --restore-location "China North" \  
  --restore-timestamp "2021-01-10T01:00:00+0000"

[
  {
    "collectionNames": [
      "procol1",
      "procol2"
    ],
    "databaseName": "db1"
  },
  {
    "collectionNames": [
      "procol3",
       "spcol1"
    ],
    "databaseName": "spdb1"
  }
]

枚举 MongoDB API 帐户的可还原资源

下述枚举命令可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户、数据库和容器资源上的密钥事件源。 这些命令仅适用于实时帐户。

列出实时数据库帐户中的 MongoDB 数据库的所有版本

az cosmosdb mongodb restorable-database list \
    --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
    --location "China North"

列出实时数据库帐户中数据库的 MongoDB 集合的所有版本

az cosmosdb mongodb restorable-collection list \
    --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
    --database-rid "AoQ13r==" \
    --location "China North"

列出可在给定时间戳和区域还原的 MongoDB 数据库帐户的所有资源

az cosmosdb mongodb restorable-resource list \
    --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
    --location "China North" \
    --restore-location "China North" \
    --restore-timestamp "2020-07-20T16:09:53+0000"

列出实时数据库帐户中数据库的所有版本

下述枚举命令可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户、数据库和图资源上的密钥事件源。 这些命令仅适用于实时帐户。

az cosmosdb gremlin restorable-database list \ 
   --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \ 
   --location "China North"

此命令输出现在会显示创建和删除数据库的时间。

[ { 
    "id": "/subscriptions/abcd1234-b6ac-4328-a753-abcd1234/providers/Microsoft.DocumentDB/locations/chinaeast2euap/restorableDatabaseAccounts/abcd1234-4316-483b-8308-abcd1234/restorableGremlinDatabases/abcd1234-0e32-4036-ac9d-abcd1234", 
    "name": "abcd1234-0e32-4036-ac9d-abcd1234", 
    "resource": { 
      "eventTimestamp": "2022-02-09T17:10:18Z", 
      "operationType": "Create", 
      "ownerId": "db1", 
      "ownerResourceId": "1XUdAA==", 
      "rid": "ymn7kwAAAA==" 
    }, 
    "type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restorableGremlinDatabases" 
    
  } 
] 

列出实时数据库帐户中数据库的 Gremlin 图的所有版本

az cosmosdb gremlin restorable-graph list \ 
   --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \ 
   --database-rid "OIQ1AA==" \ 
   --location "China North" 

此命令输出包括对此数据库内的所有容器执行的操作的列表:

[ { 

    "id": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c/restorableGraphs/ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d", 
    "name": "ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d", 
    "resource": { 
      "eventTimestamp": "2022-02-09T17:10:31Z", 
      "operationType": "Create", 
      "ownerId": "graph1", 
      "ownerResourceId": "1XUdAPv9duQ=", 
      "rid": "IcWqcQAAAA==" 
    }, 
    "type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restorableGraphs" 
  } 
] 

查找可在任意给定时间戳还原的数据库或图

 
az cosmosdb gremlin restorable-resource list \ 
   --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \ 
   --location "China North" \ 
   --restore-location "China North" \ 
   --restore-timestamp "2021-01-10T01:00:00+0000" 

此命令输出显示可还原的图:

[
 { 
"databaseName": "db1", 
"graphNames": [ "graph1",   "graph3",   "graph2"  ] 
  } 
] 

枚举 API for Table 帐户的可还原资源

下述枚举命令可帮助你发现用于在各种时间戳上还原的资源。 此外,它们还提供可还原帐户和 API for Table 资源上的密钥事件源。 这些命令仅适用于实时帐户。

列出实时数据库帐户中表的所有版本

az cosmosdb table restorable-table list \ 
   --instance-id "abcd1234-d1c0-4645-a699-abcd1234"  
   --location "China North" 
[   { 

"id": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/WestUS/restorableDatabaseAccounts/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e/restorableTables/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", 
"name": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f", 
"resource": { 
  "eventTimestamp": "2022-02-09T17:09:54Z", 
  "operationType": "Create", 
  "ownerId": "table1", 
  "ownerResourceId": "tOdDAKYiBhQ=", 
  "rid": "9pvDGwAAAA==" 
  }, 
"type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restorableTables" 
   }, 

{"id": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/eastus2euap/restorableDatabaseAccounts/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e/restorableTables/cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", 
"name": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", 
"resource": { 
  "eventTimestamp": "2022-02-09T20:47:53Z", 
  "operationType": "Create", 
  "ownerId": "table3", 
  "ownerResourceId": "tOdDALBwexw=", 
  "rid": "01DtkgAAAA==" 
}, 
"type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restorableTables" 

  }, 
] 

列出可在给定时间戳和区域还原的 API for Table 帐户的所有资源

az cosmosdb table restorable-resource list \ 
   --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \ 
   --location "China North" \ 
   --restore-location "China North" \ 
   --restore-timestamp "2020-07-20T16:09:53+0000" 

下面是命令的结果。

{   
  "tableNames": [ 
"table1", 
"table3", 
"table2" 

  ] 
} 

使用 Azure 资源管理器模板进行还原

还可以使用 Azure 资源管理器模板 (ARM) 还原帐户。 定义模板时,请包含以下参数:

使用 ARM 模板还原 API for NoSQL 或 MongoDB 帐户

  1. createMode 参数设置为 Restore。
  2. 定义 restoreParameters,请注意,restoreSource 值是提取自源账户的 az cosmosdb restorable-database-account list 命令的输出。 帐户名称的 Instance ID 属性用于执行还原。
  3. restoreMode 参数设置为 PointInTime 并配置 restoreTimestampInUtc 值。

使用以下 ARM 模板还原 Azure Cosmos DB API for NoSQL 或 MongoDB 帐户。 接下来提供了其他 API 的示例。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "name": "vinhpitrarmrestore-kal3",
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2023-04-15",
      "location": "China North",
      "properties": {
        "locations": [
          {
            "locationName": "China North"
          }
        ],
        "databaseAccountOfferType": "Standard",
        "createMode": "Restore",
        "restoreParameters": {
            "restoreSource": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/eeee4efe-ff5f-aa6a-bb7b-cccccc8c8c8c",
            "restoreMode": "PointInTime",
            "restoreTimestampInUtc": "6/24/2020 4:01:48 AM",
            "restoreWithTtlDisabled": "true"
        }
      }
    }
  ]
}

使用 ARM 模板还原 API for Gremlin 帐户

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "name": "ademo-pitr1",
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2023-04-15",
      "location": "China North",
      "properties": {
        "locations": [
          {
            "locationName": "China North"
          }
        ],
        "backupPolicy": { 
          "type": "Continuous" 
        }, 
        "databaseAccountOfferType": "Standard",
        "createMode": "Restore",
        "restoreParameters": {
            "restoreSource": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d",
            "restoreMode": "PointInTime",
            "restoreTimestampInUtc": "2021-10-27T23:20:46Z",
            "gremlinDatabasesToRestore": [{ 
                "databaseName": "db1", 
                "graphNames": [ 
                    "graph1", "graph2" 
                ] 
            }]
        }
      }
    }
  ]
}

使用 ARM 模板还原 API for Table 帐户

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "name": "ademo-pitr1",
      "type": "Microsoft.DocumentDB/databaseAccounts",
      "apiVersion": "2023-04-15",
      "location": "China North",
      "properties": {
        "locations": [
          {
            "locationName": "China North"
          }
        ],
        "backupPolicy": { 
          "type": "Continuous" 
        }, 
        "databaseAccountOfferType": "Standard",
        "createMode": "Restore",
        "restoreParameters": {
            "restoreSource": "/subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e/providers/Microsoft.DocumentDB/locations/chinanorth/restorableDatabaseAccounts/4bcb9d82e-ec71-430b-b977-cd6641db85ad",
            "restoreMode": "PointInTime",
            "restoreTimestampInUtc": "2022-04-13T10:20:46Z",
             "tablesToRestore": [ 
                "table1", "table2" 
            ] 
        }
      }
    }
  ]
}

接下来,使用 Azure PowerShell 或 Azure CLI 部署模板。 下面的示例演示如何使用 Azure CLI 命令部署模板:

az deployment group create -g <ResourceGroup> --template-file <RestoreTemplateFilePath> 

后续步骤