适用于:
NoSQL
MongoDB
小鬼
桌子
Azure Cosmos DB 的时间点还原功能可帮助你从容器内的意外更改恢复、还原已删除的帐户、数据库或容器,或还原到任何区域(其中存在备份)。 连续备份模式允许还原到过去 30 天内的任何时间点。
本文介绍如何识别还原时间并还原实时或删除的 Azure Cosmos DB 帐户。 它演示如何使用 Azure 门户、 PowerShell、 CLI 或 Azure 资源管理器模板还原帐户。
使用 Azure 门户还原帐户
从意外修改中还原实时帐户
可以使用 Azure 门户还原整个实时帐户或其中选定的数据库和容器。 使用以下步骤还原数据:
登录到 Azure 门户。
导航到 Azure Cosmos DB 帐户并打开 “时间点还原 ”部分。
注释
仅当拥有权限时,才会填充 Azure 门户中的
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read
还原部分。 若要详细了解如何设置此权限,请参阅 “备份和还原权限 ”一文。输入以下详细信息:
还原点 (UTC) - 过去 30 天内的时间戳。 该帐户应存在于该时间戳处。 可以使用 UTC 指定还原点。 如果要还原它,它可以与第二个接近。 选择 “单击此处” 链接以获取 有关标识还原点的帮助。
位置 - 还原帐户的目标区域。 该帐户应位于该区域的给定时间戳(例如中国北部或中国东部)。 帐户只能还原到源帐户所在的区域。
还原资源 – 可以选择 “整个帐户 ”或 所选的数据库/容器 进行还原。 数据库和容器应存在于给定的时间戳处。 根据所选的还原点和位置,将填充还原资源,允许用户选择需要还原的特定数据库或容器。
资源组 - 将在其中创建和还原目标帐户的资源组。 资源组必须已存在。
还原目标帐户 - 目标帐户名称。 目标帐户名称需要遵循与创建新帐户时相同的准则。 此帐户由还原过程在源帐户所在的同一区域中创建。
选择上述参数后,选择 “提交 ”按钮以启动还原。 还原成本是一次性费用,它基于数据大小和所选区域中备份存储的成本。 若要了解详细信息,请参阅 “定价 ”部分。
在还原正在进行时删除源帐户可能会导致还原失败。
实时帐户的可还原时间戳
若要还原未删除的 Azure Cosmos DB 实时帐户,最佳做法是始终标识容器 的最新可还原时间戳 。 然后,可以使用此时间戳将帐户还原到其最新版本。
使用事件源标识还原时间
在 Azure 门户中填写还原点时间时,如果需要有关标识还原点的帮助,请选择 “单击此处” 链接,转到事件源页。 事件源提供源帐户的数据库和容器上的创建、替换、删除事件的完整保真列表。
例如,如果要还原到删除或更新特定容器之前的点,请检查此事件源。 事件按时间顺序降序显示,这些事件在发生时的顺序,其中最近发生的事件位于顶部。 可以浏览结果并选择事件前后的时间以进一步缩小时间。
注释
事件源不显示对项资源的更改。 始终可以手动指定过去 30 天内的任何时间戳(只要该时间存在帐户)进行还原。
还原已删除的帐户
可以使用 Azure 门户在其删除后的 30 天内完全还原已删除的帐户。 使用以下步骤还原已删除的帐户:
登录到 Azure 门户。
在全局搜索栏中搜索 Azure Cosmos DB 资源。 其中列出了所有现有帐户。
接下来,选择“ 还原 ”按钮。 “还原”部分显示可在保留期内还原的已删除帐户的列表,该保留期距离删除时间为 30 天。
选择要还原的帐户。
注释
仅当拥有权限时,才会填充 Azure 门户中的
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read
还原部分。 若要详细了解如何设置此权限,请参阅 “备份和还原权限 ”一文。选择要还原的帐户,并输入以下详细信息以还原已删除的帐户:
还原点 (UTC) - 过去 30 天内的时间戳。 该帐户应存在于该时间戳处。 以 UTC 格式指定还原点。 如果要还原它,它可以与第二个接近。
位置 - 需要还原帐户的目标区域。 源帐户应存在于此区域中的给定时间戳。 示例中国北部或中国东部。
资源组 - 将在其中创建和还原目标帐户的资源组。 资源组必须已存在。
还原目标帐户 – 目标帐户名称需要遵循与创建新帐户时相同的准则。 此帐户由还原过程在源帐户所在的同一区域中创建。
跟踪还原作的状态
启动还原作后,选择门户右上角的 “通知 铃”图标。 它提供一个链接,其中显示了正在还原的帐户的状态。 还原正在进行时,帐户的状态将为 “正在创建”,还原作完成后,帐户状态将更改为 “联机”。
从还原的帐户获取还原详细信息
还原作完成后,可能需要知道从中还原的源帐户详细信息或还原时间。
使用以下步骤从 Azure 门户获取还原详细信息:
登录到 Azure 门户 并导航到还原的帐户。
导航到 “导出模板 ”窗格。 此时会打开一个 JSON 模板,该模板对应于还原的帐户。
使用 Azure PowerShell 还原帐户
在还原帐户之前,请安装 最新版本的 Azure PowerShell 或高于 9.6.0 的版本。 接下来,使用以下命令连接到 Azure 帐户并选择所需的订阅:
使用以下命令登录到 Azure:
Connect-AzAccount -Environment AzureChinaCloud
使用以下命令选择特定订阅:
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
设置,则从公用网络访问还原的帐户,请确保传递到Disabled
PublicNetworkAccess
用于禁用已还原帐户的公共网络访问的选项。 将 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 还原 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。 此示例从 MyDB1 还原 table1 表 1
$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"
}
就像帐户 CreationTime
或 DeletionTime
帐户一样,也有区域 CreationTime
或 DeletionTime
区域。 这些时间允许你选择正确的区域和有效的时间范围以还原到该区域。
列出实时数据库帐户中 SQL 数据库的所有版本
列出所有版本的数据库后,可以在存在数据库的实际时间未知的情况下选择正确的数据库。
运行以下 PowerShell 命令列出数据库的所有版本。 此命令仅适用于实时帐户。 参数DatabaseAccountInstanceId
是从 cmdlet 响应中的属性获取name
location
的Get-AzCosmosDBRestorableDatabaseAccount
。Location
该 DatabaseAccountInstanceId
属性引用 instanceId
正在还原的源数据库帐户的属性:
Get-AzCosmosdbSqlRestorableDatabase `
-Location "China East" `
-DatabaseAccountInstanceId <DatabaseAccountInstanceId>
列出实时数据库帐户中数据库的所有 SQL 容器版本
使用以下命令列出 SQL 容器的所有版本。 此命令仅适用于实时帐户。 参数 DatabaseRId
是 ResourceId
要还原的数据库。 它是在 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 响应中的属性获取name
location
的Get-AzCosmosDBRestorableDatabaseAccount
。Location
该 DatabaseAccountInstanceId
属性引用 instanceId
正在还原的源数据库帐户的属性:
Get-AzCosmosdbGremlinRestorableDatabase `
-Location "China East" `
-DatabaseAccountInstanceId <DatabaseAccountInstanceId>
列出实时数据库帐户中数据库的所有 Gremlin 图形版本
使用以下命令列出 Gremlin 图形的所有 API 版本。 此命令仅适用于实时帐户。 参数 DatabaseRId
是 ResourceId
要还原的数据库。 它是在 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:
安装最新版本的 Azure CLI
- 安装最新版本的 Azure CLI 或高于 2.52.0 的版本。
- 如果已安装 CLI,请运行
az upgrade
命令以更新到最新版本。 此命令仅适用于高于 2.52.0 的 CLI 版本。 如果你有早期版本,请使用上述链接安装最新版本。
登录并选择订阅
- 使用
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
源帐户。 并且对象 restoreTimestamp
下 restoreParameters
将有:
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"
}
就像帐户 CreationTime
或 DeletionTime
帐户一样,也有区域 CreationTime
或 DeletionTime
区域。 这些时间允许你选择正确的区域和有效的时间范围以还原到该区域。
列出实时数据库帐户中的所有数据库版本
列出所有版本的数据库后,可以在存在数据库的实际时间未知的情况下选择正确的数据库。
运行以下 Azure CLI 命令列出所有数据库版本。 此命令仅适用于实时帐户。
location
从instance-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-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 的可还原资源
下面介绍的枚举命令可帮助你发现可在各种时间戳中还原的资源。 此外,他们还为表资源的可还原帐户和 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
- 将
createMode
参数设置为 Restore。 -
restoreParameters
定义 ,请注意,restoreSource
该值是从源帐户命令的az cosmosdb restorable-database-account list
输出中提取的。 帐户名称的实例 ID 属性用于执行还原。 - 将
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>
后续步骤
- 使用 Azure 门户、 PowerShell、 CLI 或 Azure 资源管理器预配连续备份。
- 如何将帐户从定期备份迁移到连续备份。
- 连续备份模式资源模型。
- 管理 使用连续备份模式还原数据所需的权限。