共用方式為


將使用連續備份模式的 Azure Cosmos DB 帳戶還原

適用於: NoSQL MongoDB 格雷姆林 資料表

Azure Cosmos DB 的時間點還原功能可協助您從容器內的意外變更復原,還原已刪除的帳戶、資料庫或容器,或還原至任何區域 (備份存在於其中)。 連續備份模式可讓您還原至過去 30 天內的任何時間點。

本文說明如何識別還原時間,以及還原運作中或已刪除的 Azure Cosmos DB 帳戶。 它展示了如何使用 Azure 入口網站PowerShellCLIAzure 資源管理器範本來還原帳號。

Note

對於多區域帳號來說,若要解析本地的暫定稿是確認的,還是要採取回退動作,從衛星區域還原比在中樞區域還原慢。

使用 Azure 入口網站來還原帳戶

從意外修改還原運作中帳戶

您可以使用 Azure 入口網站來還原整個運作中帳戶,或其下選取的資料庫和容器。 使用下列步驟來還原您的資料:

  1. 登入 Azure 入口網站

  2. 流覽至您的 Azure Cosmos DB 帳戶,然後開啟 [還原時間點] 區段。

    Note

    只有當您擁有 Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read 權限時,才會在 Azure 入口網站中填入還原區段。 若要深入了解如何設定此權限,請參閱備份和還原權限一文。

  3. 輸入下列詳細資料:

    • 還原點 (UTC) - 過去 30 天內的時間戳記。 帳戶在該時間戳記時應該存在。 您可以指定以 UTC 時區表示的還原點。 可以接近到您想要還原的時間秒數。 選擇「 點擊這裡 」連結,以獲得 辨識還原點的協助。

    • 地點 – 帳戶恢復的目的地區域。 帳戶應該在指定時間戳記時存在於此區域 (例如,美國西部或美國東部)。 帳戶只能還原至來源帳戶存在的區域。

    • 還原資源 – 你可以選擇 整個帳號選擇某個資料庫/容器 來還原。 資料庫和容器應該在指定的時間戳記時存在。 根據選取的還原點和位置,會填入還原資源,讓使用者可以選取需要還原的特定資料庫或容器。

    • 資源群組 - 要建立和還原目標帳號的資源群組。 資源群組必須已存在。

    • 還原目標帳戶 - 目標帳戶名稱。 當您建立新帳戶時,目標帳戶名稱必須遵循與建立新帳戶相同的指導方針。 此帳戶是由還原程式在您來源帳戶所在的相同區域中所建立。

    將運作中帳戶從意外修改 Azure 入口網站後還原。

  4. 選擇上述參數後,點選 「提交 」按鈕啟動還原。 還原成本是一次性費用,根據資料大小以及所選取區域中的備份儲存體成本。 欲了解更多,請參閱 價格 章節。

還原進行時刪除來源帳戶可能會導致還原失敗。

運作中帳戶的可還原時間戳記

若要還原未刪除的 Azure Cosmos DB 運作中帳戶,最佳做法是一律識別容器的最新可還原時間戳記。 然後,您可以使用此時間戳記,將帳戶還原為最新版本。

使用事件摘要來識別還原時間

在 Azure 入口網站填寫還原點時間時,如果你需要協助辨識還原點,請點選「 點擊這裡 」連結,它會帶你到事件資訊流頁面。 事件摘要提供在來源帳戶的資料庫和容器上建立、取代、刪除事件的完整精確度清單。

例如,如果您想要還原至特定容器刪除或更新之前的時間點,請檢查此事件摘要。 事件會以時間遞減順序顯示,最近的事件顯示在最上方。 您可以瀏覽結果並選取事件前後的時間,以進一步縮小您的時間。

使用事件摘要來識別還原時間點。

Note

事件摘要不會顯示專案資源的變更。 您一律可以手動指定過去 30 天內的任何時間戳記 (只要帳戶在該時間時存在) 以進行還原。

還原已刪除的帳戶

您可以使用 Azure 入口網站,在其刪除的 30 天內完整還原已刪除的帳戶。 使用下列步驟來還原已刪除的帳戶:

  1. 登入 Azure 入口網站

  2. 在全域搜尋列中搜尋 Azure Cosmos DB 資源。 會列出您所有現有的帳戶。

  3. 接著選擇 還原 按鈕。 [還原] 區段會顯示可在保留期間內還原的已刪除帳戶清單,這是從刪除時間起算的 30 天。

  4. 選擇您要還原的帳戶。

    從 Azure 入口網站 還原已刪除的帳戶。

    Note

    只有當您擁有 Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read 權限時,才會在 Azure 入口網站中填入還原區段。 若要深入了解如何設定此權限,請參閱備份和還原權限一文。

  5. 選取要還原的帳戶,並輸入下列詳細資料來還原已刪除的帳戶:

    • 還原點 (UTC) - 過去 30 天內的時間戳記。 帳戶在該時間點應該已經存在。 指定 UTC 時間的還原點。 可以接近到您想要還原的時間秒數。

    • 地點 – 需要恢復帳戶的目的地區域。 來源帳戶應於指定時間戳記時存在於此區域。 例如美國西部或美國東部。

    • 資源群組 - 目標帳號將在此資源群組下建立與還原。 資源群組必須已存在。

    • 還原目標帳戶 – 目標帳戶名稱必須遵循與建立新帳戶時相同的指導方針。 此帳戶是由還原程式在您來源帳戶所在的相同區域中所建立。

追蹤還原作業的狀態

啟動還原操作後,請選擇入口網站右上角的 通知 鈴圖示。 會提供一個連結,顯示正在還原的帳戶狀態。 在還原進行中時,帳號狀態會顯示 為「建立中」,恢復操作完成後,帳號狀態會變為 「在線」。

當作業完成時,還原的帳戶狀態會從建立變更為在線。

從還原的帳戶取得還原詳細資料

還原作業完成之後,您可能想要知道從中還原的來源帳戶詳細數據或還原時間。

使用下列步驟從 Azure 入口網站取得還原詳細資料:

  1. 登入 Azure 入口網站 ,並導航到已恢復的帳號。

  2. 進入 「匯出範本 」選區。 會開啟 JSON 範本,對應至還原的帳戶。

使用 Azure PowerShell 來還原帳戶

還原帳戶之前,請安裝最新版的 Azure PowerShell 或高於 9.6.0 的版本。 接下來,連線到您的 Azure 帳戶,然後使用下列命令來選取必要的訂閱:

  1. 使用下列命令登入 Azure:

    Connect-AzAccount
    
  2. 使用下列命令選取特定訂閱:

    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

範例一: 恢復整個帳號:


Restore-AzCosmosDBAccount `
  -TargetResourceGroupName "MyRG" `
  -TargetDatabaseAccountName "Pitracct" `
  -SourceDatabaseAccountName "source-sql" `
  -RestoreTimestampInUtc "2021-01-05T22:06:00" `
  -Location "West US" `
  -PublicNetworkAccess Disabled
  -DisableTtl $false


如果未 PublicNetworkAccess 設定,還原的帳戶可從公用網路存取,請確定傳遞 DisabledPublicNetworkAccess 選項以停用已還原帳戶的公用網路存取。 將 DisableTtl 設定為 $true,可確保在還原的帳戶上停用 TTL,而不提供參數則會在還原帳戶時啟用 TTL (如果先前有設定)。

Note

若要停用公用網路存取進行還原,所需的 Az.CosmosDB 最低穩定版本是 1.12.0。

範例二: 恢復特定收藏與資料庫。 此範例還原了 MyDB1 中的 MyCol1MyCol2 集合,以及整個資料庫 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 "West US"

範例三: 正在恢復 Gremlin 帳號的 API。 此範例還原了 MyDB1 中的 graph1graph2 圖,以及整個資料庫 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 "West US"

範例四: 還原 Table Account 的 API。 此範例從 MyDB1 還原了 table1, table1 表格。

$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 來還原已設定受控識別的連續帳戶

若要恢復客戶管理金鑰(CMK)持續帳戶,請參考處提供的步驟

從還原的帳戶取得還原詳細資料

匯入 Az.CosmosDB 模組 1.12.0 版,並且執行下列命令以取得還原詳細資料。 restoreTimestamp 將在 restoreParameters 物件下:

Get-AzCosmosDBAccount -ResourceGroupName MyResourceGroup -Name MyCosmosDBDatabaseAccount 

列舉 API for NoSQL 的可還原資源

列舉指令可協助您探索在不同時間點上可供還原的資源。 此外,也提供可還原的帳戶、資料庫和容器資源的重要事件摘要。

列出可在目前訂用帳戶中還原的所有帳戶

執行 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"
  }

就像帳戶的 CreationTimeDeletionTime,區域也有 CreationTimeDeletionTime。 這些時間可讓您選擇正確的區域和還原至該區域的有效時間範圍。

列出運作中資料庫帳戶 SQL 資料庫的所有版本

列出資料庫的所有版本,可讓您在實際資料庫存在時間未知的情況下,選擇正確的資料庫。

執行下列 PowerShell 命令,以列出資料庫的所有版本。 此命令僅適用於運作中帳戶。 DatabaseAccountInstanceIdLocation 參數是從 name Cmdlet 回應中的 locationGet-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"

列舉適用於 MongoDB 的 API 中的可還原資源

以下所述的列舉命令可協助您在各個時間戳記上探索可供還原的資源。 此外,也提供可還原的帳戶、資料庫和容器資源的重要事件摘要。 這些命令僅適用於運作中帳戶,類似於 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"

列舉 API for Gremlin 的可還原資源

列舉指令可協助您探索在不同時間點上可供還原的資源。 此外,它們也提供可還原的帳戶、資料庫和圖表資源的重要事件摘要。

列出即時資料庫帳戶內 Gremlin 資料庫的所有版本

列出資料庫的所有版本,可讓您在實際資料庫存在時間未知的情況下,選擇正確的資料庫。 執行下列 PowerShell 命令,以列出資料庫的所有版本。 此命令僅適用於運作中帳戶。 DatabaseAccountInstanceIdLocation 參數是從 name Cmdlet 回應中的 locationGet-AzCosmosDBRestorableDatabaseAccount 屬性取得。 DatabaseAccountInstanceId 屬性是指要還原的來源資料庫帳戶的 instanceId 屬性:

Get-AzCosmosdbGremlinRestorableDatabase ` 
   -Location "East US" ` 
   -DatabaseAccountInstanceId <DatabaseAccountInstanceId> 

列出即時資料庫帳戶內資料庫 Gremlin 圖表的所有版本

使用下列命令來列出所有版本的 API for Gremlin 圖表。 此命令僅適用於運作中帳戶。 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:

  1. 安裝最新版的 Azure CLI

    • 安裝最新版本 Azure CLI 或 2.52.0 以上版本。
    • 如果您已安裝 CLI,請執行 az upgrade 命令以更新為最新版本。 此命令只會與高於 2.52.0 的 CLI 版本搭配運作。 如果您有較舊的版本,請使用上述連結來安裝最新版本。
  2. 登入並選取訂用帳戶

    • 使用 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 的帳戶。

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

藉由從現有的 API for Gremlin 帳戶僅還原選取的資料庫和圖表,以建立新的 Azure Cosmos DB 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 屬性的值。 如果值設為 還原,表示該帳號是從另一個帳號還原的。 restoreParameters 屬性有進一步的詳細資料,例如 restoreSource,其具有來源帳戶識別碼。 restoreSource 參數中的最後一個 GUID 是來源帳戶的 instanceId。 此外,restoreTimestamp 會位於 restoreParameters 物件底下:

az cosmosdb show --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup

列舉 API for NoSQL 的可還原資源

以下所述的列舉命令可協助您在各個時間戳記上探索可供還原的資源。 此外,也提供可還原的帳戶、資料庫和容器資源的重要事件摘要。

列出可在目前訂用帳戶中還原的所有帳戶

執行下列 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"
  }

就像帳戶的 CreationTimeDeletionTime,區域也有 CreationTimeDeletionTime。 這些時間可讓您選擇正確的區域和還原至該區域的有效時間範圍。

列出運作中資料庫帳戶資料庫的所有版本

列出資料庫的所有版本,可讓您在實際資料庫存在時間未知的情況下,選擇正確的資料庫。

執行下列 Azure CLI 命令,以列出資料庫的所有版本。 此命令僅適用於運作中帳戶。 instance-idlocation 參數是從 name 命令回應中的 locationaz 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 帳戶的所有資源

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 Resource Manager 範本進行還原

您也可以使用 Azure Resource Manager (ARM) 範本來還原帳戶。 定義範本時,請包含下列參數:

使用 ARM 範本來還原 NoSQL 或 MongoDB 帳戶的 API

  1. 將參數設 createMode還原
  2. 定義 restoreParameters,請注意,restoreSource 值是從您來源帳戶的 az cosmosdb restorable-database-account list 命令輸出中擷取。 您帳戶名稱的執行個體識別碼屬性會用來進行還原。
  3. 將參數設 restoreModePointInTime ,並設定該 restoreTimestampInUtc 值。

使用下列 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 範本來恢復 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": "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 或 CLI 來部署範本。 下列範例示範如何使用 Azure CLI 命令來部署範本:

az deployment group create -g <ResourceGroup> --template-file <RestoreTemplateFilePath> 

後續步驟