最も人気のあるオープンソースデータベースとして、MySQLは小規模な新興企業から非常に大規模な組織まで、多くの場所で実装されています。ユースケースは、単純なWebサイトアプリケーションから、99.999%の稼働時間要件を持つミッションクリティカルな環境までさまざまです。 MySQLは仕事を成し遂げるだけで、操作は簡単です。
MySQLは比較的管理が簡単ですが、それ自体では実行されません。特定の管理オーバーヘッドがあります-ソフトウェアに時々パッチを適用する必要があり、データベースでパフォーマンスやセキュリティの障害や異常を監視する必要があり、障害を処理して回復する必要があり、バックアップを管理する必要があります。リストは続きます。したがって、最大のクラウドベンダーがMySQLに基づくパブリックDBaaSサービスを提供しているのは当然のことです。
MySQLをサービスとして提供する3つのクラウドプロバイダーは次のとおりです:
- RDSforMySQLを使用したアマゾンウェブサービス
- CloudSQLforMySQLを使用したGoogleComputeEngine
- Microsoft Azure、Microsoft Azure MySQL
このブログでは、これらのクラウドプロバイダーのソリューションを比較します。
MySQLのバージョンとパッチ
アマゾンウェブサービス(AWS)で利用可能なMySQLの最新バージョンはMySQL 8.0.20であり、公式のOracle MySQLの最新バージョン(当時は8.0.21)に非常に近いものです。書き込み)。 AWS RDSは、最新バージョンに加えて、古いバージョンのMySQL(メジャーバージョン5.5、5.6、および5.7)も提供しているため、アプリケーションと互換性のある正確なバージョンをデプロイできます。
Google Cloud Platform(GCP)では、CloudSQL forMySQLでサポートされているMySQLバージョンは引き続きMySQL5.6および5.7であり、リリース5.6の最新のマイナーバージョンは5.6.42ですが、バージョン5.7の場合は最新です。マイナーバージョンは5.7.25です。
MySQL用のAzureデータベースはバージョン5.6、5.7、8.0をサポートしていますが、残念ながら、コンソールからデプロイするときにマイナーバージョン(またはAzureが呼び出すデータベースのバグ修正バージョン)を提供していません。 MySQLサーバーインスタンスのバージョンを確認するには、SELECT VERSION();を使用できます。 MySQLプロンプトでコマンドを実行します。
サービスとしてのデータベースにはいくつかの既知の問題と制限がありますが、オンプレミスまたはVMのMySQLでは発生しません。 RDSでは、いくつかの制限があります:
- MySQLキーリングプラグインはサポートされていません。
- InnoDBストレージエンジンを使用する場合のテーブルの最大ストレージ制限サイズは16TBです。
- RDSを使用する際に特別な考慮が必要なパラメータがいくつかあります。例:long_query_time、lower_case_table_name。
CloudSQL for MySQLにはいくつかの制限と問題があり、データの耐久性と可用性の問題、インスタンス接続の問題、管理上の問題、データのエクスポートとインポートの問題など、さまざまなカテゴリに分類されます。各カテゴリには特定の問題と制限があり、その一部は次のとおりです。
- DEFINER句を使用すると、インポートが失敗します。
MySQL用のAzureデータベースには、アップグレード、特権、およびストレージエンジンに関連するいくつかの制限と既知の問題があります。詳細の一部は次のとおりです。
- 現在、主要なデータベースのアップグレードはサポートされていません。メジャーアップグレードのために、ダンプを実行して新しいサーバーに復元する必要があります。
- MySQL用のAzureデータベースは、現在InnoDBとメモリストレージエンジンをサポートしています。
- MySQLのazureデータベースのシステムデータベースが読み取り専用に設定されています。 mysqlシステムデータベースでは何も変更できません。
各クラウドプロバイダーでMySQLの制限と既知の問題を確認し、要件と比較して、アプリケーションに影響があるかどうかを理解する必要があります。
Amazon RDS for MySQLは、スケジュールに従って自動バックアップを実行し、データベースインスタンスのボリュームスナップショットを取得します。バックアップ保持期間のデフォルトは7日です。それだけでなく、RDSはデータベースインスタンスのトランザクションログを5分ごとにS3にアップロードして、ポイントインタイムリカバリを維持します。
バックアップ保持期間内に新しいインスタンスを作成することにより、特定の時点にバックアップを復元できます。復元可能な最新の時刻を選択して可能な限り最新の時刻に復元するか、カスタムを選択してデータを復元する特定の時刻を定義できます。
CloudSQLforMySQLで発生するバックアップはインクリメンタルです。以前のバックアップ後のデータの変更のみが含まれます。最も古いバックアップは、現在のデータベースサイズと同様です。最も古いバックアップが削除されると、次の最も古いバックアップのサイズが大きくなるため、完全バックアップが引き続き存在します。
自動バックアップは毎日実行され、デフォルトで7日間保持されます。 CloudSQLは、冗長性のためにバックアップデータを2つのリージョンに保存します。 1つのリージョンは、インスタンスが実行されているのと同じであり、もう1つのリージョンは別のリージョンにある可能性があります。
CloudSQLでのポイントインタイムリカバリにより、新しいインスタンスが作成されます。インスタンス設定は、インスタンスのソースを継承します。ポイントインタイムリカバリを実行する前に、バイナリロギングがすでに有効になっていることを確認してください。ポイントインタイムリカバリを実行するときは、バイナリログ名とリカバリ位置を入力するだけです。
MySQL用のAzureデータベースは、データファイルのバックアップとトランザクションログを取得します。バックアップ自体のスケジュールは、最大4TBのストレージサイズのサーバーの完全バックアップと差分バックアップの組み合わせですが、スナップショットバックアップは最大16TBの最大ストレージサーバーで行われます。
完全バックアップは週に1回実行されますが、差分バックアップは1日に2回実行されます。バックアップのデフォルトの保存期間は7日ですが、最大35日までいつでも保存を構成できます。
MySQLのAzureデータベースには、次の2種類の復元があります:
- 冗長バックアップオプションとして利用可能なポイントインタイム復元、またはデータの復元に完全バックアップとトランザクションログを利用して、元のサーバーと同じリージョンに新しいサーバーを作成できます。
- Geo-restore。ストレージオプションでgeo-redundantを構成した場合に使用できます。これにより、バックアップをさまざまなリージョンに復元できます。
AWS、Google、Azureのいずれもバックアップのダウンロードを許可していないことに注意してください。
RDSはCloudWatchとのモニタリング統合を提供し、CPU使用率、DB接続、書き込みIOPSと読み取りIOPS、書き込みスループットと読み取りスループット、書き込みと読み取りのレイテンシーなどの指標を確認できます。一部のメトリクスカテゴリに基づいて、CloudWatchからアラートをトリガーするアラームを作成し、しきい値を定義するだけです。
RDSと同様に、GCP CloudSQLもstackdriverと統合されており、CPU使用率、メモリ使用率、アクティブな接続、トランザクション/秒、入力/出力バイト、書き込みと読み取りの操作、レプリケーションラグなどの指標を確認できます。 。
MySQL用のAzureデータベースは、いくつかのメトリックを提供します。アクティブな接続、CPUパーセント、失敗した接続、IOパーセント、メモリパーセント、レプリケーションラグ、ストレージパーセント、使用されたストレージ。 MySQLのAzureデータベースでアラートを作成し、メトリックを選択して、ルールを定義することもできます。
4つの主要な領域に基づいています。 MySQLのバージョンとパッチ、既知の問題と制限、バックアップと復元、データベースの監視、私の意見では、MySQL用のAmazon RDSは、MySQLのサービスとして依然として最高のデータベースです。詳細なバージョンとパッチ、他と比較して非常に限られた問題と制限を提供します。これはMySQLを実行するための便利な方法ですが、サービスの価格が近年上昇していることに注意してください。