共用方式為


將 Azure Cosmos DB 帳戶從定期遷移至連續備份模式

具有定期模式備份原則的 Azure Cosmos DB 帳戶可以使用 Azure 入口網站、Azure CLI、Azure PowerShell 或 Bicep 範本移轉至連續模式。 從週期性模式移轉至連續模式是單向的,且不可逆轉。 從定期模式移轉至連續模式之後,您可以獲得連續模式的好處。

移轉至連續模式的主要原因:

  • 使用 Azure 入口網站、CLI 或 PowerShell 自行還原資料。
  • 還原到過去 30 天或 7 天期間內的特定秒。
  • 請確定備份在碎片或分割區索引鍵範圍之間保持一致。
  • 刪除或變更後,還原容器、資料庫或完整帳戶。
  • 選取容器、資料庫或帳戶上的事件,然後選擇何時開始還原。

注意

移轉是單向的,無法逆轉。 從定期模式移轉至連續模式後,就無法切換回來。

只有在這些條件成立時,您才能將帳戶移轉至連續備份模式。 此外,請在移轉之前檢查 時間點還原限制

  • 該帳戶是 NoSQL、Table、Gremlin 或 MongoDB 的 API。
  • 帳戶從未針對容器停用 Azure Synapse Link。

如果帳戶使用 客戶自控金鑰,請在 Key Vault 存取原則中宣告受控識別 (系統指派或使用者指派),並將它設定為帳戶上的預設身分識別。

這很重要

將帳戶移轉至連續備份模式後,與定期備份模式相比,成本可能會變更。 30 天和 7 天之間的選擇也會影響備份成本。 如需詳細資訊,請參閱 連續備份模式定價

先決條件

  • Azure Cosmos DB 帳戶
  • Microsoft.DocumentDB/databaseAccounts/write正在移轉之帳戶的角色型存取控制權限
  • 最新版本的 Azure CLI 或 Azure PowerShell

使用入口網站移轉

請使用下列步驟將您的帳戶從定期備份移轉至連續備份模式:

  1. 登入 Azure CLI。

    az login
    
  2. 將帳戶移轉至 continuous30dayscontinuous7days 層級。

    az cosmosdb update \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --backup-policy-type "Continuous"
    
    az cosmosdb update \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
        --backup-policy-type "Continuous" \
        --continuous-tier "Continuous7Days"
    

    注意

    如果您未提供層級值,則預設值為 continuous30days

  3. 順利完成移轉之後,輸出會顯示 backupPolicy 物件,其中包含值為 typeContinuous 屬性。

    {
      ...
      "backupPolicy": {
        "continuousModeProperties": {
          "tier": "Continuous7Days"
        },
        "migrationState": null,
        "type": "Continuous"
      },
      ...
    }
    

檢查移轉狀態

使用 Azure CLI 來檢查現有移轉的狀態。

  1. 執行下列命令以取得 Azure Cosmos DB 帳戶的屬性。

    az cosmosdb show \
        --resource-group "<resource-group-name>" \
        --name "<account-name>" \
    
  2. 檢查status物件的 backupPolicytargetType 屬性。 狀態應該是在移轉開始之後。InProgress

    {
      ...
      "backupPolicy": {
        ...
        "migrationState": {
          "status": "InProgress",
          "targetType": "Continuous"
        },
        "type": "Periodic"
      },
      ...
    }
    
  3. 移轉完成後,備份類型會變更為並 Continuous 包含所選層。 如果未提供層級,則層級會設定為 Continuous30Days。 再次執行相同的 az cosmosdb show 命令以檢查狀態。

    {
      ...
      "backupPolicy": {
        "continuousModeProperties": {
          "tier": "Continuous7Days"
        },
        "migrationState": null,
        "type": "Continuous"
      },
      ...
    }
    

變更連續模式層級

您可以在 Azure PowerShell、Azure CLI 或 Azure 入口網站 之間切換Continuous30DaysContinous7Days

下列 Azure CLI 命令說明如何將現有帳戶切換至 Continous7Days

az cosmosdb update \
    --resource-group "<resource-group-name>" \
    --name "<account-name>" \
    --backup-policy-type "Continuous" \
    --continuous-tier "Continuous7Days"

您也可以透過與使用 Azure CLI 和 Azure PowerShell 時類似的方法來使用 ARM 範本。

注意

當您從 30 天層切換到 7 天層時,您會立即失去還原超過 7 天資料的能力。 當您從 7 天層切換到 30 天層時,您只能還原過去 7 天的資料,直到新的備份累積為止。 您可以使用 Azure PowerShell 或 Azure CLI 檢查最早可用的還原時間。 切換等級的任何價格變更都會立即生效。

使用 Bicep 移轉至持續備份

若要使用 Bicep 範本和 Azure Resource Manager 移轉至連續備份模式,請尋找範本的 backupPolicy 區段,並更新 type 屬性。

  1. 請考慮以下具有 Periodic 備份策略的範例範本:

    resource azureCosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2025-04-15' = {
      name: '<account-name>'
      properties: {
        // Other required properties omitted for brevity
        backupPolicy: {
          type: 'Periodic'
          periodicModeProperties: {
            backupIntervalInMinutes: 240 // 4 hours
            backupRetentionIntervalInHours: 48 // 2 days
          }
        }
      }
    }
    
  2. 更新範例範本,以在 Continuous7 天 方案中使用備份模式:

    resource azureCosmosDBAccount 'Microsoft.DocumentDB/databaseAccounts@2025-04-15' = {
      name: '<account-name>'
      properties: {
        // Other required properties omitted for brevity
        backupPolicy: {
          type: 'Continuous'
          continuousModeProperties: {
            tier: 'Continuous7Days'
          }
        }
      }
    }
    
  3. 使用 Azure PowerShell 或 CLI 部署範本。 下列範例示範如何使用 CLI 命令來部署範本:

    az deployment group create \
        --resource-group "<resource-group-name>" \
        --template-file "<template-file-path>"