このページでは、オペレーション API を使用して Cloud Spanner の長時間実行オペレーションのライフサイクルを管理する方法を説明します。
長時間実行オペレーションとは、完了までに膨大な時間がかかる可能性があるメソッドの呼び出しです。Spanner はデータベース、インスタンス、バックアップの複数のアクションについて長時間実行オペレーションを作成します。その一例は、データベースを復元するメソッド projects.instances.databases.restore
です。データベースを復元すると、Spanner サービスは復元の進行状況を追跡するための長時間実行オペレーションを作成します。Spanner のオペレーション API では長時間実行オペレーションのステータスを確認できます。長時間実行オペレーションの一覧表示やキャンセル、長時間実行インスタンス オペレーションの削除を行うこともできます。
このページでは、REST API を使用して長時間実行オペレーションを管理する方法について説明します。ただし、次の方法で長時間実行オペレーションを管理することもできます。
- Spanner クライアント ライブラリ
gcloud
コマンドライン ツール- Google Cloud コンソールの Spanner ページ
Spanner の長時間実行オペレーションは次の各メソッドで管理できます。
アクション | 長時間実行データベース オペレーション | 長時間実行バックアップ オペレーション | 長時間実行インスタンス オペレーション |
---|---|---|---|
長時間実行オペレーションをキャンセルする | cancel |
cancel |
cancel |
長時間実行オペレーションを削除する | 未対応 | 未対応 | delete |
長時間実行オペレーションのステータスを取得する | get |
get |
get |
長時間実行オペレーションを一覧表示する | list |
list |
list |
データベース オペレーション
長時間実行データベース オペレーションには次のものがあります。
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.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
という名前の長時間実行データベース オペレーションを作成したことを表します。
長時間実行データベース オペレーションのステータスを取得するには:
projects.instances.databases.operations.get
をクリックします。[name] で、
projects.instances.databases.create
またはprojects.instances.databases.updateDdl
へのレスポンスに表示されるとおりの長時間実行データベース オペレーション名を入力します。次に例を示します。projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
(この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行データベース オペレーションの一覧表示で取得することもできます。
[実行] をクリックしてレスポンスを表示します。オペレーションが完了すると、
done
フィールドがtrue
に設定されます。
長時間実行データベース オペレーションをポーリングするには、オペレーションが完了するまで繰り返し projects.instances.databases.operations.get
メソッドを呼び出します。各ポーリング リクエスト間でバックオフを使用します。たとえば、10 秒ごとにポーリングします。
長時間実行データベース オペレーションを一覧表示する
projects.instances.databases.operations.list
を使用すると、長時間実行データベース オペレーションを一覧表示できます。
projects.instances.databases.operations.list
をクリックします。[name] に以下のように入力します。
projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations
[Execute] をクリックします。レスポンスに長時間実行データベース オペレーションが表示されます。
長時間実行データベース オペレーションをキャンセルする
projects.instances.databases.operations.cancel
を使用すると、長時間実行データベース オペレーションをキャンセルできます。
projects.instances.databases.operations.cancel
をクリックします。[name] で、長時間実行データベース オペレーションのレスポンスに表示されるとおりの長時間実行データベース オペレーション名を入力します。次に例を示します。
projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
(この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行データベース オペレーションの一覧表示で取得することもできます。
[実行] をクリックします。
バックアップ オペレーション
長時間実行バックアップ オペレーションには次のものがあります。
長時間実行バックアップ オペレーションのステータスを取得する
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
という名前の長時間実行バックアップ オペレーションを作成したことを表します。
長時間実行バックアップ オペレーションのステータスを取得するには:
projects.instances.backups.operations.get
をクリックします。[name] で、
projects.instances.backups.create
へのレスポンスに表示されるとおりの長時間実行バックアップ オペレーション名を入力します。次に例を示します。projects/[PROJECT_ID]/instances/test-instance/backups/example-db/operations/_auto_1492721321097206
(この値の代わりに、取得したオペレーション名を使用します)長時間実行バックアップ オペレーションを一覧表示して、バックアップ オペレーション名を取得することもできます。
[実行] をクリックしてレスポンスを表示します。オペレーションが完了すると、
done
フィールドがtrue
に設定されます。
長時間実行バックアップ オペレーションをポーリングするには、オペレーションが完了するまで繰り返し projects.instances.backups.operations.get
メソッドを呼び出します。各ポーリング リクエスト間でバックオフを使用します。たとえば、10 秒ごとにポーリングします。
長時間実行バックアップ オペレーションを一覧表示する
単一のバックアップのオペレーションを一覧表示するには projects.instances.backups.operations.list
を、インスタンス内のすべてのバックアップ オペレーションを一覧表示するには projects.instances.backupOperations.list
を使用します。
projects.instances.backups.operations.list
をクリックします。[name] に以下のように入力します。
projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations
[実行] をクリックします。レスポンスには長時間実行オペレーションが含まれます。
長時間実行バックアップオペレーションのキャンセル
projects.instances.backups.operations.cancel
を使用すると長時間実行バックアップ オペレーションをキャンセルできます。
projects.instances.backups.operations.cancel
をクリックします。[name] で、長時間実行バックアップ オペレーションのレスポンスに表示されるとおりの長時間実行バックアップ オペレーション名を入力します。次に例を示します。
projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations/_auto_1492721321097206
(この値の代わりに、取得したオペレーション名を使用します)長時間実行バックアップ オペレーションを一覧表示して、バックアップ オペレーション名を取得することもできます。
[実行] をクリックします。
インスタンス オペレーション
長時間実行インスタンス オペレーションには次のものがあります。
長時間実行インスタンス オペレーションのステータスを取得する
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
という名前の長時間実行インスタンス オペレーションを作成したことを表します。
長時間実行インスタンス オペレーションのステータスを取得するには:
projects.instances.operations.get
をクリックします。[name] で、
projects.instances.create
またはprojects.instances.patch
へのレスポンスに表示されるとおりの長時間実行インスタンス オペレーション名を入力します。次に例を示します。projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
(この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行インスタンス オペレーションの一覧表示で取得することもできます。
[実行] をクリックしてレスポンスを表示します。オペレーションが完了すると、
done
フィールドがtrue
に設定されます。
長時間実行インスタンス オペレーションをポーリングするには、オペレーションが完了するまで繰り返し projects.instances.operations.get
メソッドを呼び出します。各ポーリング リクエスト間でバックオフを使用します。たとえば、10 秒ごとにポーリングします。
長時間実行インスタンス オペレーションの一覧表示
projects.instances.operations.list
を使用すると、長時間実行インスタンス オペレーションを一覧表示できます。
projects.instances.operations.list
をクリックします。[name] に以下のように入力します。
projects/[PROJECT_ID]/instances/test-instance/operations
[Execute] をクリックします。レスポンスに長時間実行インスタンス オペレーションが表示されます。
長時間実行インスタンス オペレーションをキャンセルする
projects.instances.operations.cancel
を使用すると、長時間実行インスタンス オペレーションをキャンセルできます。
projects.instances.operations.cancel
をクリックします。[name] で、長時間実行インスタンス オペレーションのレスポンスに表示されるとおりの長時間実行インスタンス オペレーション名を入力します。次に例を示します。
projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
(この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行インスタンス オペレーションの一覧表示で取得することもできます。
[実行] をクリックします。
長時間実行インスタンス オペレーションを削除する
projects.instances.operations.delete
を使用すると、長時間実行インスタンス オペレーションを削除できます。
projects.instances.operations.delete
をクリックします。[name] で、長時間実行インスタンス オペレーションのレスポンスに表示されるとおりの長時間実行インスタンス オペレーション名を入力します。次に例を示します。
projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
(この値の代わりに、取得したオペレーション名を使用します)データベース オペレーション名は長時間実行インスタンス オペレーションの一覧表示で取得することもできます。
[実行] をクリックします。