MySQL
MySQLデータベースをホストする5つの方法
はじめに
プロジェクトでMySQLサーバーを稼働させる方法はいくつかあります。サーバーインスタンスを自分でインストールして管理することも、マネージドMySQLアクセスを提供する多くのプロバイダーのいずれかを利用することもできます。
本記事では、MySQLサーバーの最も一般的なオプションのいくつかを取り上げ、それらの利点と課題を比較します。プロジェクトとチームの優先事項を把握することで、ニーズに合ったソリューションを見つけることができます。
セルフマネージドMySQL
最も柔軟で説明が簡単な選択肢は、MySQLサーバーのセルフホスティングです。MySQLのセルフホスティングとは、他のソフトウェアと同様に、自分が管理するコンピューターにデータベースをインストールして設定することです。
セルフホスティングでは、データベースをどこにインストールして実行するかについて多くの選択肢があります。このセクションのオプションのいずれかを選択した場合、このガイドを使用してシステムにMySQLをインストールする方法を学ぶことができます。
ローカル開発コンピューターへのMySQLのインストール
初期開発、テスト、および概念実証のために、ローカル開発マシンにMySQLをインストールすると、データベースへの信頼性が高く、管理しやすいアクセスを提供できます。
ホスティングオプション | ローカル開発マシン |
---|---|
プロジェクトステージ | 開発 |
コスト | 追加費用なし |
パフォーマンス | 低 |
スケーラビリティ | なし |
管理の複雑さ | 低 |
追加の注意点 | ネットワーク構成は不要。良い ローカル開発向け。 |
コスト
開発マシンにMySQLをセットアップするのに費用はかかりません。開発中にすでに稼働しているコンピューターからデータベースを実行することになります。考慮する必要があるのは、MySQLが稼働中に消費するリソースの量だけです。
パフォーマンス
開発マシンにMySQLをインストールするのは、パフォーマンスが低い選択肢です。
あなたのデータベースは、他のユーザーから簡単かつ確実に利用できるわけではありません。あなた自身のデータベースの使用は、あなたのハードウェアとMySQLに割けるリソースの量によって制限されます。これらの懸念は、ローカルでテストまたは開発する場合には通常問題になりませんが、より複雑なものにはまったく不十分です。
スケーラビリティ
開発マシンでのホスティングでは、ほとんどスケーラビリティがありません。MySQLに割り当てられるリソースの量は変更できますが、それ以上はほとんどありません。開発マシンをアップグレードすることはできますが、それは実用的でも長期的にも特に有用ではありません。
管理の複雑さ
複雑さという点では、ローカルマシンでのMySQLのホスティングは、多くの場合、かなり簡単です。ほとんどのオペレーティングシステムでのインストールプロセスはよく考えられており、結果として得られるデータベースは簡単に起動または停止できます。しかし、リソースの制限と消費者向けネットワークの不安定さを考えると、ローカルのMySQLインスタンスを外部アクセス用に構成する労力は通常見合いません。
ローカルでのMySQLのセットアップは複雑ではありませんが、データベースを管理し、必要に応じてアップグレードを実行する必要があります。これらは、セキュリティパッチのために時々必要になる場合があり、データについて懸念がある場合、これらのインスタンスを追跡するのはあなたの責任となります。
追加の注意点
ローカルにインストールすることは、ネットワークがダウンしているときでも、開発コンピューターからデータベースにアクセスできることを意味します。これは旅行中に特に役立ちます。データをローカルでアクセスすることで、ネットワークの複雑さがなくなり、データベースアクセスではなく開発に集中できます。
ローカル開発コンピューターにMySQLをインストールすることは有用ですが、いくつかの明確な制限があります。マルチユーザーアクセスを簡単に構成することはできず、データベースの稼働時間はコンピューターの可用性とネットワークの安定性に直接結びついています。これらの理由から、開発マシンへのインストールは、生産性と柔軟性を高めるための補完的なオプションであることがほとんどであり、唯一のデータベースインストールではありません。
別のサーバーへのMySQLのインストール
もう1つのセルフホスティングオプションは、別のコンピューターにMySQLをインストールして管理することです。一般的な実装には次のものがあります。
- 専用サーバーへのインストール: MySQLは、専用コンピューターで実行される唯一のサービスとして構成されます。マシンのすべてのリソースにアクセスできます。
- 関連アプリケーションと並行してインストール: MySQLは、それを必要とするアプリケーションと並行してインストールされます。すべてのコンポーネントを単一のマシンで管理できるため、小規模なデプロイメントで人気のある選択肢です。コンピューターのリソースは、MySQLと他の実行中のアプリケーション間で共有する必要があります。
別のサーバーにMySQLをインストールすることは、開発マシンにインストールすることとは大きく異なります。
ホスティングオプション | 別のサーバー |
---|---|
プロジェクトステージ | 開発、ステージング、本番 |
コスト | 可変。追加の購入またはレンタル サーバーおよび追加の管理コスト。 |
パフォーマンス | 高い可能性 |
スケーラビリティ | 高い可能性 |
管理の複雑さ | 高 |
追加の注意点 | 最も柔軟なオプションです。また、最も多くの 手動管理が必要です。もしあなたが 社内にハードウェアまたはデータベースの専門知識があり、 それを管理に専念できるのであれば良い選択肢です。 |
さらに強調すべき考慮事項の1つは、MySQLを自分で管理する場合、セキュリティはあなたの責任であるということです。組織の他の部分でインフラストラクチャ、ソフトウェア、およびネットワークセキュリティを既に扱っている場合は、問題にならないかもしれません。しかし、あまり慣れていない場合は、MySQLインスタンスとそこに含まれるデータを保護することが大きな課題となる可能性があります。この道を選択する前に、計画にこれを考慮に入れるようにしてください。
コスト
専用マシンまたは共有マシンでMySQLを実行するには、使用するサーバー領域を購入またはレンタルする必要があります。実際のサーバーは、組織のオンプレミスに設置されたり、データセンターにコロケーションされたり、クラウドプロバイダーがホストする仮想マシン(仮想プライベートサーバーまたはVPSとも呼ばれます)として運用されたりする場合があります。
サーバーのコストは大きく異なります。低電力のVPSはかなり安価ですが、複数の専用サーバーはすぐに高価になります。しかし、サーバーのコストだけが考慮事項ではありません。追加の管理コストも考慮に入れる必要があります。デプロイ環境によっては、データベース層、サーバーのソフトウェア、およびハードウェアを管理するための人件費が含まれる場合があります。これらのコストは、可用性要件、ホスティング環境、および運用規模によって異なります。
パフォーマンス
別のサーバーにMySQLをデプロイすると、非常に高いパフォーマンスを発揮する可能性があります。MySQLを実行するマシンの仕様はあなたが管理しているため、ニーズに合ったハードウェアを完全に自由に選択できます。将来的に拡張する必要がある場合は、ハードウェアをアップグレードしたり、追加のサーバーを購入してワークロードをスケーリングしたりできます。
また、データベース構成を微調整して、追加のパフォーマンス上の利点を得ることもできます。メモリ管理、キャッシング、オープンファイル処理、クライアント接続などに関連する設定を調整できます。これにより多くの能力が得られますが、これらのオプションを活用するには時間、専門知識、および実験が必要です。独自のサーバーを運用する他の側面と同様に、このプロジェクトの側面で割り当てることができる時間と費用によって利点は制限されます。
スケーラビリティ
上記のように、専用サーバーで実行することで、データベースシステムの要求の変化に対応できます。データベースサーバーに追加のリソースとハードウェアを追加することで**スケールアップ**したり、MySQLサーバーのプール全体で要求を分散することで**スケールアウト**したりできます。どちらのオプションも、異なる種類の負荷に対する合理的な対応策です。
管理の複雑さ
一般的に言って、スケーリングはパフォーマンスチューニングと同じ利点と制限があります。つまり、信じられないほどの柔軟性と能力を持ちますが、コストと構成の管理はあなたの責任です。追加のハードウェアを必要とする変更(需要の増加など)は、組織がハードウェアを調達し、ソフトウェアを構成し、ワークロードをバランスさせるための時間を確保するために、プロアクティブな監視と組み合わせる必要があります。
追加の注意点
要するに、独自のMySQLを管理することは非常に効率的で強力、かつ柔軟ですが、大量の専用時間とリソースが必要になる場合があります。このオプションは、データベースの実行時環境、構成、およびアーキテクチャトポロジを制御したい、社内にインフラストラクチャとサーバーの専門知識を持つ組織に最適です。
Dockerを使用したMySQL
もう1つのセルフホスティングオプションは、Dockerを使用してMySQLをコンテナとして実行することです。Dockerを使用すると、ローカルまたはリモートマシンで隔離された環境でMySQLを実行できます。
ホスティングオプション | Dockerコンテナ |
---|---|
プロジェクトステージ | 開発、ステージング、本番 |
コスト | 可変。追加の購入またはレンタル サーバーおよび追加の管理コスト。 |
パフォーマンス | 中~高 |
スケーラビリティ | 高 |
管理の複雑さ | 中~高 |
追加の注意点 | コンテナ化されたインフラストラクチャは、複雑さの点で大きく異なる可能性があります。コンテナは特に開発段階やステージングにおいて多くのことを容易にしますが、本番環境で適切に実行するには経験と複雑なオーケストレーションも必要とします。 複雑さという点では。コンテナは、 特に開発時において多くのことを容易にする一方で、 ステージングでも同様ですが、経験も必要とし、 本番ワークロードの場合、Kubernetesのようなコンテナオーケストレーションに 本番ワークロードの場合、コンテナはおそらく 既に投資している場合にのみ、コンテナは良い選択肢となるでしょう。 Kubernetesのようなコンテナオーケストレーションが必要です。 |
従来のローカルインストールと比較してDockerを使用する利点には、次のようなものがあります。
- 公式のMySQL Dockerイメージを使用してMySQLを実行すると、MySQLをインストールするよりも少ない労力で済みます。
- Dockerを使用すると、複数の環境でまったく同じデータベース構成を再現できるため、同じMySQL構成を必要とするプロジェクトで共同作業するチームにとって有用です。
- Dockerを使用して、MySQLに割り当てられるCPU、メモリ、ストレージのリソースを制御できます。
- Dockerは、MySQLとマシンで実行されている他のソフトウェア間の非互換性の可能性を低減します。
Dockerを使用してMySQLをローカルまたはリモートマシンにインストールすることは似ていますが、本番ワークロードにMySQLを使用するかどうかに応じていくつかの追加の考慮事項があります。
DockerはMySQLを実行する特定の側面を簡素化しますが、注意すべきいくつかのトレードオフがあります。
- 構成によっては、Dockerを使用して実行するとネットワーク構成の複雑さが増す可能性があります。
- Dockerは抽象化の追加レイヤーを追加するため、追加のセキュリティ上の考慮事項が必要となり、トラブルシューティングが直接的でなくなる可能性があります。
コンテナとKubernetes
Kubernetesを使用すると、複数のサーバーで構成されるクラスター上でDockerコンテナを実行できます。クラスター内の1つのサーバーがメンテナンスのために停止する必要がある場合、基盤となるデータパーティションにアクセス可能であれば、KubernetesはMySQLコンテナを別のサーバーに移動します。また、MySQLを使用するアプリケーションをKubernetes上で実行することもでき、これによりアプリケーションとMySQL間のネットワークレイテンシを削減できます。
マネージドサービス
独自のMySQLを実行する代替案として、プロバイダーからMySQLデータベースをレンタルまたは購入する方法があります。マネージドサービスを利用すると、MySQLソフトウェアや基盤となるサーバーの裏側の管理について心配することなく、サービスまたはAPIとしてデータベースを簡単に操作できます。
さまざまな種類のマネージドサービスが、異なるニーズに対応するために存在します。このセクションでは、ホスティングまたはクラウドプロバイダーが提供するサービス、サードパーティが管理するデータベース、およびアプリケーションプラットフォームが提供するデータベースについて説明します。
クラウドプロバイダーが管理するデータベース
おそらく最もよく知られているマネージドMySQLホスティングの種類は、クラウドまたはホスティングプロバイダーが提供するものです。これらの例には、Amazon Web ServiceのRDS(リレーショナルデータベースサービス)、Google Cloud PlatformのCloud SQL、Azure Databaseなどがあります。
ホスティングオプション | クラウドプロバイダー管理 |
---|---|
プロジェクトステージ | 開発、ステージング、本番 |
コスト | 選択と使用状況によって大きく異なります。 利用についても。 |
パフォーマンス | 非常に可変 |
スケーラビリティ | 高 |
管理の複雑さ | 低 |
追加の注意点 | 多くの場合、アプリケーションを実行できる同じクラウドプロバイダーによって提供される、高いスケーラビリティを持つソリューションです。 あなたのワークロードを実行できる同じクラウドプロバイダーが これにより、独自のサーバーを運用する重労働をすることなく、 ネットワーキングとパフォーマンスを犠牲にすることなく ネットワーキングとパフォーマンスに対する追加の制御が可能になります。 |
クラウドプロバイダーは、自社のデータセンターで実行され、他のサービスとシームレスに連携するように微調整された、多種多様なMySQLデータベースを提供しています。
クラウドプロバイダー
以下のクラウドプロバイダーは、ニーズに応じて購入、構成、およびスケーリングできるマネージドMySQLデータベースを提供しています。
サーバーとMySQLの大部分はホスティングプロバイダーによって管理され、あなたはスケーリングオプションの設定、設定の微調整、アクセスの管理を行うことができます。データベースをインターネットから接続可能に構成したり、同じプロバイダーによって管理されているアプリケーションに直接接続したりできます。
コスト
クラウドプロバイダーが管理するMySQLデータベースは、幅広いコストを持つ可能性があります。安価な方では、一部のプロバイダーは最小限のパフォーマンスと稼働時間で無料枠を提供しています。高価な方では、予期せぬトラフィックの急増があった場合、需要に合わせて自動的にスケーリングすると、一晩で数千ドルの費用がかかる可能性があります。クラウドのほとんどのサービスと同様に、実際の使用状況が毎月の請求額に影響します。多くのクラウドでは、使用量やコストが特定のポイントを超えた場合に、コストアラートや自動停止機能を提供しています。データベースシステムの運用コストを管理するために、使用状況を監視し、カットオフを設定することが重要です。
スケーラビリティ
コストは時に予測が難しいことがありますが、良いニュースは、クラウドではスケーリングが非常に簡単であることです。データベースに割り当てられるリソースは、オンザフライで構成可能です。これは、アカウントの設定を変更するだけで、ストレージ容量、メモリ、計算能力、またはデータを管理するレプリカの数を増やすことができることを意味します。慎重に構成しないと高コストの原因となる強力な機能の1つは、現在の需要に応じてデータベースのリソースを動的にスケーリングする機能です。これにより、コストをカバーできると仮定すれば、常に要件を満たす能力を持つことができます。
パフォーマンス
スケーラビリティに関連して、パフォーマンスもクラウドで非常に柔軟な領域です。使用パターンに応じて、データベースのパフォーマンスに最も大きな影響を与える設定を微調整できることがよくあります。現在の構成の能力が不足している場合は、追加のリソースを割り当てることもできます。データベースを使用するアプリケーションとデータベースを併置することも、データベースとアプリケーション間の良好なネットワークパフォーマンスを得るのに役立ちます。
管理の複雑さ
管理の複雑さという点では、クラウドホスト型データベースはかなりシンプルです。あなたはプロバイダーに管理負担の大部分を肩代わりしてもらうために料金を支払います。アカウントとデータベースに影響する設定を制御する必要はありますが、ハードウェア、オペレーティングシステム、およびMySQL構成の大部分はプロバイダーが処理します。これにより、データベースを使用する管理オーバーヘッドを大幅に削減できますが、特定の特殊なケースでは、希望するレベルのチューニングにアクセスできない場合があります。
追加の注意点
一般的に、クラウドプロバイダーが管理するMySQLデータベースに料金を支払うことは、通常、魅力的な選択肢です。少量の管理作業で、スケーリングとパフォーマンスに関して優れた柔軟性を提供します。クラウドプロバイダーのデータベースサービスを選択する欠点は、特定のレベルで、そうでない場合よりも多く支払うことになる可能性があることです。さらに、ツールがプロバイダー固有の機能に過度に依存し始めると、現在のプロバイダーに縛られてしまう危険性もあります。
サードパーティが管理するデータベース
クラウドプロバイダーから直接データベースを購入する代わりに、サードパーティプロバイダーを通じてデータベースを管理することを選択できます。ほとんどの場合、このオプションは、選択したクラウドにデータベースをデプロイおよび管理し、データベース管理を基盤となるリソースプロバイダーから切り離します。
ホスティングオプション | サードパーティ管理 |
---|---|
プロジェクトステージ | 開発、ステージング、本番 |
コスト | 選択によって大きく異なります。 利用についても。 |
パフォーマンス | 非常に可変 |
スケーラビリティ | 高 |
管理の複雑さ | 低 |
追加の注意点 | サードパーティ管理データベースには、 クラウド提供データベースと同じ利点が多くあります。 しかし、サードパーティを通じてデータベースを 管理することで、基盤となるクラウドプロバイダーから データベース管理を切り離すことができます。 これにより、将来的に別のホストへの移行が容易になり、 より強力な管理オプションが提供される場合もあります。 より強力な管理オプション。 |
サードパーティプロバイダーが管理するデータベースは、多くの場合、クラウドプロバイダー自身が提供するものと同じ基本的なコンポーネントを使用します。しかし、サードパーティプロバイダーは多くの場合、複数のクラウドと連携し、あなたのアカウントでリソースを立ち上げ、希望すればより低いレベルのアクセスを提供します。クラウドプロバイダーが提供するデータベースを使用する代わりに、そのサービスはプロバイダー上で仮想サーバーを起動し、これらを使用してMySQLをインストールおよび構成します。彼らはオペレーティングシステムの設定を調整し、インスタンスをホストするサーバーへのアクセスを提供できます。サードパーティのMySQLプロバイダーの例としてScaleGridがあり、これは現在4つの異なるクラウドでインスタンスを管理できます。
サードパーティのサービス
以下のサードパーティプロバイダーは、ニーズに応じて購入、構成、およびスケーリングできるマネージドMySQLデータベースを提供しています。
サーバーとMySQLの大部分はプロバイダーによって管理され、あなたはデータベースが実行されるクラウドプラットフォーム、スケーリングオプション、設定の微調整、およびアクセスの管理を設定できます。データベースをインターネットから接続可能に構成したり、同じプロバイダーによって管理されているアプリケーションに直接接続したりできます。
コスト
コストの点では、サードパーティのソリューションも多くの場合、非常に可変です。ユーザーとしては、デプロイ先のクラウドでの計算リソースの費用と、データベース管理サービスが請求する管理費用を支払う必要があります。マネージドデータベースではなく、より基本的なリソースに対してクラウドプロバイダーに支払うため、そちら側のコストは小さくなるかもしれません。しかし、管理サービスに関連するコストにより、一部の価格帯では累積的に高くなる可能性があります。総コストがどれくらいになるかを判断するには、各側面が異なるレベルでどのようにスケーリングするかを把握する必要があります。
パフォーマンス
データベースのパフォーマンス特性も大きく異なる場合があります。管理サービスがクラウドの計算インスタンスにインストールされているため、プロバイダーはMySQL設定に加えてサーバー構成を調整する能力を持っています。これは、彼らがあなたのニーズにより適切に合致するようにいくつかの設定を調整できる可能性があることを意味します。
一方、十分にチューニングするために必要な仮想化およびハードウェアコンポーネントの低レベル層にアクセスできない場合があります。クラウドプロバイダーが提供するネイティブデータベースに対してパフォーマンスをテストすることを強くお勧めします。
スケーラビリティ
サードパーティ管理データベースのスケーラビリティは、一般的に非常に良好です。これらのプロバイダーは十分なリソースを持つ任意の計算インスタンスにデプロイできるため、クラウドプロバイダーが公開するよりも幅広いスケーリングオプションを提供できる場合があります。スケーリングの理由の1つが可用性の向上である場合、多くのサードパーティサービスは複数のアベイラビリティゾーンやプロバイダーにまたがる能力を持っています。
管理の複雑さ
データベースを管理するためのサードパーティサービスには、さまざまな複雑さがあります。このオプションは、2つの異なるプロバイダー(計算インスタンスをホストするクラウドとデータベース管理サービス)間の調整を必要とするため、クラウドプロバイダーが提供するネイティブデータベースサービスを使用する場合と比較して、本質的に複雑さが増します。
一部の管理サービスは、共有Webホスティングと同様に複雑さを隠し、簡素化されたオプションとして位置付けられています。他のソリューションは、オペレーティングシステムにアクセス可能であるという事実を活用して、ユーザーに幅広い構成オプションを公開します。多くのサービスは両方のエクスペリエンスを提供し、ユーザーが好みの複雑さのレベルを見つけられるようにしています。
追加の注意点
基盤となるリソースプロバイダーからデータベース管理を切り離すことには、利点と欠点の両方があります。
データベース管理サービスが基盤となる層を抽象化する場合、異なるクラウドプロバイダーへの移行により柔軟に対応できる可能性があります。この抽象化により、あなたが快適な複雑さのレベルを選択する能力も得られます。データベース管理サービスが提供する完全な抽象化とインターフェースを使用できますが、プロビジョニングされたデータベースサーバーにもアクセスできるため、ログインして必要に応じてデータベースサーバーを変更できます。データベース管理サービスは、これらのオペレーティングシステムレベルの調整を管理するための簡単なインターフェースも提供する場合があります。
このセットアップの欠点は、データベースの正しい動作のために複数の関係者に依存することになるという事実にあります。これにより、サービスの中断の可能性が増加する可能性があります。また、クラウドプロバイダーが提供するデータベースサービスで利用可能な内部最適化を見逃す可能性もあります。あなたのデータベース管理サービスは、クラウドプロバイダーが公開するものにのみアクセスでき、基盤となる仮想化またはハードウェア層を最適化することはできません。
全体として、サードパーティの管理サービスを使用することは、好みとテストの問題です。さまざまな使用レベルでパフォーマンスをテストし、料金体系がどのように影響するかを理解する必要があります。
まとめ
ここで議論された様々なオプションの比較概要を以下に示します。
ホスティングオプション | ローカル開発マシン | 別のサーバー | クラウドプロバイダー管理 | サードパーティ管理 | アプリケーションプラットフォーム管理 |
---|---|---|---|---|---|
プロジェクトステージ | 開発 | 開発、ステージング、本番 | 開発、ステージング、本番 | 開発、ステージング、本番 | 開発、ステージング、本番 |
コスト | 追加費用なし | 可変。追加の購入またはレンタル サーバーおよび追加の管理コスト。 | 選択と使用状況によって大きく異なります。 利用についても。 | 選択によって大きく異なります。 利用についても。 | 非常に可変 |
パフォーマンス | 低 | 高い可能性 | 非常に可変 | 非常に可変 | 非常に可変 |
スケーラビリティ | なし | 高い可能性 | 高 | 高 | 高 |
管理の複雑さ | 低 | 高 | 低 | 低 | 低 |
追加の注意点 | ネットワーク構成は不要。良い ローカル開発向け。 | 最も柔軟なオプションです。また、最も多くの 手動管理が必要です。もしあなたが 社内にハードウェアまたはデータベースの専門知識があり、 それを管理に専念できるのであれば良い選択肢です。 | 多くの場合、アプリケーションを実行できる同じクラウドプロバイダーによって提供される、高いスケーラビリティを持つソリューションです。 あなたのワークロードを実行できる同じクラウドプロバイダーが これにより、独自のサーバーを運用する重労働をすることなく、 ネットワーキングとパフォーマンスを犠牲にすることなく ネットワーキングとパフォーマンスに対する追加の制御が可能になります。 | サードパーティ管理データベースには、 クラウド提供データベースと同じ利点が多くあります。 しかし、サードパーティを通じてデータベースを 管理することで、基盤となるクラウドプロバイダーから データベース管理を切り離すことができます。 これにより、将来的に別のホストへの移行が容易になり、 より強力な管理オプションが提供される場合もあります。 より強力な管理オプション。 | アプリケーションプラットフォームが提供するデータベースサービスは、 多くの場合、他のほとんどの要因よりも シンプルな管理とアクセスに重点を置いています。 コストは使用状況によって大きく変動するため、 スケーリングと使用状況が料金に どのように影響するかを注視することが重要です。 お支払いにも影響します。 |
データベースをホストするための適切な選択は、アプリケーションの要件、開発段階、および独自のMySQLを管理する能力に大きく依存します。異なる選択肢は、これらの要素間でトレードオフを提供し、特定の時期や特定の組織にとってより適切になります。