在 Azure Cosmos DB 中修改定期备份间隔和保持期
适用对象: NoSQL MongoDB Cassandra Gremlin 表
Azure Cosmos DB 每 4 小时自动对数据库执行一次完整备份,而且在任何时候都只存储最新的 2 个备份。 此配置是默认选项,无需额外付费即可使用。 你可以在创建 Azure Cosmos DB 帐户期间或创建帐户之后更改默认备份时间间隔和保留期。 备份配置是在 Azure Cosmos DB 帐户级别设置的,需要在每个帐户上配置。 为帐户配置备份选项后,它将应用于该帐户中的所有容器。 可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 修改这些设置。
先决条件
准备工作
如果数据被意外删除或损坏,在你创建支持请求以还原数据之前,请确保将帐户的备份保留期延长到至少 7 天。最好在发生此事件的 8 小时内延长保留期。这样,Azure Cosmos DB 团队才有足够的时间来还原你的帐户。
修改现有帐户的备份选项
使用以下步骤更改现有 Azure Cosmos DB 帐户的默认备份选项。
登录 Azure 门户。
导航到你的 Azure Cosmos DB 帐户,打开“备份和还原”窗格。 根据需要更新备份间隔和备份保持期。
备份间隔 - 这是 Azure Cosmos DB 尝试对数据进行备份的间隔。 备份需要一定时间,在一些情况下,可能会因下游依赖项而失败。 Azure Cosmos DB 会尽力按配置的间隔进行备份,但它不能保证备份在该时间间隔内完成。 可以按小时或分钟配置此值。 备份间隔不能小于 1 小时且不能超过 24 小时。 更改此间隔后,新间隔将从进行上次备份时开始生效。
备份保持期 - 它表示保留每个备份的时间段。 可以按小时或天配置它。 最小保持期不能小于备份间隔的两倍(以小时为单位),并且不能超过 720 小时。
保留的数据副本 - 默认情况下,会免费提供数据的两个备份副本。 如果需要两个以上的副本,需支付额外费用。 请参阅 定价页 中的“已用存储”部分,从而了解额外副本的确切价格。
备份存储冗余 - 选择所需的存储冗余选项。 有关详细信息,请参阅 备份存储冗余。 默认情况下,如果要预配帐户的区域支持,则现有定期备份模式帐户具有异地冗余存储。 否则,帐户将回退到可用的最高冗余选项。 可以选择本地冗余等其他存储,从而确保备份不会复制到其他区域。 对现有帐户所做更改将仅应用于将来的备份。 更新现有帐户的备份存储冗余后,可能需要最多两次备份间隔才能使更改生效,且 你将无法立即还原旧备份。
使用 az cosmosdb update
命令更新现有帐户的定期备份选项。
az cosmosdb update \
--resource-group <resource-group-name> \
--name <account-name> \
--backup-interval 480 \
--backup-retention 24
使用 Update-AzCosmosDBAccount
cmdlet 更新现有帐户的定期备份选项。
$parameters = @{
ResourceGroupName = "<resource-group-name>"
Name = "<account-name>"
BackupIntervalInMinutes = 480
BackupRetentionIntervalInHours = 24
}
Update-AzCosmosDBAccount @parameters
使用以下 Azure 资源管理器 JSON 模板更新现有帐户的定期备份选项。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"newAccountName": {
"type": "string",
"defaultValue": "[format('nosql-{0}', toLower(uniqueString(resourceGroup().id)))]",
"metadata": {
"description": "Name of the existing Azure Cosmos DB account."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the Azure Cosmos DB account."
}
}
},
"resources": [
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"apiVersion": "2022-05-15",
"name": "[parameters('newAccountName')]",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"databaseAccountOfferType": "Standard",
"locations": [
{
"locationName": "[parameters('location')]"
}
],
"backupPolicy": {
"type": "Periodic",
"periodicModeProperties": {
"backupIntervalInMinutes": 480,
"backupRetentionIntervalInHours": 24,
"backupStorageRedundancy": "Local"
}
}
}
}
]
}
或者,可以使用同一模板的 Bicep 变体。
@description('Name of the existing Azure Cosmos DB account.')
param newAccountName string = 'nosql-${toLower(uniqueString(resourceGroup().id))}'
@description('Location for the Azure Cosmos DB account.')
param location string = resourceGroup().location
resource account 'Microsoft.DocumentDB/databaseAccounts@2022-05-15' = {
name: newAccountName
location: location
kind: 'GlobalDocumentDB'
properties: {
databaseAccountOfferType: 'Standard'
locations: [
{
locationName: location
}
]
backupPolicy:
type: 'Periodic'
periodicModeProperties:
backupIntervalInMinutes: 480,
backupRetentionIntervalInHours: 24,
backupStorageRedundancy: 'Local'
}
}
使用以下步骤更改新 Azure Cosmos DB 帐户的默认备份选项。
预配新帐户时,请在“备份策略”选项卡中选择“定期”备份策略。 通过定期策略可配置备份时间间隔、备份保留期和备份存储冗余。 例如,可选择“本地冗余备份存储”或“区域冗余备份存储”选项,以防止在区域外进行备份数据复制。
使用 az cosmosdb create
命令新建具有指定定期备份选项的帐户。
az cosmosdb create \
--resource-group <resource-group-name> \
--name <account-name> \
--locations regionName=<azure-region> \
--backup-interval 360 \
--backup-retention 12
使用 New-AzCosmosDBAccount
cmdlet 新建具有指定定期备份选项的帐户。
$parameters = @{
ResourceGroupName = "<resource-group-name>"
Name = "<account-name>"
Location = "<azure-region>"
BackupPolicyType = "Periodic"
BackupIntervalInMinutes = 360
BackupRetentionIntervalInHours = 12
}
New-AzCosmosDBAccount @parameters
使用以下 Azure 资源管理器 JSON 模板更新现有帐户的定期备份选项。
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"newAccountName": {
"type": "string",
"defaultValue": "[format('nosql-{0}', toLower(uniqueString(resourceGroup().id)))]",
"metadata": {
"description": "New Azure Cosmos DB account name. Max length is 44 characters."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the new Azure Cosmos DB account."
}
}
},
"resources": [
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"apiVersion": "2022-05-15",
"name": "[parameters('newAccountName')]",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"databaseAccountOfferType": "Standard",
"locations": [
{
"locationName": "[parameters('location')]"
}
],
"backupPolicy": {
"type": "Periodic",
"periodicModeProperties": {
"backupIntervalInMinutes": 360,
"backupRetentionIntervalInHours": 12,
"backupStorageRedundancy": "Zone"
}
}
}
}
]
}
或者,可以使用同一模板的 Bicep 变体。
@description('New Azure Cosmos DB account name. Max length is 44 characters.')
param newAccountName string = 'sql-${toLower(uniqueString(resourceGroup().id))}'
@description('Location for the new Azure Cosmos DB account.')
param location string = resourceGroup().location
resource account 'Microsoft.DocumentDB/databaseAccounts@2022-05-15' = {
name: newAccountName
location: location
kind: 'GlobalDocumentDB'
properties: {
databaseAccountOfferType: 'Standard'
locations: [
{
locationName: location
}
]
backupPolicy:
type: 'Periodic'
periodicModeProperties:
backupIntervalInMinutes: 360,
backupRetentionIntervalInHours: 12,
backupStorageRedundancy: 'Zone'
}
}
后续步骤