新しいデータベースに Spanner データベースのバックアップを復元できます。復元されたデータベースには、バックアップの version_time
にある元のデータベースのすべてのデータとスキーマが含まれます。ALTER DATABASE SET OPTIONS
コマンドで設定されたすべてのデータベース オプションも含まれます。
IAM 権限は、復元されたデータベースが含まれているインスタンスから継承されたものを除き付与されていません。復元が完了したら、適切な IAM 権限を適用する必要があります。変更ストリームの内部データは含まれません。バックアップから復元すると、復元されたバックアップは、ソース バックアップと同じインスタンス、リージョン、プロジェクトに配置されます。コンプライアンス上またはビジネス継続性の理由から、別のリージョンまたはプロジェクトのバックアップから復元する必要がある場合は、別のリージョンのインスタンスにバックアップをコピーできます。その後、コピーしたバックアップから復元します。
次の方法でバックアップから復元できます。
- Google Cloud コンソールの場合
- Google Cloud CLI の使用
- クライアント ライブラリの使用
- REST または RPC API の使用
バックアップからのデータベース復元の仕組み
Spanner データベースを復元する場合は、ソース バックアップと新しいターゲット データベースを指定する必要があります。既存のデータベースに復元することはできません。
新しいデータベースはバックアップと同じプロジェクトに存在し、バックアップと同じインスタンス構成、同じ(または上位の)Spanner エディションでインスタンスに存在している必要があります。たとえば、Enterprise エディションで us-west3
が構成されたインスタンスにバックアップが存在している場合、同様に Enterprise エディションで us-west3
が構成されているプロジェクト内の任意のインスタンスに復元できます。Enterprise エディション インスタンスのバックアップを Standard エディション インスタンスに復元する場合、データベースが Enterprise エディションの機能を使用している場合、復元が失敗することがあります。インスタンスのコンピューティング容量は、同じである必要はありません。
復元プロセスは高可用性向けに設計されています。インスタンス内のリージョンとゾーンのクォーラムの大部分が使用可能であれば、データベースを復元できます。
CMEK を有効化したバックアップを復元するには、鍵と鍵バージョンの両方が Spanner で使用できる必要があります。デフォルトでは、復元されたデータベースはバックアップと同じ暗号化構成を使用します。この動作は、データベースの復元時に別の暗号化構成を指定することでオーバーライドできます。詳細については、CMEK を有効化したバックアップからの復元をご覧ください。
別のリージョンまたはプロジェクトにバックアップを復元する
バックアップを別のリージョンまたはプロジェクトに復元する必要がある場合は、まず、選択したリージョンまたはプロジェクトにバックアップをコピーします。コピーされたバックアップは、コピーが完了するとすぐに復元できます。バックアップは、宛先インスタンス(ソース バックアップ インスタンスと同じエディションを使用している場合)、または宛先インスタンスと同じインスタンス構成と同じ(または上位の)エディションを持つ任意のインスタンスで復元できます。復元を行う前に、宛先インスタンスに、ノードあたり 10 TB のストレージ上限に従ってデータベース サイズをサポートするのに十分なノードまたは処理ユニットがプロビジョニングされていることを確認します(つまり、20 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 によるアクセス制御をご覧ください。
次のロールでは、Spanner の復元オペレーションにもアクセスできます。
spanner.admin
: 復元するための完全アクセス権があります。このロールには、すべての Spanner リソースへの完全アクセス権があります。owner
: 復元するための完全アクセス権があります。editor
: 復元するための完全アクセス権があります。viewer
: 復元と復元オペレーションを表示するためのアクセス権があります。このロールでは、バックアップの作成、更新、削除、コピーはできません。
料金
バックアップからの復元は無料です。
次のステップ
- バックアップからデータベースを復元するには、バックアップからの復元をご覧ください。