このドキュメントでは、データを損失やダウンタイムから保護するために役立つ障害復旧ツールと手法について説明します。
Spanner の障害復旧機能
Spanner は、スケーラブルかつグローバルに分散されるように設計されています。Spanner には、データの高可用性を実現するための次の機能が用意されています。
マルチリージョン構成: Spanner は、単一のリージョンまたは複数のリージョン内の個別のゾーンにデータのレプリカを維持できるため、ゾーンまたはリージョンで障害が発生してもデータの可用性を維持できます。
データベースの削除保護: データベースの削除に必要な Identity and Access Management(IAM)権限を持つユーザーまたはサービス アカウントによる既存のデータベースの誤った削除を防ぐことができます。
データベースのバックアップと復元: Spanner データベースのバックアップを作成して復元することで、オペレーター エラーやアプリケーション エラーから保護できます。すべてのバックアップは可用性が高く、暗号化され、作成後の最大 1 年間保持できます。フル バックアップは、オンデマンドで作成することも、バックアップ スケジュールを使用して作成することもできます。増分バックアップは、バックアップ スケジュールを使用しての作成できます。
エクスポートとインポート: Spanner データベースを CSV 形式または Avro 形式で Cloud Storage にエクスポートできます。
ポイントインタイム リカバリ(PITR): Spanner のポイントインタイム リカバリ(PITR)は、論理データの破損、データベースの偶発的な削除や書き込みから保護します。たとえば、オペレーターがデータを誤って書き込みした場合や、アプリケーションの起動によってデータベースが破損した場合は、最長で過去 7 日前までのデータを復元できます。
クロスリージョン コピー: バックアップを異なる地理的なリージョンにコピーして、リージョン障害からデータを保護したり、組織のコンプライアンス要件を満たしたりできます。
データベースのバックアップとエクスポートのどちらかを選択する
どちらを使用するかを決定する前に、データベースのバックアップとデータベースのエクスポートを比較します。たとえば、バックアップの最長保持期間は 1 年です。1 年を超える保持期間が必要な場合は、データベースのエクスポートを検討してください。次の表に、バックアップと復元を使用する場合と、インポートとエクスポートを使用する場合の類似点と相違点を示します。
バックアップと復元 | インポートとエクスポート | |
---|---|---|
データの整合性 | バックアップとエクスポートされたデータベースの両方が、トランザクションと外部一貫性を備えています。 | |
パフォーマンスへの影響 | バックアップが、インスタンスのパフォーマンスに影響を与えることはありません。Spanner では、バックアップが、インスタンスのサーバー リソースを利用しない専用ジョブを使用して実行されます。 | エクスポートは、データベースのパフォーマンスへの影響を最小限に抑えるため、優先度が中のタスクとして実行されます。詳細については、タスク優先度をご覧ください。 |
ストレージ形式 | 高速での復元用に設計された独自の暗号化された形式を使用します。 | CSV とAvro の両方のファイル形式がサポートされます。 |
ポータビリティ | バックアップは、元のデータベースと同じインスタンスにcreateできます。 バックアップを作成した後は、リージョンやプロジェクトをまたぐバックアップが必要な場合に、バックアップを異なるリージョンやプロジェクトにあるインスタンスへコピーできます。そうして、バックアップから同じプロジェクト内の任意のインスタンスに新しいデータベースとしてrestoreできます。復元する先のインスタンスは、バックアップが保存されているインスタンスと同じインスタンス構成にする必要があります。 |
エクスポートされたデータベースは Google Cloud Storage に存在し、CSV または Avro をサポートしている任意のシステムにデータを移行できます。 |
保持 | バックアップは最長 1 年間保持できます。 | エクスポートされたデータベースは Cloud Storage に保存され、デフォルトでは削除されるまで保持されます。ライフサイクルと保持ポリシーをカスタマイズできます。 |
料金 | バックアップは、単位時間あたりの使用容量に基づいて Spanner プロジェクトに対して課金されます。詳細については、料金ガイドのセクションをご覧ください。 | インポートとエクスポートの課金は、Google Cloud Storage と Dataflow を使用しているため、より複雑になります。詳細については、データベースのエクスポートとインポートの料金をご覧ください。 |
復元時間 | 復元は、復元と最適化の 2 つのオペレーションで行われます。復元オペレーションでは、データをコピーすることなくデータベースでバックアップが直接マウントされるため、最初のバイト転送時間が短縮されます。復元オペレーションが完了すると、データベースを使用できるようになりますが、最適化中は読み取りレイテンシが若干高くなる場合があります。詳しくは、復元の仕組みをご覧ください。 | インポートには時間がかかります。すべてのデータがデータベースに書き込まれるのを待つ必要があります。 |
障害復旧手法
Spanner には、次の障害からデータを保護するための障害復旧手法が用意されています。
- ゾーン障害: Spanner のリージョン構成では、ゾーン障害に対する自動保護が提供されます。これにより、リージョン内の 1 つのゾーンで障害が発生しても、アプリケーションが引き続き動作することが保証されます。
- リージョン障害: アプリケーションでさらに高いデータ可用性とリージョン障害からの保護が必要な場合は、99.999% の可用性を提供するマルチリージョン構成を使用します。
- 大規模な地理的災害: Spanner のクロスリージョン バックアップ コピーを使用して、異なるリージョンでバックアップを利用できるようにします。
- 論理的な破損: さまざまな保持期間に応じて、次の障害復旧手法を使用します。
- ポイントインタイム リカバリ(PITR)を設定して、過去 7 日間の任意の時点のデータを復元します。
- 要件を満たす頻度でフル バックアップまたは増分バックアップを作成するバックアップ スケジュールを設定します。すべてのバックアップは最長 1 年間保持できます。
- データベースを Cloud Storage にエクスポートして、コンプライアンス、分析、レポート用にデータを保持できます。
- データベースの誤削除: データベースの削除保護を使用して、必要な IAM 権限を持つユーザーまたはサービス アカウントによる既存のデータベースの誤削除を防ぎます。
障害復旧戦略の費用を最適化する
以下の方法で、Spanner の障害復旧費用を最適化できます。
- マルチリージョン構成: マルチリージョン構成は、99.999% の可用性を必要とするアプリケーションにのみ使用します。読み取り専用レイテンシが必要なアプリケーションの場合は、他のリージョンのリードレプリカを検討してください。
- バックアップの頻度: 要件を満たすために必要な最低限の頻度でバックアップをスケジュールします。
- バックアップ タイプ: 増分バックアップ スケジュールを使用して、ストレージ費用を節約します。
- バックアップの保持期間: 復元とコンプライアンスのニーズを満たすのに必要な最短時間のバックアップ保持期間を決定して設定します。
- 大規模なデータのエクスポート: 大規模なデータのエクスポートには Spanner Data Boost の使用を検討します。これにより、インスタンスからコンピューティング リソースをオフロードし、トランザクション パフォーマンスへの悪影響を回避できます。
障害復旧戦略をテストする
障害復旧計画の次のコンポーネントをテストして検証することを検討します。
- 組織でデータ損失を引き起こす可能性がある、最も可能性の高いイベントをシミュレートします。
- 作成したバックアップからデータベースを復元する練習を行います。データベースの復元の詳細については、復元の概要をご覧ください。
- 障害復旧計画がストレージ使用率に与える影響を評価します。
- バックアップ プロセスがアプリケーションのパフォーマンスに与える影響を評価します。
- ゾーンまたはリージョン障害をシミュレートして、フェイルオーバーと復旧手順をテストします。