MySQL は、世界で最も広く使用されているオープンソースのリレーショナル データベースの一つです。広く利用される理由の一つは、ユーザーのワークロード要件に合わせて、さまざまな方法でデータベースをホストおよび管理できることです。ユーザーは、データベースをオンプレミスでセルフマネージドにするか、クラウド上の仮想マシンでセルフマネージドにするか、クラウド プロバイダのフルマネージド サービスを使用するかを選択できます。この記事では、セルフマネージド MySQL オプションと、Google Cloud が提供するフルマネージド ソリューションである Cloud SQL for MySQL を中心に説明し、各オプションの長所と短所を紹介します。
セルフマネージド MySQL オプションとは、データベース、オペレーションシステム(OS)、ネットワーク、ストレージ、仮想マシン(VM)インスタンス、およびデータベース インスタンスとサーバーをホストするハードウェアのセットアップ、インストール、構成、メンテナンスに関連するアクティビティのほとんどを、ユーザー(ほとんどの場合はデータベース管理者)が担当することを意味します。ハードウェア、VM インスタンス、ストレージ、ネットワーキング、オペレーティング システムのタスクなど、これらのタスクの一部は、Google Cloud などのクラウド サービス プロバイダを活用することでより簡単に実行できます。ユーザーがオンプレミスのデータベースを自分で管理する場合でも、クラウドで自分で管理する場合でも、システムのスムーズな運用に必要ないくつかの主要なデータベース管理タスクは、ユーザーが担当します。以下のようなタスクがあります。
下の図は、セルフマネージド設定を選択した場合のユーザーの責任を示しています。Google Cloud でセルフマネージド設定を選択した場合、ハードウェア、コンピューティング、ネットワーキング、ストレージに関連する一部のタスクが軽減されますが、スタックの残りのレイヤを管理する責任は依然としてユーザーが負います。データベース管理者とアプリケーション デベロッパーは、MySQL の管理に十分な時間、エネルギー、リソースを費やす必要があります。
Cloud SQL は、Google Cloud 上で MySQL、PostgreSQL、SQL Server データベースの設定構成、メンテナンス、管理、アドミニストレーションを簡単に行うためのフルマネージド データベース サービスです。Cloud SQL は、MySQL データベースのハードウェア、ネットワーク、OS、セキュリティ、モニタリング、メンテナンス、可用性、スケーリングに関するあらゆる側面を管理します。これらの責務はすべてユーザーの目につかないため、ユーザーはアプリケーションの開発と顧客への価値の提供に集中できます。
以下の図は、MySQL データベースのさまざまなレイヤの管理にかかわるタスクを示していますが、唯一異なる点は、Cloud SQL がユーザーに代わって管理するすべてのタスクが青色で示されています。
Cloud SQL は、上に示した多くのタスクを管理するだけでなく、セルフマネージド環境でネイティブには利用できないさまざまな機能やソリューションを提供します。Cloud SQL で提供される主な機能は次のとおりです。
信頼性: バックアップと復元は、データベース管理で最も重要なアクティビティです。Cloud SQL は自動バックアップとオンデマンド バックアップを提供し、破損、障害、意図しないデータ変更が発生した場合にデータベースを特定の時点に復元できます。
可用性: Cloud SQL は、複数のゾーンにわたってデータベースをホストする複数のサーバーをインスタンス化し、自動フェイルオーバー機能によって VM やデータセンターに障害が発生した場合に高可用性を提供します。Cloud SQL は、世界のどこにいても 99.95% を超える可用性を保証しています。
高可用性機能に加えて、Cloud SQL は 24 時間 365 日対応のサイト信頼性エンジニアリング(SRE)チームを提供し、Google Cloud 上の Cloud SQL for MySQL データベース インスタンスの信頼性を確保しています。
クロスリージョン リードレプリカは、障害が発生した場合に障害復旧メカニズムとして使用できるもう 1 つの機能です。これにより、ビジネスへの影響を最小限に抑えながら、影響を受けたデータベースを別のサイト(リージョン)で迅速に立ち上げることができます。
スケーラビリティ: Cloud SQL では、MySQL リードレプリカ(MySQL の追加の読み取り専用インスタンスなど)を同じリージョンまたはリモート リージョンで作成できるため、レプリカとプライマリ インスタンスからのリクエストの処理が可能になり、読み取りパフォーマンスが向上します。リードレプリカはレポート目的でも使用でき、ビジネスニーズが満たされた後に破棄できます。
Cloud SQL では、最小限のダウンタイムでリソース(CPU、メモリ、ストレージ)をスケールアップし、MySQL インスタンス上のリソースをスケールダウンできます。一方、セルフマネージド設定の場合、これらの複雑な作業には多大な労力、専門知識、計画が必要になります。
セキュリティ: Cloud SQL for MySQL データベース サーバーは、Google Cloud で保護されたデータセンターに配置され、最高水準のセキュリティを確保します。さらに、Google Cloud は Virtual Private Cloud によるプライベート接続と、ファイアウォールで保護されたユーザー制御のネットワーク アクセスも提供します。これにより、悪意のある行為者の手の届かない場所にユーザー データベース サーバーが配置されるようになります。
セキュリティのもう一つの側面は、セキュリティ規制の遵守です。Cloud SQL は、SSAE 16、ISO 27001、PCI DSS、HIPAA など、広く認知されている規制を遵守しています。
Cloud SQL では、IAM 統合によってユーザーとデータベースへのアクセス権を管理できます。このインテグレーションによって Google Cloud ユーザーの認可と認証を管理し、特定の Google Cloud リソースに対するきめ細かなアクセスを提供することで、データベースへの不正アクセスを防ぎます。さらに、Cloud SQL では、Cloud SQL リソースへのアクセスを制御するように設計された事前定義ロールが提供されるため、ID とアクセス制御を簡単に管理できます。
Cloud SQL の別つのセキュリティ機能は、保存中および転送中のデータを暗号化して、権限のないユーザーがユーザーデータにアクセスできないようにすることです。
Cloud SQL には、データベース ユーザー向けのパスワード検証機能が用意されています。この機能を使用すると、お客様はパスワードの複雑さ、最小パスワード長、パスワード変更間隔、パスワードにおけるユーザー名の使用に関するパスワード ポリシーをインスタンス レベルで定義できます。また、パスワードの有効期限(日数)、ログイン試行の失敗回数、古いパスワードの変更の要件に関するポリシーをユーザーレベルで定義することもできます。Cloud SQL のこれらの機能は、セキュリティ コンプライアンスのベスト プラクティスを提供し、重要なデータに対する不正アクセスのリスクを軽減します。
Cloud SQL では、監査ログプラグインを使用して、MySQL データベースに対するアクションとオペレーションを監査することもできます。監査ログでは、いつ、誰が、どのオブジェクトに対して、どのような操作を行ったかについての分析情報を提供します。データベース監査を使用すると、テーブルの更新、読み取りクエリ、ユーザー権限の付与など、データベース内の特定のユーザー アクションを追跡できます。
オブザーバビリティ: Cloud SQL はさまざまなモニタリング ソリューションを提供し、データベースの状態に関する分析情報を提供するすぐに使える指標のリストを拡張しています。ユーザーは指標を使用してアラートを作成し、管理者がデータベースの健全性を常に把握できるようにします。
Cloud SQL は Query Insights や Recommender などの機能も提供し、ユーザーが、クエリまたはワークロードのパフォーマンスのボトルネックをトラブルシューティングして特定できるようにします。これらの機能は、セルフマネージド MySQL 環境では実現が困難です。
インテグレーション: Cloud SQL は、Google Kubernetes Engine、Compute Engine、Cloud Run など、Google Cloud 内の他のサービスとの簡単なネットワーク接続と統合を提供しており、緊密に統合されたソリューションを簡単に開発できます。Cloud SQL は、BigQuery および Looker とネイティブに統合されており、Cloud SQL 内に存在するデータの分析処理に使用できます。
パッチ適用: Cloud SQL はマネージド サービスとしてインスタンスを自動的に更新し、基盤となるハードウェアとオペレーティング システムの信頼性、パフォーマンス、安全、最新性を確保します。これらの更新のほとんどは、Cloud SQL インスタンスの稼働中に行われます。ただし、システム アップデートによっては、サービスの短い中断が必要になる場合があります。そのため、ユーザーはアップグレード アクティビティのメンテナンスの時間枠を定義できます。
バージョン アップグレード: Cloud SQL では、データベース(MySQL)バージョンのアップグレード プロセスを自動化することもできます。ユーザーは、データを上位バージョンのインスタンスに移行してメジャー バージョンをアップグレードすることもできます。
メリット
短所
メリット
短所