ユーザーは任意の Spanner データベースのバックアップを作成できます。このバックアップは、version_time
時点でのバックアップに、すべてのデータを含むデータベース(スキーマとセカンダリ インデックスを含む)があるという意味で完全です。そのバックアップには、version_time
より後に行われたデータやスキーマの変更は含まれません。バックアップには、ALTER DATABASE SET OPTIONS
コマンドで設定したデータベース オプションがすべて含まれますが、Identity and Access Management(IAM)ポリシーは含まれません。バックアップを作成すると、そのバックアップは、ソース データベースと同じインスタンス、リージョン、プロジェクトに配置されます。
バックアップは次の方法で作成できます。
- Google Cloud コンソールの場合:
- Google Cloud CLI の使用
- クライアント ライブラリの使用
- REST または RPC API の使用
バックアップと復元の概要については、バックアップと復元についてをご覧ください。
バックアップの作成の仕組み
バックアップを作成する際に、ソース データベース、バックアップ リソースの名前、有効期限(バックアップの作成時から最長 1 年)を指定する必要があります。必要に応じて、version_time
を指定することもできます。これを使用して、前の時点でのデータベースをバックアップできます。version_time
フィールドは通常、複数のデータベースのバックアップを同期させる、またはポイントインタイム リカバリを使用してデータを復元する目的に使用されます。version_time
が指定されていない場合、バックアップの create_time
に設定されます。バックアップの進行状況を追跡するために、バックアップ リソースと長時間実行バックアップ オペレーションが作成されます。新しく作成されたバックアップは、ソース データベースと同じインスタンス、リージョン、プロジェクトに配置されます。
バックアップの外部整合性を確保するために、Spanner によって、データベースのコンテンツが create_time
に固定されます。これにより、バックアップ オペレーションの実行中は、ガベージ コレクション システムによって関連するデータ値が削除されることが回避されます。その後、インスタンス内のすべての読み取り/書き込みゾーンと読み取り専用ゾーンで同時にデータのコピーが開始されます。ゾーンが一時的に使用不可になっている場合、そのゾーンがオンラインに戻って完了するまでバックアップは完了しません。オペレーションが完了したら、すぐにバックアップを復元できます。マルチリージョン インスタンスの場合、すべてのリージョンのすべての読み取り/書き込みゾーンと読み取り専用ゾーンは、バックアップが復元可能としてマークされる前にバックアップ レプリカを完了する必要があります。
バックアップには、データベースの変更ストリームのスキーマも含まれますが、既存の変更レコードは含まれません。変更ストリーム データは、それが説明する変更とほぼ同時にストリーミングして使用されます。そのため、Spanner はバックアップからこのデータを除外します。
暗号化
Spanner バックアップは、データベースなど、Google 管理または顧客管理のいずれかの暗号化によって暗号化されます。バックアップには、デフォルトでデータベースと同じ暗号化構成が使用されますが、バックアップの作成時に別の暗号化構成を指定することで、この動作をオーバーライドできます。バックアップが CMEK 対応の場合は、バックアップの作成時に KMS 鍵のプライマリ バージョンを使用して暗号化されます。一旦バックアップが作成されると、KMS 鍵がローテーションされても、その鍵と鍵バージョンを変更することはできません。詳細については、CMEK を有効化したバックアップの作成をご覧ください。
リソース階層
バックアップは Spanner のリソースです。各バックアップ リソースは、リソース階層内のソース データベースと同じインスタンスごとにまとめられ、リソースパスは projects/<project>/instances/<instance>/backups/<backup>
形式になります。ソース データベースが削除された後もバックアップは存在し続けますが、親インスタンスより長く存続することはできません。バックアップがある場合は、バックアップが誤って削除されないようにするために、Spanner インスタンスを削除できません。インスタンスを削除する場合は、バックアップとインスタンスを削除する前に、バックアップを復元し、復元したデータベースをエクスポートすることをおすすめします。
バックアップの時間とパフォーマンス
バックアップを実行すると、Spanner はデータベースからバックアップ ストレージにデータを直接コピーするバックアップ ジョブを作成し、このジョブのサイズをデータベースのサイズに基づいて設定します。このバックアップ ジョブは、データベースのインスタンスに割り当てられた CPU リソースを使用しないため、インスタンスのパフォーマンスには影響しません。 また、データベースのインスタンスのコンピューティング負荷はバックアップ オペレーションの速度には影響しません。バックアップ オペレーションの進行状況と完了を追跡するには、バックアップの進捗状況の表示をご覧ください。
目安として、ほとんどのバックアップには 1 ~ 4 時間かかります。一部のバックアップは、サイズや、リソースの内部キューがあるため、時間がかかる可能性があります。他の要素が変更されていない状態でバックアップの時間が通常よりかかる場合は、ゾーン内のバックアップ タスクのスケジューリングが遅れている可能性があります。この処理には、最大で 30 分かかる場合があります。新しいバックアップでも同じスケジューリングの遅れが発生する可能性があるため、バックアップのキャンセルと再起動はしないことをおすすめします。
アクセス制御(IAM)
spanner.backupAdmin
ロールと spanner.backupWriter
ロールによって、バックアップを作成する権限が付与されます。いずれかのロールを使用して、インスタンスでバックアップ作成リクエストを呼び出すことができます。詳しくは、IAM によるアクセス制御をご覧ください。
料金
料金は、単位時間あたりのバックアップで使用されるストレージの量に基づいて課金されます。バックアップ オペレーションが完了すると課金が開始され、バックアップが削除されるまで継続されます。作成が完了したバックアップには、最低でも 24 時間分の料金が発生します。バックアップを作成し、完了してから 1 分後に削除した場合でも、24 時間分の料金が請求されます。
次のステップ
バックアップと復元の詳細を確認する。
Google Cloud コンソール を使用してバックアップを操作する方法を学習します。
Google Cloud CLI を使用してバックアップを操作する方法を学習します。
クライアント ライブラリを使用してバックアップを操作する方法を学習します。