共用方式為

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

适用于: NoSQL MongoDB 小鬼 桌子

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

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

使用 Azure 门户还原帐户

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

可以使用 Azure 门户还原整个实时帐户或其中选定的数据库和容器。 使用以下步骤还原数据:

  1. 登录到 Azure 门户

  2. 导航到 Azure Cosmos DB 帐户并打开 “时间点还原 ”部分。

    注释

    仅当拥有权限时,才会填充 Azure 门户中的 Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read 还原部分。 若要详细了解如何设置此权限,请参阅 “备份和还原权限 ”一文。

  3. 输入以下详细信息:

    • 还原点 (UTC) - 过去 30 天内的时间戳。 该帐户应存在于该时间戳处。 可以使用 UTC 指定还原点。 如果要还原它,它可以与第二个接近。 选择 “单击此处” 链接以获取 有关标识还原点的帮助。

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

    • 还原资源 – 可以选择 “整个帐户 ”或 所选的数据库/容器 进行还原。 数据库和容器应存在于给定的时间戳处。 根据所选的还原点和位置,将填充还原资源,允许用户选择需要还原的特定数据库或容器。

    • 资源组 - 将在其中创建和还原目标帐户的资源组。 资源组必须已存在。

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

    从意外修改 Azure 门户还原实时帐户。

  4. 选择上述参数后,选择 “提交 ”按钮以启动还原。 还原成本是一次性费用,它基于数据大小和所选区域中备份存储的成本。 若要了解详细信息,请参阅 “定价 ”部分。

在还原正在进行时删除源帐户可能会导致还原失败。

实时帐户的可还原时间戳

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

使用事件源标识还原时间

在 Azure 门户中填写还原点时间时,如果需要有关标识还原点的帮助,请选择 “单击此处” 链接,转到事件源页。 事件源提供源帐户的数据库和容器上的创建、替换、删除事件的完整保真列表。

例如,如果要还原到删除或更新特定容器之前的点,请检查此事件源。 事件按时间顺序降序显示,这些事件在发生时的顺序,其中最近发生的事件位于顶部。 可以浏览结果并选择事件前后的时间以进一步缩小时间。

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

注释

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

还原已删除的帐户

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

  1. 登录到 Azure 门户

  2. 在全局搜索栏中搜索 Azure Cosmos DB 资源。 其中列出了所有现有帐户。

  3. 接下来,选择“ 还原 ”按钮。 “还原”部分显示可在保留期内还原的已删除帐户的列表,该保留期距离删除时间为 30 天。

  4. 选择要还原的帐户。

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

    注释

    仅当拥有权限时,才会填充 Azure 门户中的 Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read 还原部分。 若要详细了解如何设置此权限,请参阅 “备份和还原权限 ”一文。

  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>
    

为 NoSQL 帐户的 API 触发还原作

以下 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设置,则从公用网络访问还原的帐户,请确保传递到DisabledPublicNetworkAccess用于禁用已还原帐户的公共网络访问的选项。 将 DisableTtl 设置为$true可确保在还原的帐户上禁用 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: 还原 Gremlin 帐户的 API。 此示例从 MyDB1 还原 graph1graph2 和整个数据库 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。 此示例从 MyDB1 还原 table11

$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 

为 NoSQL 枚举 API 的可还原资源

枚举 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 命令列出数据库的所有版本。 此命令仅适用于实时帐户。 参数DatabaseAccountInstanceId是从 cmdlet 响应中的属性获取namelocationGet-AzCosmosDBRestorableDatabaseAccountLocationDatabaseAccountInstanceId 属性引用 instanceId 正在还原的源数据库帐户的属性:


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

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

使用以下命令列出 SQL 容器的所有版本。 此命令仅适用于实时帐户。 参数 DatabaseRIdResourceId 要还原的数据库。 它是在 cmdlet 响应Get-AzCosmosdbSqlRestorableDatabase中找到的属性的值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 中的可还原资源

下面介绍的枚举命令可帮助你发现可在各种时间戳中还原的资源。 此外,他们还在可还原的帐户、数据库和容器资源上提供关键事件的源。 这些命令仅适用于实时帐户,它们类似于用于 NoSQL 命令的 API,但在 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"

为 Gremlin 枚举 API 的可还原资源

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

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

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

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

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

使用以下命令列出 Gremlin 图形的所有 API 版本。 此命令仅适用于实时帐户。 参数 DatabaseRIdResourceId 要还原的数据库。 它是在 cmdlet 响应Get-AzCosmosdbGremlinRestorableDatabase中找到的属性的值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 枚举可还原的资源

枚举 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 \
 --disable-ttl True 

如果未 --public-network-access 设置,可从公用网络访问还原的帐户。 请确保传递给Disabled--public-network-access此选项以防止还原帐户的公共网络访问。 将 disable-ttl 设置为$true可确保在还原的帐户上禁用 TTL,如果未提供此参数,则会在之前设置 TTL 的情况下还原帐户。

注释

若要在禁用公用网络访问的情况下还原,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

通过仅从现有用于 Gremlin 帐户的 API 还原选定的数据库和图形,为 Gremlin 帐户创建新的 Azure Cosmos DB API


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 

通过仅从表帐户的现有 API 还原所选表,为表帐户创建新的 Azure Cosmos DB API


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 属性值。 如果该值设置为 “还原”,则表示该帐户已从另一个帐户还原。 该 restoreParameters 属性具有更多详细信息,例如 restoreSource,具有源帐户 ID。 参数中的 restoreSource 最后一个 GUID 是 instanceId 源帐户。 并且对象 restoreTimestamprestoreParameters 将有:

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

为 NoSQL 枚举 API 的可还原资源

下面介绍的枚举命令可帮助你发现可在各种时间戳中还原的资源。 此外,他们还在可还原的帐户、数据库和容器资源上提供关键事件的源。

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

运行以下 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 命令列出所有数据库版本。 此命令仅适用于实时帐户。 locationinstance-id命令响应az cosmosdb restorable-database-account list中的属性获取name参数和location参数。 该 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-ridResourceId 要还原的数据库。 它是在命令响应中找到的属性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 的可还原资源

下面介绍的枚举命令可帮助你发现可在各种时间戳中还原的资源。 此外,他们还为表资源的可还原帐户和 API 提供关键事件的源。 这些命令仅适用于实时帐户。

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

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 的所有资源

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 模板还原 NoSQL 或 MongoDB 帐户的 API

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

使用以下 ARM 模板还原用于 NoSQL 或 MongoDB 的 Azure Cosmos DB API 的帐户。 接下来提供了其他 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 模板还原 Gremlin 帐户的 API

{
  "$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

{
  "$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> 

后续步骤