このページでは、Google Cloud CLI で Spanner のバックアップと復元を使用する方法について説明します。
前提条件
このページの例では、次のことを前提としています。
Spanner で使用する gcloud CLI をすでに設定している。Spanner で Google Cloud CLI を初めて使用する場合は、Google Cloud CLI で Spanner を使ってみるをご覧ください。
デフォルト プロジェクトで Google Cloud CLI を構成している。例:
gcloud config set core/project my-project
test-instance
という名前のインスタンスとexample-db
という名前のデータベースがあります。
バックアップの作成
example-db-backup-6
という名前のバックアップを作成し、有効期限を 1 年に設定するには、gcloud spanner backups create
を使用します。
gcloud spanner backups create example-db-backup-6 --instance=test-instance \
--database=example-db --retention-period=1y --async
使用上の注意:
- バックアップの有効期限を設定するには、
--retention-period
または--expiration-date
フラグを指定します。日付の構文については、gcloud topic datetimes をご覧ください。 - バックアップ名はインスタンス内で一意にする必要があります。
- このコマンドは、
--async
フラグが指定されているためすぐに戻ります。フラグを指定しなければ、このコマンドはバックアップ オペレーションが完了するまで待機します。 コマンドのヘルプを表示するには、
--help
フラグを指定します。出力は次のようになります。
Create request issued for: [example-db-backup-6] Check operation [projects/my-project/instances/test-instance/backups/example-db-backup-6/operations/_auto_op_234567] for status.
バックアップ オペレーションの進行状況を確認するには、オペレーションの進行状況を確認するをご覧ください。
バックアップのコピー
同じプロジェクト内に存在する別のインスタンスにバックアップをコピーするには:
gcloud spanner backups copy \
--source-instance=test-instance \
--source-backup=example-db \
--destination-instance=backup-instance \
--destination-backup=copied-backup \
--expiration-date=2022-03-30T10:49:41Z
別のプロジェクトに存在する別のインスタンスにバックアップをコピーするには:
gcloud spanner backups copy \
--source-backup=projects/my-project/instances/test-instance/backups/example-db \
--destination-backup=projects/backup-project/instances/backup-instance-eu/backups/copied-backup \
--expiration-date=2022-03-30T10:49:41Z
使用上の注意:
- 同じプロジェクト内の別のインスタンスにバックアップをコピーする場合は、コピーしたバックアップ用に新しいインスタンスを作成する(または準備が完了しているインスタンスが存在する)必要があります。前の例では、
backup-instance
が使用されています。バックアップ コピー オペレーションの一部として新しいインスタンスを作成することはできません。 - バックアップを別のプロジェクトにコピーする場合は、コピーしたバックアップ用に独自のインスタンスが準備された別のプロジェクトが必要です。前の例では、
backup-project
が使用されています。バックアップ コピー オペレーションの一部として、新しいプロジェクトを作成することはできません。 - バックアップの有効期限は、現在のコピー リクエストが処理されてから 6 時間以上後、かつソース バックアップ
create_time
から 366 日以内であることが必要です。
出力は次のようになります。
createTime: '2022-03-29T22:06:05.905823Z'
database: projects/my-project/instances/test-instance/databases/example-db
databaseDialect: GOOGLE_STANDARD_SQL
encryptionInfo:
encryptionType: GOOGLE_DEFAULT_ENCRYPTION
expireTime: '2022-03-30T10:49:41Z'
maxExpireTime: '2023-03-17T20:46:33.479336Z'
name: projects/backup-project/instances/backup-instance-eu/backups/copied-backup
sizeBytes: '7957667'
state: READY
versionTime: '2022-03-16T20:46:33.479336Z'
コピー オペレーションの進行状況を確認するには、オペレーションの進行状況を確認するをご覧ください。
バックアップからのデータベースの復元
データベースを復元するには、gcloud spanner databases restore
を使用します。
gcloud spanner databases restore --async \
--destination-instance=test-instance --destination-database=example-db-restored \
--source-instance=test-instance --source-backup=example-db-backup-6
使用上の注意:
- このコマンドは、
--async
フラグが指定されているためすぐに戻ります。フラグを指定しなければ、このコマンドは復元オペレーションが完了するまで待機します。 - ソースと宛先のインスタンスが異なる場合は、同じインスタンス構成にする必要があります。
- 宛先にデータベースがすでに存在する場合、オペレーションは失敗します。
出力は次のようになります。
Restore database in progress. Operation name=projects/my-project/instances/test-instance/databases/example-db-restored-1/operations/_auto_op_bb8e360b256b04bf
復元オペレーションの進行状況を追跡するには、オペレーションの進行状況を確認するをご覧ください。
オペレーションの進行状況を確認する
gcloud spanner operations describe
を使用してオペレーションの進行状況を確認します。
オペレーション ID を取得します。
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=BACKUP
以下を置き換えます。
- INSTANCE-NAME は、Spanner インスタンス名に置き換えます。
- DATABASE-NAME は、データベースの名前に置き換えます。
使用上の注意:
表示内容を限定するには、
--filter
フラグを指定します。次に例を示します。--filter="metadata.name:example-db"
は、特定のデータベースのオペレーションのみを一覧表示します。--filter="error:*"
は、失敗したバックアップ オペレーションのみを一覧表示します。
フィルタ構文の詳細については、gcloud topic filters をご覧ください。バックアップ オペレーションのフィルタリングについては、ListBackupOperationsRequest の
filter
フィールドをご覧ください。--type
フラグでは大文字と小文字は区別されません。
出力は次のようになります。
OPERATION_ID DONE @TYPE BACKUP SOURCE_DATABASE START_TIME END_TIME _auto_op_123456 True CreateBackupMetadata example-db-backup-7 example-db 2020-02-04T02:12:38.075515Z 2020-02-04T02:22:40.581170Z _auto_op_234567 True CreateBackupMetadata example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2020-02-04T02:07:59.089820Z ```
gcloud spanner operations describe
を実行します。gcloud spanner operations describe OPERATION-ID \ --instance=INSTANCE-NAME \ --backup=BACKUP-NAME \
以下を置き換えます。
- OPERATION-ID: 確認するオペレーションのオペレーション ID。
- INSTANCE-NAME: Spanner インスタンス名。
- BACKUP-NAME: Spanner バックアップ名。
出力の
progress
セクションに完了したオペレーションの割合が表示されます。出力は次のようになります。done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
オペレーションに時間がかかりすぎる場合、キャンセルできます。詳細については、長時間実行バックアップ オペレーションをキャンセルするをご覧ください。
バックアップ情報の取得
バックアップに関する情報を取得するには、次の操作を行います。
gcloud spanner backups describe example-db-backup-6 --instance=test-instance
出力は次のようになります。
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2021-02-04T02:05:43.268327Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
このコマンドの詳細については、gcloud spanner backups describe
をご覧ください。
バックアップを一覧表示する
インスタンス内のすべてのバックアップを一覧表示するには、次の操作を行います。
gcloud spanner backups list --instance=test-instance
出力は次のようになります。
BACKUP SOURCE_DATABASE CREATION_TIME EXPIRATION_TIME STATE BACKUP_SIZE_IN_BYTES IN_USE_BY
example-db-backup-6 example-db 2020-02-04T02:05:43.920377Z 2021-02-04T02:05:43.268327Z CREATING
example-db-backup-4 example-db 2020-02-04T01:21:20.873839Z 2021-02-04T01:21:20.530151Z READY 32
example-db-backup-3 example-db 2020-02-03T23:59:18.936433Z 2021-02-03T23:59:18.203083Z READY 32
example-db-backup-5 example-db 2020-02-03T23:48:06.259296Z 2021-02-03T23:48:05.830937Z READY 32
example-db-backup-2 example-db 2020-01-30T19:49:00.616338Z 2021-01-30T19:49:00.283917Z READY 32
example-db-backup-1 example-db 2020-01-30T19:47:09.492551Z 2021-01-30T19:47:09.097804Z READY 32
表示内容を限定するには、--filter
フラグを指定します。たとえば、--filter="state:creating"
は作成中のバックアップのみを一覧表示します。
フィルタ構文の詳細については、gcloud topic filters をご覧ください。バックアップのフィルタリングについては、ListBackupsRequest の filter
フィールドをご覧ください。
このコマンドの詳細については、gcloud spanner backups list
をご覧ください。
バックアップ メタデータの更新
バックアップの有効期限を更新するには、次の操作を行います。
gcloud spanner backups update-metadata example-db-backup-6 \
--instance=test-instance --expiration-date=2020-05-05T00:00:00Z
出力は次のようになります。
createTime: '2020-02-04T02:05:43.920377Z'
database: projects/my-project/instances/test-instance/databases/example-db
expireTime: '2020-05-05T00:00:00Z'
name: projects/my-project/instances/test-instance/backups/example-db-backup-6
sizeBytes: '1000000000'
state: READY
このコマンドの詳細については、gcloud spanner backups update-metadata
をご覧ください。
バックアップを削除
バックアップを削除するには、次の操作を行います。
gcloud spanner backups delete example-db-backup-1 --instance=test-instance
この操作を確認する必要があります。
You are about to delete backup [example-db-backup-1]
Do you want to continue (Y/n)? Y
Deleted backup [example-db-backup-1].
このコマンドの詳細については、gcloud spanner backups delete
をご覧ください。