Amazon RDSとMySQLを使用するEC2のそれぞれの利点/制限は何ですか?[閉まっている]


132

2つの基本的な違いが2つあります。

  1. EC2は安くなる

  2. 保守を行う必要がないRDS

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

私の使用についてもう少し詳しく説明するために、データベースを用意しました。大きすぎず、何も(最大のテーブルは100万行)、SELECTボリュームが大きいだけです。


ec2の一貫したバックアップ方法を追加するだけです。alestic.com/2009/09/ec2-consistent-snapshotこのツールは、300 GBのサーバーと約5,000のデータベースで使用します。現時点で3000 IOPSボリュームの場合、クリーンでないシャットダウンから開始されるため、mysqlを開始するのに約1.2時間かかるため、mysqlはすべてのテーブルをスキャンする必要があります。
jozwikjp 2014

dba.stackexchange.com/questions/34525/…にクロスサイトの重複があります。これはいくつかの良い答えを得ました。
Mark Amery 2015年

回答:


135

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

つまり、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ホスティングにとってひどいオプションです。


1
いい答えだ。これは私がしたい正確に何である:aws.typepad.com/aws/2010/10/... -正しい方向に私を導いてくれてありがとう
冒険野郎マクガイバー

いい答えだ。週に4時間のダウンタイムをどのように処理しますか?
Tihom

8
4時間のメンテナンスウィンドウについて知っておくべき重要なことの1つは、サーバーが週4時間ダウンしていないことです。メンテナンスが必要な場合、それは彼らがメンテナンスを行うときです。私は何ヶ月もの間RDSサーバーを実行していて、ダウンタイムはゼロでした。
efalcao 2011年

2
ダウンタイムなしでYDSのRDSサーバーを実行しました。1回の大規模な停止(約6時間)が1回ありましたが、AWSが解決すると、すべてが正常に戻りました。(これはマルチAZインスタンスでしたが、バックアップへのフェイルオーバーに失敗したことを指摘しておきます)。
cjm2671 2013年

1
@paulkon-オフサイトレプリカへのフェイルオーバーは行わず、RDSフェイルオーバーを使用します。そうしないと、新しいマスターへの昇格などが難しくなります。オフサイトレプリカは主に、クラウド外のバックアップDRと、レポート環境の読み取り/書き込み分割用です(アプリケーションレベルはそれらを認識しています)。HTH
ロス

24

では、このポストの間に優れたベンチマークがあります:

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

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


2
ベンチマークを公開するのは良いことですが、著者は最後にInnodbを適切に調整しなかったことを誠実に認めました(変更する大きなパラメータの1つは、もちろんinnodb_buffer_pool_size ....変更しませんでした)
phil_w

12

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

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

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


1
40 GBのデータを含むデータベースに読み取りスレーブを追加すると、20分以上かかりました。これと、通常のec2および/またはオフサイトでの読み取りスレーブの利用不可のコストと欠如は、私にとってはほとんど手始めではありません。RDSは、真の高可用性とフェイルオーバーの応答時間を必要としない小規模なショップに適していると思います。何よりもDBAを排除することが私見です。
ロス

ここで朗報(2020年3月)。オーロラにより、状況は大幅に改善されました。それでもマスター-スレーブシステムは実行されませんが、新しい「クラウドベース」のストレージシステムを作成したため、フェイルオーバーは非常に高速になりました。また、高速なスナップショットとバックアップを提供します。Auroraは実際にRDS MySQLの多くの欠点に対処しています。
ジェフホワイティング

6

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

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


上記の回答を投稿して以来、AmazonはRDSインスタンス(現在はMySQLのみ)の読み取りレプリカのサポートを明示的に導入していることに注意してください。
DavidJ 2014年

5

メンテナンス期間の質問について。マルチAZを使用する場合、RDSは別のアベイラビリティーゾーンにスタンバイレプリカを作成するため、メンテナンスのためのダウンタイムがなく、ゾーンの障害から身を守ることができます。

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


4

EC2上のMySQLとRDS MySQL

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

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

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

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

EC2でのMySQLの欠点

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

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

RDS MySQLよりもIOPSが小さい(RAID 0の後でも)現在、EC2のMySQLには6つのディスクを備えた10800、RDS MySQLでは12500 IOPS 16KB


4

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

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

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


1

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

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


メンテナンスウィンドウは毎週ダウンタイムではないことに注意してください。必要に応じてメンテナンスを行う時期です 。aws.amazon.com / rds / faqs /#12上記の回答に対する@efalcaoのコメントも参照してください。
mpdaugherty、2011

xeround.comに何らかのデータがある場合、本当にクールですが、本当に$$です
csharp4me
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.