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

適用於:NoSQL MongoDB Gremlin Table

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

本文說明如何識別還原時間,以及還原運作中或已刪除的 Azure Cosmos DB 帳戶。 其會顯示如何使用 Azure 入口網站PowerShellCLIAzure Resource Manager 範本來還原帳戶。

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

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

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

  1. 登入 Azure 入口網站

  2. 瀏覽至您的 Azure Cosmos DB 帳戶,並且開啟 [時間點還原] 刀鋒視窗。

    注意

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

  3. 請填入下列詳細資料以進行還原:

    • 還原點 (UTC) - 過去 30 天內的時間戳記。 帳戶在該時間戳記時應該存在。 您可以指定 UTC 格式的還原點。 當您想要還原時,可以接近第二個。 選取 [按一下這裡] 連結,以取得識別還原點的協助。

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

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

    • 資源群組 - 在其下建立及還原目標帳戶的資源群組。 資源群組必須已存在。

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

    從意外修改 Azure 入口網站 還原實時帳戶。

  4. 選取上述參數之後,請選取 [提交] 按鈕來開始還原。 還原成本是一次性費用,根據資料大小以及所選取區域中的備份儲存體成本。 若要深入了解,請參閱價格一節。

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

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

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

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

在 Azure 入口網站中填入還原點時間時,如果您需要識別還原點的協助,請選取 [按一下這裡] 連結,這會帶您前往事件摘要刀鋒視窗。 事件摘要提供在來源帳戶的資料庫和容器上建立、取代、刪除事件的完整精確度清單。

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

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

注意

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

還原已刪除的帳戶

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

  1. 登入 Azure 入口網站

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

  3. 接著,選取 [還原] 按鈕。 [還原] 刀鋒視窗會顯示可在保留期間 (從刪除時間起算 30 天) 內還原的已刪除帳戶清單。

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

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

    注意

    只有當您擁有 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

範例1:還原整個帳戶:


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

注意

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

範例2:還原特定集合和資料庫。 此範例會從 MyDB1 和整個資料庫 MyDB2 (底下包含所有容器) 還原集合 MyCol1MyCol2

$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"

範例 3:還原 API for Gremlin 帳戶。 此範例會從 MyDB1 和整個資料庫 MyDB2 (底下包含所有容器) 還原圖表 graph1 和 graph2

$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"

範例 4:還原 API for Table 帳戶。 此範例會還原資料表 table1,即 MyDB1 中的 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 的可還原資源

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

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

執行 Get-AzCosmosDBRestorableDatabaseAccount PowerShell 命令以列出可以在目前訂用帳戶中還原的所有帳戶。

回應包括可以還原的所有資料庫帳戶 (運作中和已刪除) 以及可從中還原的區域。

{
    "accountName": "SampleAccount",
    "apiType": "Sql",
    "creationTime": "2020-08-08T01:04:52.070190+00:00",
    "deletionTime": null,
    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/23e99a35-cd36-4df4-9614-f767a03b9995",
    "identity": null,
    "location": "West US",
    "name": "23e99a35-cd36-4df4-9614-f767a03b9995",
    "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 參數是從 Get-AzCosmosDBRestorableDatabaseAccount Cmdlet 回應中的 namelocation 屬性取得。 DatabaseAccountInstanceId 屬性 (Attribute) 是指要還原的來源資料庫帳戶的 instanceId 屬性 (Property):


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

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

使用下列命令來列出 SQL 容器的所有版本。 此命令僅適用於運作中帳戶。 DatabaseRId 參數是您想要還原的資料庫的 ResourceId。 這是在 Get-AzCosmosdbSqlRestorableDatabase Cmdlet 回應中找到的 ownerResourceid 屬性值。 回應也會包含在此資料庫內所有容器上執行的作業清單。


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 的可還原資源

列舉 Cmdlet 可協助您在各個時間戳記上探索可供還原的資源。 此外,也提供可還原的帳戶、資料庫和圖表資源的重要事件摘要。

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

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

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

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

使用下列命令來列出所有版本的 API for Gremlin 圖表。 此命令僅適用於運作中帳戶。 DatabaseRId 參數是您想要還原的資料庫的 ResourceId。 這是在 Get-AzCosmosdbGremlinRestorableDatabase Cmdlet 回應中找到的 ownerResourceid 屬性值。 回應也會包含在此資料庫內所有圖表上執行的作業清單。

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 的可還原資源

列舉 Cmdlet 可協助您在各個時間戳記上探索可供還原的資源。 此外,也提供可還原的帳戶和資料表資源的重要事件摘要。

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

使用下列命令來列出資料表的所有版本。 此命令僅適用於運作中帳戶。

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 <MyResourceGroup> \
 --location "West US" \
 --public-network-access Disabled \
 --disable-ttl True 

如果未設定 --public-network-access,則可以從公用網路來存取已還原的帳戶。 請務必將 Disabled 傳遞至 --public-network-access 選項,以防止已還原帳戶的公用網路存取。 將 disable-ttl 設定為 $true 可確保在還原的帳戶上停用 TTL,而且如果未提供此參數,則會在先前設定時還原已啟用 TTL 的帳戶。

注意

若要停用公用網路存取進行還原,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/00000000-0000-0000-0000-000000000000/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 參數是從 az cosmosdb restorable-database-account list 命令回應中的 namelocation 屬性取得。 instanceId 屬性也是要還原的來源資料庫帳戶的屬性:

az cosmosdb sql restorable-database list \
  --instance-id "abcd1234-d1c0-4645-a699-abcd1234" \
  --location "West US"

此命令輸出現在會顯示建立和刪除資料庫的時間。

[
  {
    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/abcd1234-d1c0-4645-a699-abcd1234/restorableSqlDatabases/40e93dbd-2abe-4356-a31a-35567b777220",
     "name": "40e93dbd-2abe-4356-a31a-35567b777220",
    "resource": {
      "database": {
        "id": "db1"
      },
      "eventTimestamp": "2021-01-08T23:27:25Z",
      "operationType": "Create",
      "ownerId": "db1",
      "ownerResourceId": "YuZAAA=="
    },
   
  },
  {
    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/abcd1234-d1c0-4645-a699-abcd1234/restorableSqlDatabases/243c38cb-5c41-4931-8cfb-5948881a40ea",
    "name": "243c38cb-5c41-4931-8cfb-5948881a40ea",
    "resource": {
      "database": {
        "id": "spdb1"
      },
      "eventTimestamp": "2021-01-08T23:25:25Z",
      "operationType": "Create",
      "ownerId": "spdb1",
      "ownerResourceId": "OIQ1AA=="
    },
 
  }
]

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

使用下列命令來列出 SQL 容器的所有版本。 此命令僅適用於運作中帳戶。 database-rid 參數是您想要還原的資料庫的 ResourceId。 這是在 az cosmosdb sql restorable-database list 命令回應中找到的 ownerResourceid 屬性值。

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/23587e98-b6ac-4328-a753-03bcd3c8e744/providers/Microsoft.DocumentDB/locations/eastus2euap/restorableDatabaseAccounts/a00d591d-4316-483b-8308-44193c5f3073/restorableGraphs/1792cead-4307-4032-860d-3fc30bd46a20", 
    "name": "1792cead-4307-4032-860d-3fc30bd46a20", 
    "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/23587e98-b6ac-4328-a753-03bcd3c8e744/providers/Microsoft.DocumentDB/locations/WestUS/restorableDatabaseAccounts/7e4d666a-c6ba-4e1f-a4b9-e92017c5e8df/restorableTables/59781d91-682b-4cc2-93a3-c25d03fab159", 
"name": "59781d91-682b-4cc2-93a3-c25d03fab159", 
"resource": { 
  "eventTimestamp": "2022-02-09T17:09:54Z", 
  "operationType": "Create", 
  "ownerId": "table1", 
  "ownerResourceId": "tOdDAKYiBhQ=", 
  "rid": "9pvDGwAAAA==" 
  }, 
"type": "Microsoft.DocumentDB/locations/restorableDatabaseAccounts/restorableTables" 
   }, 

{"id": "/subscriptions/23587e98-b6ac-4328-a753-03bcd3c8e744/providers/Microsoft.DocumentDB/locations/eastus2euap/restorableDatabaseAccounts/7e4d666a-c6ba-4e1f-a4b9-e92017c5e8df/restorableTables/2c9f35eb-a14c-4ab5-a7e0-6326c4f6b785", 
"name": "2c9f35eb-a14c-4ab5-a7e0-6326c4f6b785", 
"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 Resource Manager 範本進行還原

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

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

  1. 設定要還原createMode 參數。
  2. 定義 restoreParameters,請注意,restoreSource 值是從您來源帳戶的 az cosmosdb restorable-database-account list 命令輸出中擷取。 您帳戶名稱的執行個體識別碼屬性會用來進行還原。
  3. restoreMode 參數設定為 PointInTime,並且設定 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/2296c272-5d55-40d9-bc05-4d56dc2d7588/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/6a18ecb8-88c2-4005-8dce-07b44b9741df",
            "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/2296c272-5d55-40d9-bc05-4d56dc2d7588/providers/Microsoft.DocumentDB/locations/West US/restorableDatabaseAccounts/5cb9d82e-ec71-430b-b977-cd6641db85bc",
            "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/1296c352-5d33-40d9-bc05-4d56dc2a7521/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> 

下一步