你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
APPLIES TO: NoSQL
MongoDB
Gremlin
表
Azure Cosmos DB 的时间点还原功能可帮助你从容器内的意外更改中恢复,还原已删除的帐户、数据库或容器,或者还原到任何区域(其中已存在备份)。 通过连续备份模式,可还原到过去 30 天内的任何时间点。
本文介绍了如何确定还原时间并将实时的或已删除的 Azure Cosmos DB 帐户还原。 It shows how to restore the account using the Azure portal, PowerShell, CLI, or an Azure Resource Manager template.
Note
Restoring from satellite region is slower compared to restore in hub region for multi-region account to resolve local tentative writes as confirmed or take an action to roll them back.
使用 Azure 门户还原帐户
将实时帐户从意外修改中还原
可以使用 Azure 门户来还原整个实时帐户或该帐户下所选的数据库和容器。 还原数据需要完成以下步骤:
Sign in to the Azure portal.
导航到 Azure Cosmos DB 帐户并打开 “时间点还原 ”部分。
Note
只有在您拥有
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read
权限时,Azure 门户中的还原部分才会被填充。 若要了解有关如何设置此权限的详细信息,请参阅备份和还原权限一文。输入以下详细信息:
还原点 (UTC) – 在过去 30 天内的时间戳。 该帐户应在该时间戳时存在。 可以指定 UTC 格式的还原点。 如果你希望还原,可将该还原点设为与第二个还原点相接近。 Select the Click here link to get help on identifying the restore point.
Location – The destination region where the account is restored. 在给定时间戳此帐户应存在于该区域中(例如美国西部或美国东部)。 帐户只能还原到源帐户所在的区域。
Restore Resource – You can either choose Entire account or a selected database/container to restore. 数据库和容器应存在于规定时间戳下。 根据所选的还原点和位置,将填充恢复资源,以便用户可以选择需要还原的特定数据库或容器。
Resource group - Resource group under which the target account will be created and restored. 此资源组必须已存在。
还原目标帐户 – 目标帐户名称。 目标帐户名称需要遵循与创建新帐户时相同的准则。 此帐户由还原过程在源帐户所在的同一区域中创建。
After you select the above parameters, select the Submit button to kick off a restore. 还原费用是一次性的费用,具体取决于数据大小和所选区域中备份存储的费用。 To learn more, see the Pricing section.
在还原过程中删除源帐户可能会导致还原失败。
实时帐户的可还原时间戳
若要还原未删除的 Azure Cosmos DB 实时帐户,最佳做法是始终标识容器的最新可还原时间戳。 然后,可以使用此时间戳将帐户还原到最新版本。
使用事件源来标识还原时间
事件源提供了创建、替换、删除数据库和源帐户容器上的事件的完整保真列表。 The event feed provides a full fidelity list of create, replace, delete events on databases and containers of the source account.
例如,如果要在删除或更新某个容器之前还原到该点,请检查此事件源。 事件将按事件发生时的时间降序显示,最新事件显示在顶部。 用户可以浏览结果,并选择事件前后的时间以进一步缩小时间范围。
Note
事件源不显示对项资源的更改。 你可以随时手动指定过去 30 天内的任何时间戳(只要在那个时候账户已存在)进行还原。
还原已删除的帐户
可使用 Azure 门户在删除帐户的 30 天内完全还原该帐户。 完成以下步骤还原已删除的帐户:
Sign in to the Azure portal.
在全局搜索栏中搜索“Azure Cosmos DB”资源。 它列出了你所有的现有帐户。
Next select the Restore button. “还原”部分显示可在保留期内还原的已删除帐户的列表,该保留期距离删除时间为 30 天。
选择要还原的帐户。
Note
仅当您拥有
Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read
权限时,Azure 门户中的还原区域才会被填充。 若要了解有关如何设置此权限的详细信息,请参阅备份和还原权限一文。选择要还原的帐户,并输入以下详细信息还原已删除的帐户:
还原点 (UTC) – 在过去 30 天内的时间戳。 该时间戳下应已存在该账户。 指定 UTC 格式的还原点。 如果你希望还原,可将该还原点设为与第二个还原点相接近。
Location – The destination region where the account needs to be restored. 源帐户应存在于规定时间戳下以及此区域中。 例如,美国西部或美国东部。
Resource group - Resource group under which the target account will be created and restored. 此资源组必须已存在。
还原目标帐户 – 目标帐户名称需要遵循与创建新帐户时相同的准则。 此帐户由还原过程在源帐户所在的同一区域中创建。
跟踪还原操作的状态
After initiating a restore operation, select the Notification bell icon at top-right corner of portal. 它将提供一个显示正在还原的帐户状态的链接。 While restore is in progress, the status of the account will be Creating, after the restore operation completes, the account status will change to Online.
从还原的帐户获取还原详细信息
还原作完成后,可能需要知道从中还原的源帐户详细信息或还原时间。
使用以下步骤从 Azure 门户获取还原详细信息:
Sign in to the Azure portal and navigate to the restored account.
Navigate to the Export template pane. 它会打开与还原的帐户相对应的 JSON 模板。
使用 Azure PowerShell 还原帐户
在还原帐户之前,请安装最新版 Azure PowerShell 或高于 9.6.0 的版本。 接下来,请使用以下命令连接到 Azure 帐户并选择所需的订阅:
使用以下命令登录到 Azure:
Connect-AzAccount
使用以下命令选择特定订阅:
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
Example 1: Restoring the entire account:
Restore-AzCosmosDBAccount `
-TargetResourceGroupName "MyRG" `
-TargetDatabaseAccountName "Pitracct" `
-SourceDatabaseAccountName "source-sql" `
-RestoreTimestampInUtc "2021-01-05T22:06:00" `
-Location "West US" `
-PublicNetworkAccess Disabled
-DisableTtl $false
如果未设置PublicNetworkAccess
,则还原的帐户可从公共网络访问,请确保将Disabled
传递给PublicNetworkAccess
选项以禁用还原帐户的公共网络访问。 将 DisableTtl 设置为 $true 可确保在还原的帐户上禁用 TTL,如果之前已设置,则不提供参数会还原启用了 TTL 的帐户。
Note
若要在禁用公用网络访问的情况下进行还原,则所需的 Az.CosmosDB 最低稳定版本为 1.12.0。
Example 2: Restoring specific collections and databases. This example restores the collections MyCol1, MyCol2 from MyDB1 and the entire database MyDB2, which, includes all the containers under it.
$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 "West US"
Example 3: Restoring API for Gremlin Account. This example restores the graphs graph1, graph2 from MyDB1 and the entire database MyDB2, which, includes all the containers under it.
$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 "West US"
Example 4: Restoring API for Table Account. This example restores the tables table1, table1 from MyDB1
$tablesToRestore = New-AzCosmosDBTableToRestore -TableName "table1", "table2"
Restore-AzCosmosDBAccount `
-TargetResourceGroupName "MyRG" `
-TargetDatabaseAccountName "Pitracct" `
-SourceDatabaseAccountName "SourceTable" `
-RestoreTimestampInUtc "2022-04-06T22:06:00" `
-TablesToRestore $tablesToRestore `
-Location "West US"
使用 CLI 还原配置了托管标识的连续帐户
To restore Customer Managed Key (CMK) continuous account, please refer to the steps provided here
从还原的帐户获取还原详细信息
导入 Az.CosmosDB
模块版本 1.12.0 并运行以下命令,以获取还原详细信息。 restoreTimestamp 将位于 restoreParameters 对象下:
Get-AzCosmosDBAccount -ResourceGroupName MyResourceGroup -Name MyCosmosDBDatabaseAccount
枚举 NoSQL API 的可恢复资源
枚举命令可帮助您发现可在不同时间戳下进行还原的资源。 此外,它们还提供可还原帐户、数据库和容器资源上的关键事件的信息流。
列出可在当前订阅中还原的所有帐户
运行 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": "West US",
"name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"restorableLocations": [
{
"creationTime": "2020-08-08T01:04:52.945185+00:00",
"deletionTime": null,
"location": "West US",
"regionalDatabaseAccountInstanceId": "30701557-ecf8-43ce-8810-2c8be01dccf9"
},
{
"creationTime": "2020-08-08T01:15:43.507795+00:00",
"deletionTime": null,
"location": "East US",
"regionalDatabaseAccountInstanceId": "8283b088-b67d-4975-bfbe-0705e3e7a599"
}
],
"tags": null,
"type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts"
}
就像帐户的 CreationTime
或 DeletionTime
一样,区域也有一个 CreationTime
或 DeletionTime
。 通过这些时间,你可以选择正确的区域和要还原到该区域的有效时间范围。
列出实时数据库帐户中的 SQL 数据库的所有版本
通过列出数据库的所有版本,可在数据库存在的实际时间未知的情况下选择正确的数据库。
运行以下 PowerShell 命令以列出数据库的所有版本。 此命令仅适用于实时帐户。 DatabaseAccountInstanceId
和 Location
参数是从 name
cmdlet 的响应中的 location
和 Get-AzCosmosDBRestorableDatabaseAccount
属性获取的。 DatabaseAccountInstanceId
属性引用要还原的源数据库帐户的 instanceId
属性:
Get-AzCosmosdbSqlRestorableDatabase `
-Location "East US" `
-DatabaseAccountInstanceId <DatabaseAccountInstanceId>
列出实时数据库帐户中数据库的 SQL 容器的所有版本
使用以下命令以列出 SQL 容器的所有版本。 此命令仅适用于实时帐户。 DatabaseRId
参数是要还原的数据库的 ResourceId
。 它是在 ownerResourceid
cmdlet 的响应中找到的 Get-AzCosmosdbSqlRestorableDatabase
属性的值。 响应中还包括对此数据库内的所有容器执行的操作的列表。
Get-AzCosmosdbSqlRestorableContainer `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-DatabaseRId "AoQ13r==" `
-Location "West US"
查找可在任意给定时间戳还原的数据库或容器
使用以下命令以获取可在任意给定时间戳还原的数据库或容器的列表。 此命令仅适用于实时帐户。
Get-AzCosmosdbSqlRestorableResource `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-Location "West US" `
-RestoreLocation "East US" `
-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 "West US"
列出实时数据库帐户中数据库的 MongoDB 集合的所有版本
Get-AzCosmosdbMongoDBRestorableCollection `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-DatabaseRId "AoQ13r==" `
-Location "West US"
列出可在给定时间戳和区域还原的 MongoDB 数据库帐户的所有资源
Get-AzCosmosdbMongoDBRestorableResource `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-Location "West US" `
-RestoreLocation "West US" `
-RestoreTimestamp "2020-07-20T16:09:53+0000"
枚举 Gremlin API 的可恢复资源
枚举命令可帮助您发现可在不同时间戳下进行还原的资源。 此外,它们还提供可还原帐户、数据库和图资源上的密钥事件源。
列出实时数据库帐户中的 Gremlin 数据库的所有版本
通过列出数据库的所有版本,可在数据库存在的实际时间未知的情况下选择正确的数据库。
运行以下 PowerShell 命令以列出数据库的所有版本。 此命令仅适用于实时帐户。 DatabaseAccountInstanceId
和 Location
参数是从 name
cmdlet 的响应中的 location
和 Get-AzCosmosDBRestorableDatabaseAccount
属性获取的。 DatabaseAccountInstanceId
属性引用要还原的源数据库帐户的 instanceId
属性:
Get-AzCosmosdbGremlinRestorableDatabase `
-Location "East US" `
-DatabaseAccountInstanceId <DatabaseAccountInstanceId>
列出实时数据库帐户中数据库的 Gremlin 图的所有版本
使用以下命令列出 Gremlin 图形 API 的所有版本。 此命令仅适用于实时帐户。 DatabaseRId
参数是要还原的数据库的 ResourceId
。 它是在 ownerResourceid
cmdlet 的响应中找到的 Get-AzCosmosdbGremlinRestorableDatabase
属性的值。 响应中还包括对此数据库内的所有图执行的操作的列表。
Get-AzCosmosdbGremlinRestorableGraph `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-DatabaseRId "AoQ13r==" `
-Location "West US"
查找可在任意给定时间戳还原的数据库或图
使用以下命令以获取可在任意给定时间戳还原的数据库或图的列表。 此命令仅适用于实时帐户。
Get-AzCosmosdbGremlinRestorableResource `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-Location "West US" `
-RestoreLocation "East US" `
-RestoreTimestamp "2020-07-20T16:09:53+0000"
枚举 API for Table 的可还原资源
枚举命令可帮助您发现可在不同时间戳下进行还原的资源。 此外,它们还提供可还原帐户和表资源上的密钥事件源。
列出实时数据库帐户中数据库的表的所有版本
使用以下命令以列出表的所有版本。 此命令仅适用于实时帐户。
Get-AzCosmosdbTableRestorableTable `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-Location "West US"
查找可在任意给定时间戳还原的表
使用以下命令以获取可在任意给定时间戳还原的表的列表。 此命令仅适用于实时帐户。
Get-AzCosmosdbTableRestorableResource `
-DatabaseAccountInstanceId "d056a4f8-044a-436f-80c8-cd3edbc94c68" `
-Location "West US" `
-RestoreLocation "East US" `
-RestoreTimestamp "2020-07-20T16:09:53+0000"
使用 Azure CLI 还原帐户
还原帐户之前,请通过以下步骤安装 Azure CLI:
安装最新版本的 Azure CLI
- Install the latest version of Azure CLI or version higher than 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 "West US" \
--public-network-access Disabled \
--disable-ttl True
如果未设置 --public-network-access
,则可从公用网络访问还原的帐户。 请确保将 Disabled
传递到 --public-network-access
选项,以阻止对已还原帐户进行公用网络访问。 将 disable-ttl 设置为 $true 可确保在还原的帐户上禁用 TTL,如果之前设置了 TTL,则不提供此参数会在启用 TTL 的情况下还原帐户。
Note
若要在禁用公用网络访问的情况下进行还原,则 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 "West US" \
--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 "West US" \
--gremlin-databases-to-restore name=MyDB1 graphs=graph1 graph2 \
--gremlin-databases-to-restore name=MyDB2 graphs =graph3 graph4
通过从现有 API for Table 帐户中仅还原选定的表来创建新的 Azure Cosmos DB 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 "West US" \
--tables-to-restore table1 table2
从还原的帐户获取还原详细信息
运行以下命令以获取还原详细信息。 az cosmosdb show
命令输出显示 createMode
属性的值。 If the value is set to Restore, it indicates that the account was restored from another account. restoreParameters
属性还包含其他详细信息,例如源帐户 ID restoreSource
。 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": "West US",
"name": "abcd1234-d1c0-4645-a699-abcd1234",
"restorableLocations": [
{
"creationTime": "2021-01-08T23:34:11.095870+00:00",
"deletionTime": null,
"locationName": "West US",
"regionalDatabaseAccountInstanceId": "f02df26b-c0ec-4829-8bef-3482d36e6230"
}
],
"tags": null,
"type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts"
}
就像帐户的 CreationTime
或 DeletionTime
一样,区域也有一个 CreationTime
或 DeletionTime
。 通过这些时间,你可以选择正确的区域和要还原到该区域的有效时间范围。
列出实时数据库帐户中数据库的所有版本
通过列出数据库的所有版本,可在数据库存在的实际时间未知的情况下选择正确的数据库。
运行以下 Azure CLI 命令以列出数据库的所有版本。 此命令仅适用于实时帐户。 instance-id
和 location
参数是从 name
命令的响应中获取的 location
和 az cosmosdb restorable-database-account list
属性。 instanceId
属性也是要还原的源数据库帐户的属性:
az cosmosdb sql restorable-database list \
--instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
--location "West US"
此命令输出现在会显示创建和删除数据库的时间。
[
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.DocumentDB/locations/West US/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/West US/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
。 它是在 ownerResourceid
命令的响应中找到的 az cosmosdb sql restorable-database list
属性的值。
az cosmosdb sql restorable-container list \
--instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
--database-rid "OIQ1AA==" \
--location "West US"
此命令输出显示了在此数据库内所有容器上执行的操作列表。
[
{
"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 "West US" \
--restore-location "West US" \
--restore-timestamp "2021-01-10T01:00:00+0000"
[
{
"collectionNames": [
"procol1",
"procol2"
],
"databaseName": "db1"
},
{
"collectionNames": [
"procol3",
"spcol1"
],
"databaseName": "spdb1"
}
]
枚举 API for MongoDB 帐户的可还原资源
下述枚举命令可帮助你发现在特定时间戳时可用于还原的资源。 此外,它们还提供可还原帐户、数据库和容器资源上的关键事件的信息流。 这些命令仅适用于实时帐户。
列出实时数据库帐户中的 MongoDB 数据库的所有版本
az cosmosdb mongodb restorable-database list \
--instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
--location "West US"
列出实时数据库帐户中数据库的 MongoDB 集合的所有版本
az cosmosdb mongodb restorable-collection list \
--instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
--database-rid "AoQ13r==" \
--location "West US"
列出可在给定时间戳和区域还原的 MongoDB 数据库帐户的所有资源
az cosmosdb mongodb restorable-resource list \
--instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
--location "West US" \
--restore-location "West US" \
--restore-timestamp "2020-07-20T16:09:53+0000"
列出实时数据库帐户中数据库的所有版本
下述枚举命令可帮助你发现在特定时间戳时可用于还原的资源。 此外,它们还提供可还原帐户、数据库和图资源上的密钥事件源。 这些命令仅适用于实时帐户。
az cosmosdb gremlin restorable-database list \
--instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
--location "West US"
此命令输出现在会显示创建和删除数据库的时间。
[ {
"id": "/subscriptions/abcd1234-b6ac-4328-a753-abcd1234/providers/Microsoft.DocumentDB/locations/eastus2euap/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 "West US"
此命令输出显示了在此数据库内所有容器上执行的操作列表。
[ {
"id": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/eastus2euap/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 "West US" \
--restore-location "West US" \
--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 "West US"
[ {
"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 "West US" \
--restore-location "West US" \
--restore-timestamp "2020-07-20T16:09:53+0000"
下面是命令的结果。
{
"tableNames": [
"table1",
"table3",
"table2"
]
}
使用 Azure 资源管理器模板进行还原
还可以使用 Azure 资源管理器模板 (ARM) 还原帐户。 定义模板时,请包含以下参数:
使用 ARM 模板恢复 NoSQL 或 MongoDB 帐户的 API
- Set the
createMode
parameter to Restore. - 定义
restoreParameters
,请注意,restoreSource
值是提取自源账户的az cosmosdb restorable-database-account list
命令的输出。 帐户名称的 Instance ID 属性用于执行还原。 - Set the
restoreMode
parameter to PointInTime and configure therestoreTimestampInUtc
value.
使用以下 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": "West US",
"properties": {
"locations": [
{
"locationName": "West US"
}
],
"databaseAccountOfferType": "Standard",
"createMode": "Restore",
"restoreParameters": {
"restoreSource": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/West US/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": "West US",
"properties": {
"locations": [
{
"locationName": "West US"
}
],
"backupPolicy": {
"type": "Continuous"
},
"databaseAccountOfferType": "Standard",
"createMode": "Restore",
"restoreParameters": {
"restoreSource": "/subscriptions/dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.DocumentDB/locations/West US/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": "West US",
"properties": {
"locations": [
{
"locationName": "West US"
}
],
"backupPolicy": {
"type": "Continuous"
},
"databaseAccountOfferType": "Standard",
"createMode": "Restore",
"restoreParameters": {
"restoreSource": "/subscriptions/aaaa6a6a-bb7b-cc8c-dd9d-eeeeee0e0e0e/providers/Microsoft.DocumentDB/locations/West US/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>
Next steps
- Provision continuous backup using the Azure portal, PowerShell, CLI, or Azure Resource Manager.
- 如何将帐户从定期备份迁移到连续备份。
- 连续备份模式资源模型。
- Manage permissions required to restore data with continuous backup mode.