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 データベース インスタンスの信頼性を確保しています。
クロスリージョン リードレプリカも、障害時の障害復旧メカニズムとして使用できる機能です。これにより、ビジネスへの影響を最小限に抑えながら、影響を受けるデータベースを別のサイト(リージョン)ですばやく起動できます。
スケーラビリティ: 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)のバージョンを自動的にアップグレードするプロセスも用意されています。ユーザーは、データを上位のバージョンのインスタンスに移行して、メジャー バージョンをアップグレードすることもできます。
メリット
短所
長所
短所