困難からの解放: Cloud SQL で容易にデータを保護する方法
Google Cloud Japan Team
※この投稿は米国時間 2021 年 8 月 13 日に、Google Cloud blog に投稿されたものの抄訳です。
完全なフォールト トレランスを必要とする重要なアプリケーションを管理している場合、障害の種類や範囲に関係なく、ダウンタイムとデータ損失を最小限に抑えて、すべての障害を処理できるシステムが必要です。こうした障害から保護するには、パフォーマンスだけでなく、復元の時間やコストに影響を与える、多くの可変的な要素の調整が必要です。
現在のマネージド データベース サービスには、データベース管理者が抱えていた運用上の複雑さが引き継がれています。組織のトレランスを拡大するには、マシン、コンピューティング能力、ストレージ、IT 管理の運用コスト(バックアップの実行、スクリプトの作成、ダッシュボードの作成、プラットフォームが問題の発生に対応できることを確認するテストの実行)が必要で、これらすべてを安全に行わなくてはなりませんでした。
Google の Cloud SQL マネージド データベース サービスでは、3 つのフォールト トレランス メカニズム(バックアップ、高可用性、レプリケーション)を提供しています。そして、それぞれについて考慮すべき 3 つの主要な要素があります。
RTO(目標復旧時間): 障害が発生した場合、重大な損害が発生するまでにどのくらいの時間の余裕があるか
RPO(目標復旧時点): 障害が発生した場合、重大な損害が発生する前にどのくらいのデータ損失まで許容できるか
コスト: このソリューションにはどのくらいの費用効果があるか
Google は、Major League Baseball、HSBC、Equifax などのお客様から、厳格なデータ保護のニーズがあること、フォールト トレラント性の高いマルチ リージョン アプリケーションが必要であることを聞いています。そして、これらすべてのお客様がそのニーズを満たすために Cloud SQL を選択しています。
各復元ソリューションの意思決定プロセスを詳しく見ていきましょう。
高可用性(HA)
ビジネス クリティカルなアプリケーションでは、RTO を最小に、RPO をゼロに抑える必要があります。このような場合は、高可用性の構成により、ユーザーや顧客を確実に保護できるようにします。このような構成にしておけば、プライマリ インスタンスに障害が発生した場合、データを失うことなくスタンバイ インスタンスに引き継ぐことができます。ただし、ここには追加のコストがあります。これを手動で行うと、障害の検出と検証、フェイルオーバーの実行、整合性の確認(プライマリ インスタンスが 2 つにならないか、データ破損のリスクはないか)、最終的なアプリケーションと新しいデータベースの接続まですべてを人間が実施しなくてはならないため、膨大な運用コストがかかります。
Cloud SQL はその複雑さをすべて取り除きます。対象のインスタンスで高可用性を選択すると、Cloud SQL が複数のゾーン間のデータを、各ゾーンの永続ディスクに同期的に複製します。HA インスタンスに障害が発生した場合、フェイルオーバーのタイミングを考える必要はありません。Cloud SQL が障害を検出し、自動的にフェイルオーバーを開始し、データを失うことなく数分以内に完全に復元します。Cloud SQL は、フェイルオーバー中に IP アドレスも移動するため、アプリケーションは簡単に再接続できます。たとえば、MLB は、Cloud SQL の高可用性を使用して、最小限のダウンタイムで試合のライブ中継に予測データを提供しています。開発やテスト インスタンスはこのような保護を必要としませんが、ローカル バックアップを行っておけばあらゆる障害から復元できます。
クロスリージョン レプリカ
たとえ Google Cloud リージョン全体がダウンしたとしても、ビジネスは運営を継続する必要があります。そこで、クロスリージョン レプリケーションを使用します。これは別の Google Cloud リージョンにあるホット スタンバイ レプリカで、数分の RTO と通常 1 分未満の RPO を実現します。プライマリ インスタンスとは別のリージョンにリード レプリカを作成しておけば、リージョン全体が停止してしまったとしても、アプリケーションとデータベースを数分以内に別のリージョンの顧客に提供できます。しかし、このソリューションは複雑であり、自分でそれを有効にすることは困難で時間がかかる可能性があります。地域を超えたトラフィックを保護するには、エンドツーエンドの暗号化が必要であり、接続性の問題が発生する可能性もあります。
そこで力を発揮するのが、フルマネージド Cloud SQL ソリューションです。Google Cloud では、MySQL、PostgreSQL、SQL Server のデータベース エンジンを、クロスリージョン レプリケーション ソリューションとして提供しています。このソリューションでは、Google の相互接続されたグローバル ネットワークによって簡単に構成と強化を行えます。たとえば、「米国東部にいて、米国西部でレプリカを作成したい」と言うだけで、確実かつ安全にそれが実行されます。
バックアップ
オペレーションのエラー(スクリプトのバグによりテーブルが削除されたなど)または人為的エラー(誰かがテーブルを誤削除したなど)が原因でデータが失われた場合、バックアップは失われたデータを Cloud SQL インスタンスに復元するのに役立ちます。Google Cloud の低コストのバックアップ メカニズムは、詳細なポイントインタイム リカバリが特徴です。つまり、データ誤削除やその他の問題が発生した場合に、月曜日の午後 12 時 53 分など、データベースの状態をミリ秒まで復元するように要求できます。貴重なデータが、複数の地理的位置に自動的に複数回複製されます。これにより、重大な障害が発生した場合のフェイルオーバーの自動処理が可能になります。重大な障害が発生した場合でも、データベースが利用可能で、データが安全であるため、いつでも安心していられます。
Cloud SQL は、自動化されたオンデマンド バックアップを提供します。Google では、自動バックアップにより、バックアップを管理し、必要なときに簡単に復元できるようにします。また、スケジュール設定されたバックアップがデフォルトで自動的に実行されます。オンデマンド バックアップにより、いつでもバックアップを作成できます。これは、Cloud SQL でバックアップ データのカスタムの場所を選択できるため、データベースで危険な操作を実行しようとしている場合に役立ちます。バックアップが複数のリージョンに保存され、ソース インスタンスを含むリージョンが停止した場合は、バックアップを別のリージョンの新規または既存のインスタンスに復元できます。これは、バックアップの保管場所を特定の地理的境界内に限定する規制を組織が遵守しなければならない場合に便利です。
すべてを組み合わせる
MLB は、重要なワークロードを処理する Cloud SQL インスタンスで、バックアップ、高可用性、クロスリージョン レプリケーションを使用しています。そうすることで、多くの種類の障害から確実に復元できます。
人的エラー(誤削除など)が発生した場合、バックアップとポイントインタイム リカバリを使用して、ミリ秒または特定のデータベース トランザクションに復元します。
プライマリ インスタンスの障害やゾーンの停止が発生した場合、Cloud SQL 高可用性構成により自動的に復元されます。
リージョン全体の停止から保護するために、クロス リージョンのレプリケーションを使用します。
MLB と同様に堅牢な構成を作成する場合、かかる時間はほんの数分です。これらの機能は、Google Cloud のコンソールからお使いいただけます。また、詳しくはドキュメントをご覧ください。
-プロダクト マネージャー Nimesh Bhagat