Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  EC2 を使用した MySQL データベースの配備

16.4.3 EC2 を使用した MySQL データベースの配備

EC2 インスタンスの稼働時間と可用性を保証することはできませんが、EC2 環境に MySQL を配備するときは、EC2 インスタンスに作業を簡単に配布できる方法を使用してください。これにはいくつかの方法があります。シャーディング技術 (複数のサーバーにアプリケーションを分割して、データセットとユーザーの特定のブロックを異なるサーバーに割り当てる) を使用することが、これを効果的に行う方法です。一般的なルールとして、インスタンスをより大きなマシンにアップグレードするよりも、より多くの EC2 インスタンスを作成してより多くのユーザーをサポートする方が簡単です。

EC2 アーキテクチャーは、EC2 インスタンスを長期間の高可用性ソリューションとしてではなく、一時的なキャッシュベースソリューションとして扱うときに最適に機能します。複数のマシンを使用することに加えて、memcached などのほかのサービスの利点を活用してアプリケーションに追加のキャッシュを提供することは MySQL サーバー上の負荷を低減し、書き込みに集中するのに役立ちます。EC2 内の大および特大インスタンスでは、使用可能な RAM がデータのために大きなメモリーキャッシュを提供できます。

独自のハードウェアで使用するほとんどのタイプのスケールアウトトポロジは EC2 環境内で使用および適用できます。ただし、すでに説明した制限とアドバイスを使用して、潜在的な障害によってデータが失われないようにしてください。また、各 EC2 インスタンスの相対能力が非常に低いため、シャーディングを使用するようにアプリケーションを変更したり、EC2 インスタンスを追加してアプリケーションのパフォーマンスを改善したりできるようにしてください。

たとえば、次に示す典型的なスケールアウト環境を見てください。ここでは、単一マスターが 1 つ以上のスレーブ (この例では 3 つ) に複製され、Web サーバーが各レプリケーションスレーブ上で動作しています。

典型的な標準スケールアウト構造

この構造は、マスター用に 1 つの EC2 インスタンス、Web および MySQL スレーブサーバーごとに 1 つのインスタンスを使用することで、EC2 環境に完全に再現できます。

注記

EC2 環境内では、EC2 インスタンスが使用する内部 (プライベート) IP アドレスは一定です。インスタンス間で通信するときは、常にこれらの内部アドレスと名前を使用します。パブリック IP アドレスを使用するのは、外部と通信する場合 (たとえば、アプリケーションを公開する場合) だけです。

データベースの信頼性を確保するには、アクティブなバックアップおよびストレージの割り当てるレプリケーションスレーブを 1 つ以上 Amazon S3 施設に追加します。次のトポロジでこれの例を見ることができます。

EC2 を使用してバックアップする典型的な標準スケールアウト構造

EC2 インスタンスで memcached を使用すると、パフォーマンスが向上するはずです。大および特大インスタンスには、非常に多くの RAM があります。アプリケーションで memcached を使用するには、データベースから情報をロードするときに、まず項目がキャッシュ内に存在するかどうかを確認します。探しているデータがキャッシュ内に存在する場合は、それを使用します。そうでない場合は、データベースからデータを再ロードしてキャッシュに移入します。

シャーディング は、該当するグループに応じて一意のデータセットを提供するために、個々のマシンまたはマシングループに割り当てることでデータベース全体のデータを分割します。たとえば、名字が文字 A - D で終わるすべてのユーザーを単一サーバーに置きます。ユーザーがアプリケーションに接続して名字が既知の場合は、クエリーを該当する MySQL サーバーにリダイレクトできます。

EC2 でシャーディングを使用する場合、Web サーバーと MySQL サーバーを個別の EC2 インスタンスに分けてから、シャーディング決定ロジックをアプリケーションに適用します。データアクセスにどの MySQL サーバーを使用すべきかを知っていると、クエリーを該当するサーバーに分配してください。次の図でこれの例を見ることができます。

負荷分散のために EC2 でシャーディングを使用する
警告

シャーディングと EC2 を使用する場合、インスタンスの障害の潜在性がアプリケーションに影響しないようにしてください。特定のシャードに MySQL サーバーを提供する EC2 インスタンスが失敗した場合、そのシャード上のすべてのデータは使用できなくなります。