セルフマネージド MySQL と Cloud SQL for MySQL
MySQL は世界で最も人気のあるオープンソースのリレーショナル データベースの 1 つです。人気の理由の 1 つは、ユーザーのワークロード要件に合わせてさまざまな方法でデータベースをホストし、管理できることです。ユーザーは、オンプレミスでセルフマネージドのデータベースを設定するか、クラウド内の仮想マシンでセルフマネージドするか、またはクラウド プロバイダのフルマネージド サービスを使用するかを選択できます。この記事では、セルフマネージド MySQL オプションと、Google Cloud が提供するフルマネージド ソリューション Cloud SQL for MySQL について説明します。各オプションの長所と短所について説明します。
関連記事
セルフマネージド MySQL
セルフマネージド MySQL オプションでは、ユーザー(ほとんどの場合、データベース管理者)が、データベース、オペレーティング システム(OS)、ネットワーク、ストレージ、仮想マシン(VM)インスタンス、およびデータベース インスタンスとサーバーをホストするハードウェアの設定、インストール、構成、メンテナンスに関連するほとんどの作業を行います。ハードウェア、VM インスタンス、ストレージ、ネットワーク、オペレーティング システム タスクなどのタスクは、Google Cloud などのクラウド サービス プロバイダを利用することで簡単に実現できます。ユーザーがオンプレミスでデータベースを自己管理する場合でも、クラウドで自己管理する場合でも、システムのスムーズな実行に必要ないくつかの主要なデータベース管理タスクを行います。これらのタスクを以下に示します。
- 可用性: ハードウェア コンポーネントとソフトウェア コンポーネントは失敗する可能性があります。ただし、ハードウェアやソフトウェアの障害に耐え、データベース、サーバー、アプリケーションの継続的な可用性を確保できるようにシステムを設計する責任は、ユーザーにあります。
- データベースのメンテナンス: セルフマネージド MySQL オプションでは、ユーザーは、アプリケーション スタックのさまざまなレイヤをソフトウェアの最新バージョンに更新し、ハードウェア、オペレーティング システム、その他のソフトウェアのサポート終了バージョン、サポート対象外バージョン、またはレガシー バージョンのサポートに関する決定を行う必要があります。さらに、ユーザーはソフトウェアを中断することなく、OS、MySQL のパッチを定期的にインストールし、大きな中断なくデータベースを実行し続ける必要があります。
- スケーラビリティ: アプリケーションの使用量が時間とともに増加するにつれ、データベースのパフォーマンスを改善する必要があります。 同様に、大規模なワークロードや顧客ベースをサポートするには、ハードウェア リソースをスケールアップまたはスケールアウトする必要があります。 セルフマネージド MySQL では、その責任はユーザーにあります。オンプレミス環境でのハードウェア リソースのスケーリングは、複雑で時間のかかる作業であり、場合によってはシステムのダウンタイムが発生します。
- セキュリティ: 最近では、ハードウェアの物理的保護をはじめ、ネットワーク ファイアウォールの構成、データベース接続の保護など、データベース システムの複数のレイヤにまたがるセキュリティが最も重要な要素となっています。セルフマネージド設定の場合、これらは、多大な労力と専門知識を必要とする複雑なアクティビティです。
- モニタリング: MySQL のセットアップ、インストール、構成とは別に、ユーザーは、ハードウェア レベル、OS、MySQL でのモニタリングなど、スタックのすべてのレイヤ全体でさまざまなコンポーネントのモニタリングを行い、障害発生時の是正措置を行う必要があります。
下の図は、セルフマネージド設定を選択した場合のユーザーの責任を示しています。Google Cloud での自己管理により、ハードウェア、コンピューティング、ネットワーク、ストレージに関連する一部のタスクが削減されますが、スタックの残りのレイヤの管理については、ユーザーの責任になります。データベース管理者とアプリケーション デベロッパーは、MySQL の管理に十分な時間、エネルギー、リソースを費やす必要があります。
Cloud SQL for 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)バージョンをアップグレードする自動プロセスも提供しています。ユーザーは、より上位のバージョンのインスタンスにデータを移行してメジャー バージョンをアップグレードすることもできます。
Cloud SQL for MySQL で MySQL データベース インスタンスを作成する方法とは?
セルフマネージド MySQL の長所と短所
メリット
- MariaDB や Percona などの MySQL エコシステムからの任意の MySQL フォーク を使用して MySQL を設定できます。
- ユーザーがインスタンス、リソース、オペレーティング システムを完全に制御できるように、MySQL の構成と設定を柔軟に行うことができます。さらに、何の制限もなく、ユーザーは任意の OS を使用し、必要に応じて OS を構成し、MySQL を必要に応じて構成できます。
- 最大ストレージ サイズ 64 TB など、Cloud SQL の制限による制約を受けません。ユーザーは 64 TB のストレージの上限を超え、MySQL をホストするためにさらに高いコンピューティング インフラストラクチャを使用できます。
- ユーザーは、SUPER 権限を含め、MySQL インスタンスへの完全アクセス権と、sudo 権限を含むオペレーティング システムへの完全アクセス権を持ちます。
- ユーザーは、Cloud SQL でサポートされていない場合でも、要件に応じて高可用性とレプリケーション トポロジを 設定できます。
短所
- ユーザーは、オンプレミス環境での複雑なハードウェア インフラストラクチャ、ネットワーク、データセンター オペレーションの管理を担当します。クラウドで MySQL を自己管理する場合であっても、ユーザーは、複雑な設定、永続ディスクとインスタンスの構成を行い、高可用性クラスタの設計と管理、セキュリティ、障害復旧およびスケーラビリティに対応する必要があります。
- バグやセキュリティの脆弱性を回避するため、データベースのバージョン、オペレーティング システムのバージョン、ハードウェア システムを最新のパッチで更新することは、コスト、リソース、複雑さ、ダウンタイムの大幅な増加をもたらす可能性があります。
- データベースの設定とともに、ユーザーはデータベース自体だけでなく、すべてのレイヤでセキュリティを構成して管理する必要があります。たとえば、転送中の接続を SSL で暗号化すること、証明書を最新の状態に保つこと、保存データを暗号化すること、ユーザーおよびサービス アカウントからデータベースへのログイン アクセスを管理することなどです。
- インスタンスの可用性を確保するために、データベース システムのさまざまなレイヤで障害がないかモニタリングする必要があります。ユーザーは、モニタリング ツールの設定と構成に追加のリソースを使用する必要があります。アラートは、エラー時に通知するように定義する必要があります。また、障害がある場合は、是正措置を取る必要があります。
- ユーザーは、アプリケーション開発に集中する代わりに、データベースの設定と管理に多くの時間、リソース、労力を費やす必要があります。
Cloud SQL for MySQL の長所と短所
長所
- Cloud SQL for MySQL は、デベロッパーやエンジニア向けに、データベースの専門知識がなくても MySQL データベースの作成、管理、アクセス、モニタリングを行うためのユーザー フレンドリーなインターフェースを提供します。すばやく始めるために、Cloud SQL は、オンプレミスや他のクラウドから Google Cloud の Cloud SQL for MySQL に既存の MySQL データベースを移行する簡単な方法も提供しています。
- Cloud SQL for MySQL は、マイクロサイト用のデータベースから、極めて重要かつ巨大な企業アプリケーション、ゲーミング アプリケーションなどさまざまなアプリケーション向けの MySQL データベース、および分析ユースーケース用データのホスティングに必要な、充実した機能セットを提供しています。これらの充実した機能を使用すれば、信頼性とスケーラビリティに優れたアプリケーションを構築できます。
- Cloud SQL は、セキュリティの責任をユーザーと共有します。Cloud SQL は、低レベルのインフラストラクチャとネットワークでセキュリティを確保します。そのため、ユーザーはより高レベルのアプリケーションの構成と開発に集中できます。
- Cloud SQL には、パスワード検証プラグインや監査ロギングなどのさまざまなセキュリティ機能が用意されています。これらは、コミュニティ バージョンではすぐには利用できず、セルフマネージド環境で実装するには複雑なものです。 Cloud SQL では、これらの機能が簡素化され、ユーザーが簡単に利用できるようになります。
- Cloud SQL では、さまざまな方法でデータベースを操作できます。ユーザーは GUI、CLI、API を使用して、ニーズに合わせて、最小限の労力でオペレーションをカスタマイズできます。
- Cloud SQL では、他のソリューションや BigQuery などのプロダクトと簡単に統合できるため、最小限の労力で分析ソリューションを開発できます。
- Cloud SQL は、可用性の高いインフラストラクチャ、自己修復ソリューション、そして最も重要な 24 時間 365 日対応の SRE チームによって、データベース インスタンスの信頼性に対する責任を引き受けます。
- ユーザーはデータベースの運用タスクに費やす時間と労力を減らし、代わりにアプリケーション開発に集中することで、ビジネスニーズをより効率的に満たすソリューションを 提供できるようになります。
- データベースの管理に役立つ機能に加えて、Cloud SQL は、Query Insights や推奨事項などの機能を使用してデータベースのパフォーマンスを向上させるヒントや推奨事項も提供しています。これらの機能により、クラウド上でデータベースのホスティングと管理を行い、シンプルで安全かつ優れた費用対効果を実現できます。
- Cloud SQL では、データベース関連の問題やリクエストに対して必要なサポートを簡素化、合理化するために、カスタマーケア サービスを提供しています。
短所
- MariaDB や Percona などの MySQL エコシステムからの MySQL フォークは、Cloud SQL ではサポートされていません。
- MySQL の一部の機能はサポートされていません。サポートされていない機能の詳細について確認する。
- Cloud SQL では、最大 624 GB の RAM と 96 個の CPU を使用するマシンタイプがサポートされています。最大 64 TB のストレージがサポートされます。 データベースの容量を増やす必要がある場合は、現時点ではセルフマネージド オプションのみをおすすめします。
関連プロダクトとサービス
Google Cloud は、オンプレミスのデータセンターの廃止から SaaS アプリケーションの実行、基幹業務システムの移行まで、お客様のビジネスニーズに合わせて構築されたマネージド MySQL データベースを提供します。