継続的バックアップ モードを使用する Azure Cosmos DB アカウントを復元する

適用対象: NoSQL MongoDB Gremlin Table

Azure Cosmos DB のポイントインタイム リストア機能を使用すると、コンテナー内で誤って行われた変更から回復し、削除されたアカウント、データベース、またはコンテナーの復元や、任意のリージョン (バックアップが存在していた場所) への復元ができます。 継続的バックアップ モードを使用すると、過去 30 日以内の任意の時点に復元できます。

この記事では、復元時間を特定し、ライブまたは削除された Azure Cosmos DB アカウントを復元する方法について説明します。 ここでは、Azure portalPowerShellCLI、または Azure Resource Manager テンプレートを使用したアカウントの復元方法を示します。

Azure portal を使用してアカウントを復元する

誤った変更からライブ アカウントを復元する

Azure portal を使用して、ライブ アカウント全体、またはその下にある選択したデータベースやコンテナーを復元できます。 次の手順に従って、データを復元します。

  1. Azure portal にサインインします。

  2. Azure Cosmos DB アカウントに移動して、 [ポイントインタイム リストア] ブレードを開きます。

    Note

    Azure portal の [復元] ブレードは、Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read アクセス許可を持っている場合にのみ設定されます。 このアクセス許可を設定する方法の詳細については、バックアップとアクセス許可の復元に関する記事を参照してください。

  3. 復元するには、次の詳細を入力します。

    • 復元ポイント (UTC) – 過去 30 日以内のタイムスタンプ。 アカウントは、そのタイムスタンプの時点で存在している必要があります。 復元ポイントは UTC で指定できます。 復元する時刻の秒数にできるだけ近づけることができます。 復元ポイントの特定に関するヘルプについては、こちらをクリック リンクを選択してください。

    • 場所 – アカウントが復元される宛先リージョン。 アカウントは、指定されたタイムスタンプ (たとえば、米国西部または米国東部) でこのリージョンに存在する必要があります。 アカウントは、ソース アカウントが存在していたリージョンにのみ復元できます。

    • Restore Resource (復元リソース)アカウント全体か、選択したデータベースまたはコンテナーを復元するかを選択できます。 データベースとコンテナーは、指定されたタイムスタンプの時点で存在している必要があります。 選択された復元ポイントと場所に基づいて、復元リソースが設定されます。これによりユーザーは、復元する必要がある特定のデータベースまたはコンテナーを選択できるようになります。

    • リソース グループ - ターゲット アカウントが作成および復元されるリソース グループ。 このリソース グループは、既に存在している必要があります。

    • Restore Target Account (復元ターゲット アカウント) - ターゲット アカウント名。 ターゲット アカウント名は、新しいアカウントを作成するときと同じガイドラインに従う必要があります。 このアカウントは、復元プロセスによって、ソース アカウントが存在するのと同じリージョンに作成されます。

    Azure portal で誤った変更からライブ アカウントを復元します。

  4. 上のパラメーターを選択したら、 [送信] ボタンを選択して復元を開始します。 復元コストは、指定したリージョン内のバックアップ ストレージのデータ量とコストに基づく 1 回限りの料金です。 詳細については、価格に関するセクションを参照してください。

復元中にソース アカウントを削除すると、復元に失敗することがあります。

ライブ アカウントの復元可能なタイムスタンプ

削除されていない Azure Cosmos DB のライブ アカウントを復元するには、コンテナーの復元可能な最新のタイムスタンプを常に特定するのがベスト プラクティスです。 その後、このタイムスタンプを使用して、アカウントを最新バージョンに復元できます。

イベント フィードを使用して復元時刻を特定する

Azure portal で復元ポイントの時刻を入力する際に、復元ポイントを特定するのにヘルプが必要な場合は、 [Click here](ここをクリック) リンクを選択すると、イベント フィードのブレードが表示されます。 イベント フィードには、ソース アカウントのデータベースおよびコンテナーに対する作成、置換、削除イベントに関する完全に忠実な一覧が表示されます。

たとえば、特定のコンテナーが削除または更新される前の時点に復元する必要がある場合は、このイベント フィードを確認してください。 イベントは、発生時刻順 (降順) に時系列で表示され、最近のイベントが上部に表示されます。 結果を参照して、イベントの前後の時間を選択することで、時刻をさらに絞り込むことができます。

イベント フィードを使用して復元ポイントの時刻を特定します。

Note

イベント フィードには、項目リソースへの変更は表示されません。 復元のために、いつでも過去 30 日以内の任意のタイムスタンプ (その時点でアカウントが存在する限り) を手動で指定できます。

削除されたアカウントを復元する

Azure portal を使用すると、削除されたアカウントを削除後 30 日以内に完全に復元できます。 次の手順に従って、削除されたアカウントを復元します。

  1. Azure portal にサインインします。

  2. グローバル検索バーで「Azure Cosmos DB」リソースを検索します。 すべての既存のアカウントが一覧表示されます。

  3. 次に、 [復元] ボタンを選択します。 [復元] ブレードに、保持期間 (削除時刻から 30 日間) 以内に復元できる削除済みアカウントの一覧が表示されます。

  4. 復元するアカウントを選択します。

    削除されたアカウントを Azure portal から復元します。

    Note

    Azure portal の [復元] ブレードは、Microsoft.DocumentDB/locations/restorableDatabaseAccounts/*/read アクセス許可を持っている場合にのみ設定されます。 このアクセス許可を設定する方法の詳細については、バックアップとアクセス許可の復元に関する記事を参照してください。

  5. 復元するアカウントを選択し、削除されたアカウントを復元するために次の詳細情報を入力します。

    • 復元ポイント (UTC) – 過去 30 日以内のタイムスタンプ。 アカウントは、そのタイムスタンプの時点で存在している必要があります。 復元ポイントは UTC で指定します。 復元する時刻の秒数にできるだけ近づけることができます。

    • 場所 – アカウントを復元する必要がある宛先リージョン。 ソース アカウントは、指定されたタイムスタンプの時点でこのリージョンに存在している必要があります。 例: 米国西部または米国東部。

    • リソース グループ - ターゲット アカウントが作成および復元されるリソース グループ。 このリソース グループは、既に存在している必要があります。

    • Restore Target Account (復元ターゲット アカウント) – ターゲット アカウント名は、新しいアカウントを作成するときと同じガイドラインに従う必要があります。 このアカウントは、復元プロセスによって、ソース アカウントが存在するのと同じリージョンに作成されます。

復元操作の状態を追跡する

復元操作を開始した後、ポータルの右上隅にある [通知] ベル アイコンを選択します。 これにより、復元しているアカウントの状態を示すリンクが表示されます。 復元の進行中は、アカウントの状態は "Creating" (作成中) になります。復元操作が完了すると、アカウントの状態は "Online" (オンライン) に変わります。

操作が完了すると、復元されたアカウントの状態は、作成中からオンラインに変わります。

復元されたアカウントから復元の詳細を取得する

復元操作が完了したら、復元元のソース アカウントの詳細や復元時刻を確認する必要があります。

Azure portal から復元の詳細を取得するには、次の手順に従います。

  1. Azure portal にサインインし、復元されたアカウントに移動します。

  2. [テンプレートのエクスポート] ペインに移動します。 これにより、復元されたアカウントに対応する JSON テンプレートが開きます。

Azure PowerShell を使用してアカウントを復元する

アカウントを復元する前に、Azure PowerShell の最新バージョンまたは 9.6.0 以降のバージョンをインストールしてください。 次に、Azure アカウントに接続し、次のコマンドを使用して必要なサブスクリプションを選択します。

  1. 次のコマンドを使用して、Azure にサインインします。

    Connect-AzAccount
    
  2. 次のコマンドを使用して、特定のサブスクリプションを選択します。

    Select-AzSubscription -Subscription <SubscriptionName>
    

NoSQL 用 API アカウントの復元操作をトリガーする

次のコマンドレットは、ターゲット アカウント、ソース アカウント、場所、リソース グループ、PublicNetworkAccess、DisableTtl、タイムスタンプを使用して restore コマンドで復元操作をトリガーする例です。


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 が設定されていない場合、復元されたアカウントはパブリック ネットワークからアクセスできます。PublicNetworkAccess オプションに Disabled を渡して、復元されたアカウントのパブリック ネットワーク アクセスを無効にしてください。 DisableTtl を $true に設定すると、復元されるアカウントで TTL が無効になります。パラメーターを指定しないと、以前に設定されている場合は TTL が有効な状態でアカウントが復元されます。

Note

パブリック ネットワーク アクセスを無効にして復元する場合、必要な Az.CosmosDB の最小安定バージョンは 1.12.0 です。

例 2: 特定のコレクションとデータベースを復元する。 この例では、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"

例 3: 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"

例 4: Table 用 API アカウントの復元 この例では、テーブル table1table1MyDB1 から復元します。

$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 を使用してマネージド ID で構成された継続的アカウントを復元するには

カスタマー マネージド キー (CMK) の連続アカウントを復元するには、こちらの手順を参照してください

復元されたアカウントから復元の詳細を取得する

Az.CosmosDB モジュール バージョン 1.12.0 をインポートし、次のコマンドを実行して復元の詳細を取得します。 restoreTimestamp は restoreParameters オブジェクトの下にあります。

Get-AzCosmosDBAccount -ResourceGroupName MyResourceGroup -Name MyCosmosDBDatabaseAccount 

NoSQL 用 API の復元可能なリソースを列挙する

列挙コマンドレットは、さまざまなタイムスタンプで復元に使用できるリソースの検出に役立ちます。 また、復元可能なアカウント、データベース、コンテナー リソースでの主要イベントのフィードも示されます。

現在のサブスクリプションで復元可能なすべてのアカウントを一覧表示する

現在のサブスクリプションで復元可能なすべてのアカウントを一覧表示するには、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"
  }

アカウントの CreationTime または DeletionTime と同様に、リージョンにも CreationTime または DeletionTime があります。 これらの時間によって、そのリージョンに復元する適切なリージョンと有効な時間範囲を選択できます。

ライブ データベース アカウント内のすべてのバージョンの SQL データベースを一覧表示する

データベースのすべてのバージョンを一覧表示すると、データベースの実際の存在時間が不明なシナリオで、正しいデータベースを選択できます。

データベースのすべてのバージョンを一覧表示するには、次の PowerShell コマンドを実行します。 このコマンドは、ライブ アカウントでのみ機能します。 DatabaseAccountInstanceIdLocation パラメーターは、Get-AzCosmosDBRestorableDatabaseAccount コマンドレットの応答の name および location プロパティから取得されます。 DatabaseAccountInstanceId 属性は、復元されるソース データベース アカウントの instanceId プロパティを参照します。


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

ライブ データベース アカウント内のデータベースの SQL コンテナーのすべてのバージョンを一覧表示する

SQL コンテナーのすべてのバージョンを一覧表示するには、次のコマンドを使用します。 このコマンドは、ライブ アカウントでのみ機能します。 DatabaseRId パラメーターは復元するデータベースの ResourceId です。 これは、Get-AzCosmosdbSqlRestorableDatabase コマンドレットの応答で検出される 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 で復元可能なリソースを列挙する

下記の列挙コマンドは、さまざまなタイムスタンプで復元に使用できるリソースを検出するのに役立ちます。 また、復元可能なアカウント、データベース、コンテナー リソースでの主要イベントのフィードも示されます。 これらのコマンドは、ライブ アカウントでのみ機能し、NoSQL 用 API コマンドに似ていますが、コマンド名には sql ではなく MongoDB を使用します。

ライブ データベース アカウント内の 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"

Gremlin 用 API の復元可能なリソースを列挙する

列挙コマンドレットは、さまざまなタイムスタンプで復元に使用できるリソースの検出に役立ちます。 また、復元可能なアカウント、データベース、グラフ リソースでの主要イベントのフィードも示されます。

ライブ データベース アカウント内の Gremlin データベースのすべてのバージョンを一覧表示する

データベースのすべてのバージョンを一覧表示すると、データベースの実際の存在時間が不明なシナリオで、正しいデータベースを選択できます。 データベースのすべてのバージョンを一覧表示するには、次の PowerShell コマンドを実行します。 このコマンドは、ライブ アカウントでのみ機能します。 DatabaseAccountInstanceIdLocation パラメーターは、Get-AzCosmosDBRestorableDatabaseAccount コマンドレットの応答の name および location プロパティから取得されます。 DatabaseAccountInstanceId 属性は、復元されるソース データベース アカウントの instanceId プロパティを参照します。

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

ライブ データベース アカウント内のデータベースの Gremlin グラフのすべてのバージョンを一覧表示する

Gremlin 用 API グラフのすべてのバージョンを一覧表示するには、次のコマンドを使用します。 このコマンドは、ライブ アカウントでのみ機能します。 DatabaseRId パラメーターは復元するデータベースの ResourceId です。 これは、Get-AzCosmosdbGremlinRestorableDatabase コマンドレットの応答で検出される 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" 

Table 用 API の復元可能なリソースを列挙する

列挙コマンドレットは、さまざまなタイムスタンプで復元に使用できるリソースの検出に役立ちます。 また、復元可能なアカウントおよびテーブル リソースに関する主要イベントのフィードも提供します。

ライブ データベース アカウント内のデータベースのテーブルのすべてのバージョンを一覧表示する

テーブルのすべてのバージョンを一覧表示するには、次のコマンドを使用します。 このコマンドは、ライブ アカウントでのみ機能します。

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 が有効な状態でアカウントが復元されます。

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

既存の Gremlin 用 API アカウントから選択したデータベースとグラフのみを復元して、新しい Azure Cosmos DB の Gremlin 用 API アカウントを作成する


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 

既存の Table 用 API アカウントから選択したテーブルのみを復元して、新しい Azure Cosmos DB の Table 用 API アカウントを作成する


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 プロパティの値が表示されます。 値が Restore に設定されている場合、これはアカウントが別のアカウントから復元されたことを示しています。 restoreParameters プロパティには、ソース アカウント ID を持つ restoreSource などの詳細があります。 restoreSource パラメーターの最後の GUID は、ソース アカウントの instanceId です。 そして、restoreTimestamp は次のように restoreParameters オブジェクトの下に配置されます。

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

NoSQL 用 API の復元可能なリソースを列挙する

下記の列挙コマンドは、さまざまなタイムスタンプで復元に使用できるリソースを検出するのに役立ちます。 また、復元可能なアカウント、データベース、およびコンテナー リソースでのキー イベントのフィードも提供されます。

現在のサブスクリプションで復元可能なすべてのアカウントを一覧表示する

現在のサブスクリプションで復元可能なすべてのアカウントを一覧表示するには、次の 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"
  }

アカウントの CreationTime または DeletionTime と同様に、リージョンにも CreationTime または DeletionTime があります。 これらの時間によって、そのリージョンに復元する適切なリージョンと有効な時間範囲を選択できます。

ライブ データベース アカウント内のデータベースのすべてのバージョンを一覧表示する

データベースのすべてのバージョンを一覧表示すると、データベースの存在の実際の時間が不明なシナリオで、正しいデータベースを選択できます。

データベースのすべてのバージョンを一覧表示するには、次の Azure CLI コマンドを実行します。 このコマンドは、ライブ アカウントでのみ機能します。 instance-idlocation パラメーターは、az cosmosdb restorable-database-account list コマンドの応答の name および location プロパティから取得されます。 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"
  }
]

MongoDB 用 API アカウントの復元可能なリソースを列挙する

下記の列挙コマンドは、さまざまなタイムスタンプで復元に使用できるリソースを検出するのに役立ちます。 また、復元可能なアカウント、データベース、およびコンテナー リソースでのキー イベントのフィードも提供されます。 これらのコマンドは、ライブ アカウントでのみ機能します。

ライブ データベース アカウント内の 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"  ] 
  } 
] 

Table 用 API アカウントの復元可能なリソースを列挙する

下記の列挙コマンドは、さまざまなタイムスタンプで復元に使用できるリソースを検出するのに役立ちます。 また、復元可能なアカウントと Table 用 API リソースに関する主要イベントのフィードも提供します。 これらのコマンドは、ライブ アカウントでのみ機能します。

ライブ データベース アカウント内のテーブルのすべてのバージョンを一覧表示する

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" 

  }, 
] 

特定のタイムスタンプとリージョンにある復元に使用できる Table 用 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 パラメーターを Restore に設定します。
  2. restoreParameters を定義します。restoreSource の値は、ソース アカウントの az cosmosdb restorable-database-account list コマンドの出力から抽出されます。 アカウント名のインスタンス ID 属性は、復元の実行に使用されます。
  3. restoreMode パラメーターを PointInTime に設定し、restoreTimestampInUtc 値を構成します。

次の ARM テンプレートを使用して、Azure Cosmos DB の NoSQL または MongoDB 用 API アカウントを復元します。 その他の 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 テンプレートを使って 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/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 テンプレートを使って Table 用 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/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 または Azure CLI を使用してテンプレートをデプロイします。 次の例は、Azure CLI コマンドを使用してテンプレートをデプロイする方法を示しています。

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

次のステップ