長時間実行オペレーションの管理

このページでは、オペレーション API を使用して Cloud Spanner の長時間実行オペレーションのライフサイクルを管理する方法を説明します。

長時間実行オペレーションとは、完了までに膨大な時間がかかる可能性があるメソッドの呼び出しです。Spanner はデータベース、インスタンス、バックアップの複数のアクションについて長時間実行オペレーションを作成します。その一例は、データベースを復元するメソッド projects.instances.databases.restoreです。データベースを復元すると、Spanner サービスは復元の進行状況を追跡するための長時間実行オペレーションを作成します。Spanner のオペレーション API では長時間実行オペレーションのステータスを確認できます。長時間実行オペレーションの一覧表示やキャンセル、長時間実行インスタンス オペレーションの削除を行うこともできます。

このページでは、REST API を使用して長時間実行オペレーションを管理する方法について説明します。ただし、次の方法で長時間実行オペレーションを管理することもできます。

Spanner の長時間実行オペレーションは次の各メソッドで管理できます。

アクション 長時間実行データベース オペレーション 長時間実行バックアップ オペレーション 長時間実行インスタンス オペレーション
長時間実行オペレーションをキャンセルする cancel cancel cancel
長時間実行オペレーションを削除する 未対応 未対応 delete
長時間実行オペレーションのステータスを取得する get get get
長時間実行オペレーションを一覧表示する list list list

データベース オペレーション

長時間実行データベース オペレーションには次のものがあります。

長時間実行データベース オペレーションのステータスを取得する

projects.instances.databases.operations.get を使用すると、長時間実行データベース オペレーションのステータスを取得できます。

たとえば、projects.instances.databases.create からのレスポンスは次のようになります。

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateDatabaseMetadata",
    "database": "projects/[PROJECT_ID]/instances/test-instance/databases/example-db"
  }
}

レスポンスの一番上にある name 値は、Spanner サービスが projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206 という名前の長時間実行データベース オペレーションを作成したことを表します。

長時間実行データベース オペレーションのステータスを取得するには:

  1. projects.instances.databases.operations.get をクリックします。
  2. [name] で、projects.instances.databases.create または projects.instances.databases.updateDdl へのレスポンスに表示されるとおりの長時間実行データベース オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
    

    (この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行データベース オペレーションの一覧表示で取得することもできます。

  3. [実行] をクリックしてレスポンスを表示します。オペレーションが完了すると、done フィールドが true に設定されます。

長時間実行データベース オペレーションをポーリングするには、オペレーションが完了するまで繰り返し projects.instances.databases.operations.get メソッドを呼び出します。各ポーリング リクエスト間でバックオフを使用します。たとえば、10 秒ごとにポーリングします。

長時間実行データベース オペレーションを一覧表示する

projects.instances.databases.operations.list を使用すると、長時間実行データベース オペレーションを一覧表示できます。

  1. projects.instances.databases.operations.list をクリックします。
  2. [name] に以下のように入力します。

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations
    
  3. [Execute] をクリックします。レスポンスに長時間実行データベース オペレーションが表示されます。

長時間実行データベース オペレーションをキャンセルする

projects.instances.databases.operations.cancel を使用すると、長時間実行データベース オペレーションをキャンセルできます。

  1. projects.instances.databases.operations.cancel をクリックします。
  2. [name] で、長時間実行データベース オペレーションのレスポンスに表示されるとおりの長時間実行データベース オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
    

    (この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行データベース オペレーションの一覧表示で取得することもできます。

  3. [実行] をクリックします。

バックアップ オペレーション

長時間実行バックアップ オペレーションには次のものがあります。

長時間実行バックアップ オペレーションのステータスを取得する

projects.instances.backups.operations.get を使用すると、長時間実行バックアップ オペレーションのステータスを取得できます。

たとえば、projects.instances.backups.create からのレスポンスは次のようになります。

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-5/operations/_auto_1492721321097206",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata",
    "name": "projects/[PROJECT_ID]/instances/test-instance/backup/example-db-backup-5"
  }
}

レスポンスの一番上にある name 値は、Spanner サービスが projects/[PROJECT_ID]/instances/test-instance/backups/example-db/operations/_auto_op_0cf69250b487c2f7 という名前の長時間実行バックアップ オペレーションを作成したことを表します。

長時間実行バックアップ オペレーションのステータスを取得するには:

  1. projects.instances.backups.operations.get をクリックします。
  2. [name] で、projects.instances.backups.create へのレスポンスに表示されるとおりの長時間実行バックアップ オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/backups/example-db/operations/_auto_1492721321097206
    

    (この値の代わりに、取得したオペレーション名を使用します)長時間実行バックアップ オペレーションを一覧表示して、バックアップ オペレーション名を取得することもできます。

  3. [実行] をクリックしてレスポンスを表示します。オペレーションが完了すると、done フィールドが true に設定されます。

長時間実行バックアップ オペレーションをポーリングするには、オペレーションが完了するまで繰り返し projects.instances.backups.operations.get メソッドを呼び出します。各ポーリング リクエスト間でバックオフを使用します。たとえば、10 秒ごとにポーリングします。

長時間実行バックアップ オペレーションを一覧表示する

単一のバックアップのオペレーションを一覧表示するには projects.instances.backups.operations.listを、インスタンス内のすべてのバックアップ オペレーションを一覧表示するには projects.instances.backupOperations.list を使用します。

  1. projects.instances.backups.operations.list をクリックします。
  2. [name] に以下のように入力します。

    projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations
    
  3. [実行] をクリックします。レスポンスには長時間実行オペレーションが含まれます。

長時間実行バックアップオペレーションのキャンセル

projects.instances.backups.operations.cancel を使用すると長時間実行バックアップ オペレーションをキャンセルできます。

  1. projects.instances.backups.operations.cancel をクリックします。
  2. [name] で、長時間実行バックアップ オペレーションのレスポンスに表示されるとおりの長時間実行バックアップ オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations/_auto_1492721321097206
    

    (この値の代わりに、取得したオペレーション名を使用します)長時間実行バックアップ オペレーションを一覧表示して、バックアップ オペレーション名を取得することもできます。

  3. [実行] をクリックします。

インスタンス オペレーション

長時間実行インスタンス オペレーションには次のものがあります。

長時間実行インスタンス オペレーションのステータスを取得する

projects.instances.operations.get を使用すると、長時間実行インスタンス オペレーションのステータスを取得できます。

たとえば、projects.instances.create からのレスポンスは次のようになります。

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceMetadata",
    "instance": {
      "name": "projects/[PROJECT_ID]/instances/test-instance",
      "config": "projects/[PROJECT_ID]/instanceConfigs/regional-us-central1",
      "displayName": "Test Instance",
      "nodeCount": 1,
      "state": "READY"
    },
    "startTime": "2017-04-24T22:45:41.130854Z"
  }
}

レスポンスの一番上にある name 値は、Spanner サービスが projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e という名前の長時間実行インスタンス オペレーションを作成したことを表します。

長時間実行インスタンス オペレーションのステータスを取得するには:

  1. projects.instances.operations.get をクリックします。
  2. [name] で、projects.instances.create または projects.instances.patch へのレスポンスに表示されるとおりの長時間実行インスタンス オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行インスタンス オペレーションの一覧表示で取得することもできます。

  3. [実行] をクリックしてレスポンスを表示します。オペレーションが完了すると、done フィールドが true に設定されます。

長時間実行インスタンス オペレーションをポーリングするには、オペレーションが完了するまで繰り返し projects.instances.operations.get メソッドを呼び出します。各ポーリング リクエスト間でバックオフを使用します。たとえば、10 秒ごとにポーリングします。

長時間実行インスタンス オペレーションの一覧表示

projects.instances.operations.list を使用すると、長時間実行インスタンス オペレーションを一覧表示できます。

  1. projects.instances.operations.list をクリックします。
  2. [name] に以下のように入力します。

    projects/[PROJECT_ID]/instances/test-instance/operations
    
  3. [Execute] をクリックします。レスポンスに長時間実行インスタンス オペレーションが表示されます。

長時間実行インスタンス オペレーションをキャンセルする

projects.instances.operations.cancel を使用すると、長時間実行インスタンス オペレーションをキャンセルできます。

  1. projects.instances.operations.cancel をクリックします。
  2. [name] で、長時間実行インスタンス オペレーションのレスポンスに表示されるとおりの長時間実行インスタンス オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行インスタンス オペレーションの一覧表示で取得することもできます。

  3. [実行] をクリックします。

長時間実行インスタンス オペレーションを削除する

projects.instances.operations.delete を使用すると、長時間実行インスタンス オペレーションを削除できます。

  1. projects.instances.operations.delete をクリックします。
  2. [name] で、長時間実行インスタンス オペレーションのレスポンスに表示されるとおりの長時間実行インスタンス オペレーション名を入力します。次に例を示します。

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行インスタンス オペレーションの一覧表示で取得することもできます。

  3. [実行] をクリックします。