Amazon RDS for MySQLとAmazon EC2インスタンスへのMySQLのインストール


31

職場では、すべてのWebサーバーをAmazon EC2でホストし、通常、Apache Webサーバーと同じボックスにインストールされたMySQLデータベースを使用し、それらと通信しましたlocalhost。現在、システムのいずれかのためにデータベースを独自のサーバーに移行する必要があります。Amazon RDSを使用するか、新しいAmazon EC2ボックスを起動してMySQLをインストールするという2つのソリューションから選択できます。

RDSは、EC2と同じ会社が提供する専用のデータベースサービスであり、明らかに優れたオプションである必要があるようです。ただし、2つのオプションの価格(http://aws.amazon.com/ec2/pricingおよびhttp://aws.amazon.com/rds/pricingを参照)を見ると、RDSサーバーのコストはほぼ同じ仕様のボックスでは、EC2サーバーの2倍。

バックアップを自分で処理でき、EC2がRDSと同じようにインスタンスをスケールアップできることを考えると、EC2の代わりにRDSを使用する理由はまったくわかりません。私が正しければ誰もRDSを使用しないので、おそらく何か大きなものを見逃しているようです。正確に何が欠けていますか?EC2インスタンスに独自のデータベースをインストールすることに対するRDSの利点は何ですか?


この質問を聞いてから、EC2とRDSの価格比が大幅に変更されたことは注目に値します。EC2でのインスタンスの稼働時間は依然として安価ですが、RDS価格の3分の2以上です。EC2からRDS(またはその逆)に移行しても、サーバーの請求額が2倍になる(または半分になる)ことはなくなりました。(もちろん、あなたの状況にもよりますが、気にする価値のある違いかもしれません。)
マークアメリー

回答:


20

私は一般的にAWSの大ファンです...しかし、RDSではありません。

@RolandoMySQLDBAは、それに対してかなり良い点をいくつか指摘しています。

EC2上のMySQLと比較したRDSの唯一の利点は、ポイントアンドクリックスナップショット、クローン、およびポイントインタイムリカバリを実行できることですが、これらは制御と柔軟性の損失を補うにはほとんど不十分です。価格が高くなることを正当化しないでください。RDSはいくつかの点でセクシーですが、すべての可動部分に到達できないため、最終的に修正できないものを最終的に信頼することはできません。

私はSUPER特権を持っていないのが好きではありません。エラーログを追跡できないことが嫌です。データベースサーバーで "top"または "iostat"を実行して、コアとドライブがどのように負荷を楽しんでいるかを確認できないのは嫌です。フェデレーションストレージエンジンにアクセスできないのは好きではありません。ホットスタンバイ(マルチAZ)バックアップマスターマシンにお金を払うという考えは、私がリードレプリカとして活用することさえできません。確かに、MySQLがRDBMS-in-a-boxとして正常にパッケージ化および販売されるために、これらの制約のすべてを適切に設定する必要がある理由は完全に合理的な説明があります。唯一のことは、RDBMS-in-a-boxが私が持っていない一連の問題をすべて「解決」し、邪魔をして、新しい問題を引き起こすことです。

しかし、RDSの私にとって絶対的な問題は、バイナリログとレプリケーションへのアクセスがまったくないことです。特に行ベースのBinlogは、小規模な災害に対する優れた回復ツールですが、アクセスできない場合は役に立ちません。RDSの運用データベースの読み取りレプリカとしてオフィスのオンプレミスサーバーを構成しますか?RDSに存在するデータに考えられないことが発生した場合に備えて、災害復旧のためにローカルバックアップを取得し、レポートを作成しますか?それは同時に明白で素晴らしいアイデアです。

申し訳ありませんが、レプリケーションに直接アクセスすることはできません。確かに、リードレプリカの代金を支払うことはできますが、他のRDSインスタンスとしてのみです。私の本では価値提案ではありません。

更新:MySQL 5.6のRDSの1つの重要な変更

ユーザー定義機能のサポートの欠如、Federated Storage Engineの使用不能、1つを使用できないことなど、いくつかの理由でRDSを実行するのではなく、自分のサーバーを実行することを好みます(EC2でも)緊急時のアクセスには追加の接続を使用できます...ただし...

AmazonはRDSのMySQL 5.6で大幅な変更を行い、主な異論の1つ、おそらく最大の異論を排除しました。バイナリログにアクセスできるようになり、非RDSインスタンスをスレーブとして実行したり、他のユーティリティをbinlogストリームを読み取るサーバー。

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.Procedural.Exporting.NonRDSRepl.html

公式には、ドキュメントは、ライブマイグレーションを行うためにスレーブをセットアップできるようにこれを公開していることを示しています-を使用して既存のRDSインスタンスから外部の将来のマスターサーバーを同期し、mysqldumpそれをスレーブとしてRDSに接続しますアプリケーションが新しいマスターに移行されるまで、レプリケーションストリームを介して更新のライブフィードを取得しますが、非公式には、サポートを期待しない限り、これを継続的に行うことができます...私には、合理的だ。

これは最近のウェビナーで確認され、 56:45頃から始まる会話で:

「無期限に複製された状態に保つことができます...

「...レプリケーションを維持する責任がある限り...」

「それがあなたが望むものであるならば、我々はあなたが進行中の複製をすることを妨げません。」

この新しい機能は、公開されていないWebサイトをサポートするMySQLインスタンスでRDSを使用するFEDERATEDことに全面的に異議を唱えるのに十分でした。

したがって、私はまだそれを支持していませんが、バイナリログのライブストリームがあることで、最終的にリアルタイムでデータの制御とトランザクションがないことを保証する責任を取り戻すため、私は反対しません壊滅的な停電で失われたものは私と一緒に戻ってきました。なぜなら、私はDBAとしてコントロールを取り戻したからです。サードパーティベンダーに指をさしたり、訴訟を提起したり、その他のことを行っても、ブラックボックス内のブラックホールから失われたデータを取り戻すことはできません。

経営陣はRDSの「アイデア」を好むようであり、コストの違いに異議を唱えないため、RDSを背後に持つすべての新しいWebサイトを立ち上げています。

ポイントアンドクリックポイントインタイムリカバリは、RDSの優れた機能です。既存のマシンを変更したり中断したりすることはありません。選択したポイントインタイムに最も近い時点で、必要なバイナリログを適用して、指定したポイントインタイムまでその新しいマシンを進めます。

これに関連しますが、別の方向では、同様の戦略を使用してライブMySQLデータベースをRDSに移行することも可能です... RDSマスターを接続できます(通常、これは新しくデプロイされたインスタンス)既存のシステムのスレーブとして、RDSインスタンスに移行した時点でデータのライブバージョンを保持します。5.6でのみ機能する外部複製用のRDS binlogへのアクセスとは異なり、内部複製は 5.5.33および5.6.13以降のRDSでサポートされています


Federated Storage Engineの使用方法を知っていますか?
バーラトカトリ

11

DBサーバーをスケールアウトするのがあなたの好みでない場合、Amazon RDSを使用しても問題ありません。単純に中程度のHA、バックアップ、およびスケールアウトが必要な場合は、多大なメリットがあります。

逆に、ハードウェアをスケールアップしたい場合は、RDSの問題ではありません。MySQLの機能を拡張したい場合はどうしますか?残念ながら、それは多くの面で問題になりません。

たとえば、7つのRDSサーバーモデルすべてで2つのフィールドが制限されていることをご存知ですか?

これらの2つのオプションに関する次のチャートに注意してください。

MODEL      max_connections innodb_buffer_pool_size
---------  --------------- -----------------------
t1.micro   34                326107136 (  311M)
m1-small   125              1179648000 ( 1125M,  1.097G)
m1-large   623              5882511360 ( 5610M,  5.479G)
m1-xlarge  1263            11922309120 (11370M, 11.103G)
m2-xlarge  1441            13605273600 (12975M, 12.671G)
m2-2xlarge 2900            27367833600 (26100M, 25.488G)
m2-4xlarge 5816            54892953600 (52350M, 51.123G)

あなたにはSUPER特権が与えられておらず、に直接アクセスすることはできませんmy.cnf。これに照らして、my.cnf起動オプションを変更するには、最初にMySQLベースのDBパラメーターオプションリストを作成し、を使用しRDS CLI (Command Line Interface)て目的のオプションを変更する必要があります。次に、これを実行して新しいオプションをインポートする必要があります。

  • カスタムDBパラメータグループを作成します(それを呼び出しますMySettings
  • RDS CLIをダウンロードし、AWS認証情報を使用して設定ファイルをセットアップします
  • 以下を実行します。 ./rds-modify-db-parameter-group MySettings --parameters "name=whateveroption,value=whatevervalue,method=immediate"
  • DBパラメータオプションリストを使用して変更する MySettings
  • MySQL RDSインスタンスを再起動します

APIを使用して単一の変数を更新し、RDSインスタンスを強制的に再起動して変更を実装しますか?いずれか1つのオプションをtweekするのは非常につらいプロセスです。

MySQLをスケールアップする場合は、EC2を使用してください。それから、あなたがmy.cnfいつもやってきて、慣れているように、あなたの好みに合わせて週を過ごすことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.