Spanner データベースのバックアップを新しいデータベースに復元できます。復元されたデータベースには、バックアップの version_time
にある元のデータベースのすべてのデータとスキーマが含まれます。ALTER DATABASE SET OPTIONS
コマンドで設定されたすべてのデータベース オプションも含まれます。
IAM 権限は、復元されたデータベースが含まれているインスタンスから継承されたものを除き付与されていません。復元が完了したら、適切な IAM 権限を適用する必要があります。変更ストリームの内部データは含まれません。バックアップから復元する場合、復元されたバックアップはソース バックアップと同じインスタンス、リージョン、プロジェクト内に存在します。コンプライアンス上またはビジネス継続性の理由から、別のリージョンまたはプロジェクトのバックアップから復元する必要がある場合は、別のリージョンのインスタンスにバックアップをコピーできます。その後、コピーしたバックアップから復元します。
バックアップからの復元は、次の方法で使用できます。
- Google Cloud コンソールの場合
- Google Cloud CLI の使用
- クライアント ライブラリの使用
- REST または RPC API の使用
バックアップと復元の概要については、バックアップと復元についてをご覧ください。
バックアップからの復元の仕組み
Spanner データベースを復元する場合は、ソース バックアップと新しいターゲット データベースを指定する必要があります。既存のデータベースに復元することはできません。
新しいデータベースはバックアップと同じプロジェクトに存在し、バックアップと同じインスタンス構成でインスタンスに存在している必要があります。たとえば、us-west3
が構成されたインスタンスにバックアップが存在している場合、同様に us-west3
が構成されているプロジェクト内の任意のインスタンスに復元できます。インスタンスのコンピューティング容量は、同じである必要はありません。
復元プロセスは高可用性向けに設計されています。インスタンス内のリージョンとゾーンのクォーラムの大部分が使用可能であれば、データベースを復元できます。
CMEK を有効化したバックアップを復元するには、鍵と鍵バージョンの両方が Spanner で使用できる必要があります。デフォルトでは、復元されたデータベースはバックアップと同じ暗号化構成を使用します。この動作は、データベースの復元時に別の暗号化構成を指定することでオーバーライドできます。詳細については、CMEK を有効化したバックアップからの復元をご覧ください。
バックアップを別のリージョンまたはプロジェクトに復元する
バックアップを別のリージョンまたはプロジェクトに復元する必要がある場合は、まずバックアップを選択したリージョンまたはプロジェクトにコピーします。コピーが完了したバックアップは、コピーが完了したらすぐに復元できます。宛先インスタンス、または宛先インスタンスと同じインスタンス構成を持つ任意のインスタンスのいずれかで、バックアップを復元できます。復元を行う前に、宛先インスタンスに、ノードあたり 4 TB のストレージ上限に従ってデータベース サイズをサポートするのに十分なノードまたは処理ユニットがプロビジョニングされていることを確認します(たとえば、8 TB バックアップを復元するには少なくとも 2 つのノードが必要です)。バックアップを別のプロジェクトにコピーしていて、そのプロジェクトに復元する場合は、復元に必要な十分なノード割り当てが宛先プロジェクトにあることを確認してください。コピーしたバックアップの復元は、通常の復元と同じように機能します。
復元状態
復元されたデータベースは、2 つの長時間実行オペレーションによって追跡される 3 つの状態に順次移行します。
CREATING
: Spanner は、新しいデータベースを作成し、バックアップからファイルをマウントすることによって、復元を開始します。この最初のCREATING
状態では、復元されたデータベースはまだ使用できません。通常、この状態は 1 時間以内に完了します。CREATING
状態が完了すると、データベースを使用できるようになります。この状態の進行状況を追跡するには、このプロセス中に Spanner で使用可能な長時間実行復元オペレーションをクエリで取得します。
RestoreDatabaseMetadata
オブジェクトが返されます。CREATING
状態については、次の点にご注意ください。- 別のインスタンスに復元する場合、復元オペレーションは、バックアップが含まれているインスタンスではなく、復元されたデータベースが含まれているインスタンスに属します。
- Spanner では、復元中のバックアップは削除できません。削除できるのは、復元が完了してデータベースが
READY
状態になってからです。 - バックアップからの復元が原因で、インスタンスに
CREATING
状態のデータベースが含まれることがありますが、最大 10 個です。復元された 10 個のデータベースのいずれかがREADY_OPTIMIZING
またはREADY
状態に移行するまで、別のバックアップをインスタンスに復元することはできません。
READY_OPTIMIZING
: Spanner は、バックアップをマウントした後、保存サイズを最適化しながらバックアップ データを新しいデータベースにコピーします。このプロセスでデータベースの使用準備が完了します。サイズが 100 TB 未満のデータベースの場合、この復元のフェーズが完了するまでに数時間かかります。READY_OPTIMIZING
中はデータベースを通常どおり使用できますが、次の点に注意してください。- 読み取りレイテンシが通常よりも若干高くなる場合があります。
- ストレージ指標には、バックアップではなく、新しいデータベースのサイズが表示されます。そのため、データ転送の進行中に、Spanner ストレージの指標にすべてのデータの合計サイズが反映されない結果が表示されることがあります。
CREATING
状態と同様に、Spanner ではマウントされたバックアップを削除できません。
Spanner では、この状態の間に、別の長時間実行復元オペレーションが利用可能になります。今回は、
OptimizeRestoredDatabaseMetadata
メタデータ オブジェクトが返されます。READY
: コピーと最適化のオペレーションが完了すると、データベースはREADY
状態に移行します。データベースが完全に復元され、バックアップを参照する必要がなくなり、バックアップも不要になります。
アクセス制御(IAM)
ロール spanner.restoreAdmin
は、バックアップから復元する権限を付与します。詳しくは、IAM によるアクセス制御をご覧ください。
料金
バックアップからの復元は無料です。
次のステップ
バックアップと復元の詳細を確認する。
Google Cloud コンソール を使用してバックアップを操作する方法を学習します。
Google Cloud CLI を使用してバックアップを操作する方法を学習します。
クライアント ライブラリを使用してバックアップを操作する方法を学習します。