适用对象:
              
               NoSQL
              
               MongoDB
              
               Cassandra
              
               Gremlin
              
               表
Azure Cosmos DB 每 4 小时自动对数据库执行一次完整备份,而且在任何时候都只存储最新的 2 个备份。 此配置是默认选项,无需额外付费即可使用。 你可以在创建 Azure Cosmos DB 帐户期间或创建帐户之后更改默认备份时间间隔和保留期。 备份配置是在 Azure Cosmos DB 帐户级别设置的,需要在每个帐户上配置。 为帐户配置备份选项后,它将应用于该帐户中的所有容器。 可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 修改这些设置。
先决条件
准备工作
如果意外删除或损坏了数据,在创建还原数据的支持请求之前,请确保将帐户的备份保留期延长到至少七天。最好在此事件的 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'
  }
}
 
后续步骤