web-dev-qa-db-ja.com

MySQLを使用したAmazon RDSとEC2のそれぞれの利点/制限は何ですか?

私は2つの間にいくつかの基本的な違い、すなわち.

  1. EC2は安くなる

  2. RDSメンテナンスをする必要はありません

これら2つ以外に、MySQLサーバーとして機能する別のEC2サーバーとは対照的に、RDSからデータベースを実行する利点があります。同様のインスタンスサイズを想定すると、負荷を処理できるという点で両方とも同じ制限に直面しますか?

私の使用についてもう少し情報を提供するために、私はデータベースを用意しました。大きすぎても何もありません(最大テーブル100万行)。

132
Macgyver

これは非常に複雑な答えを伴う単純な質問です!

要するに:RAID0 EBSを使用する場合、EC2は最大のパフォーマンスを提供します。 RAID0 EBSを実行するには、次のようなかなりの量のメンテナンスオーバーヘッドが必要です。

http://alestic.com/2009/06/ec2-ebs-raid

http://alestic.com/2009/09/ec2-consistent-snapshot

RAID0 EBSのないEC2は、安っぽいI/Oパフォーマンスを提供するため、実際にはオプションではありません。

RDSは、最高のパフォーマンスではありませんが、すぐに使用できます。管理コンソールは素晴らしく、インスタンスを簡単にアップグレードできます。高可用性と読み取り専用のスレーブはクリックするだけです。それは本当に素晴らしいです。

簡単な答え:RDSを使用します。まだフェンスにいますか? RDSで行く!!!最大のパフォーマンスを得るために頭を悩ませたり、少しずつ調整したりする場合は、EC2 + EBS RAID 0を検討できます。バニラEC2は、MySQLホスティングのひどいオプションです。

135
efalcao

この投稿 では、以下の間に優れたベンチマークがあります。

  • 小さなEC2 + EBSでのMySqlの実行
  • 小さなEC2 + EBS +調整されたMySqlパラメーターでMySqlを実行する
  • 小さなRDS

ベンチマークは、理想的な条件(1つのスレッドのみ)だけでなく、50のスレッドがデータベースにヒットするより現実的なシナリオにも焦点を当てているため、非常に優れています。

24
Andres

RDSは実際には高可用性システムではありません。 RDSのよくある質問をご覧ください。フェールオーバーイベント中に、フェールオーバーに最大3分かかることがあります。追加のAmazonは、rdsインスタンスを「アップグレード」し、その時点でデータベースを「最大3分間」ダウンさせるフェイルオーバーを実行する必要があると判断します(私たちの経験では、それよりも長くかかる場合があります)。

RDSの高可用性は、マスター(マスターまたはマスター)のスレーブ複製とは非常に異なり、はるかに低速です。 mysqlレプリケーションは使用しませんが、何らかの種類のebsレプリケーションを使用します。そのため、フェイルオーバーの状況では、バックアップマシンにebsをマウントし、mysqlを起動し、mysqlが障害回復を行うのを待って(うまくいけば破損がひどくなりません)、dnsスイッチを実行します。

これがあなたの評価に役立つことを願っています。

12
Jeff Whiting

EC2 MySQLインスタンスの使用を選択した理由は、読み取りボリュームが多く、マスター/スレーブレプリケーションが必要だからです。もちろん、複数のRDSインスタンスをスピンアップし、それらの間でMySQLレプリケーションをセットアップすることもできますが、EC2インスタンスを使用してそれを管理するScalr.netを使用します。

基本的に、Scalrに必要な数のMySQLインスタンスを保持し、レプリケーションのセットアップを自動化し、マスターが終了した場合のマスターへのスレーブプロモーションの自動フェールオーバーを処理します。マスター。そのため、新しいスレーブを作成する必要がある場合、最後のマスタースナップショットのEBSボリュームを自動的に一時的にマウントしてスレーブDBを初期化し、適切なポイントからレプリケーションを開始します。すべてのポイントとクリック:)(いいえ、私はScalrなどには取り組んでいません。Scalrは、サービスを使用したくない場合はオープンソースとして利用できます)

6
DavidJ

メンテナンスウィンドウの質問について。マルチAZを使用する場合、RDSは別のアベイラビリティゾーンにスタンバイレプリカを作成するため、メンテナンスのためのダウンタイムが発生せず、ゾーン障害から保護されます。

それは私が来週かそこらでやろうとしていることです。もちろん、それはあなたにもっと費用がかかりますが、私はまだそれを少し働いていません。

5
Shin

私は数か月間RDSを試してきましたが、ここにいくつかの問題があります。

  1. SQLプロファイラーの使用は注意が必要です。プロファイラーをサーバーに直接接続できないため、いくつかのストアドプロシージャを実行して、分析可能なログファイルを作成する必要があります。彼らはそれがどのように行われるかについていくつかの提案を提供していますが、それはユーザーフレンドリーにはほど遠いです。この種の作業は、認定されたSQLの専門家に依頼することのみをお勧めします。

  2. amazonがインスタンスをバックアップしている間、個々のデータベースを復元することはできません。いくつかの個別の顧客固有のデータベースを備えたWebアプリがあり、私のソリューションは、SQLを実行しているEC2インスタンスを起動して本番RDBデータベースに接続し、データをインポートしてからEC2インスタンスにバックアップすることでした。もう1つのソリューションは、スキーマを再作成し、データを復元ポイントに戻す大規模なSQLスクリプト(アプリサーバー上)を作成するサードパーティのツールを使用することでした。

4
Eccountable

EC2上のMySQLとRDS MySQL

EC2上のMySQLの利点 Amazon EC2リージョン間レプリケーション

Amazon EC2リージョン間でスナップショットをコピーする

MySQL EC2のEBSストライピングを使用したRAID 0

EC2のMySQLには、3TBを超えるディスク容量(サイズに応じてこれは必要ありません)を接続できます。

EC2上のMySQLの欠点

RDSと比較した構成、監視、保守

RDSで利用可能なポイントインタイムバックアップ

IDSはRDS MySQLよりも低い(RAID 0後でも)、現在EC2上のMySQL用に6ディスクで10800であるのに対し、RDS MySQLでは12500 IOPS 16KB

4
Harish Ganesan

今週末も同じ質問がありました。メンテナンスを行うRDSには、週に4時間のダウンタイムウィンドウがあります。 EC2のマイクロインスタンスを回避できる場合、RDSはより高価に見えます。 (これは、トラフィックが最小のテストインスタンスに当てはまります)また、権限がないため、RDSインスタンスのタイムゾーンを変更できませんでした。

私は実際に http://xeround.com/ を見ています。これは別の会社がEC2でmysqlを実行しているところです。彼らはInnoDBを使用せず、代わりにIDGと呼ばれる独自のエンジンを持っています。調査を始めたばかりですが、ベータ版であり、500MBの空き容量があります。

1
Tihom