2012-01-02 14 views
2

EBSボリュームでMySQLを使用してEC2インスタンスをセットアップし、レプリケーション用のスレーブとして機能する別のインスタンスをセットアップしました。レプリケーションの設定は問題ありませんでした。私の質問は、これらのボリュームのスナップショットを撮ることです。私は、スナップショットプロセスのためにテーブルをロックする必要があることに気づいたので、ユーザに不便を与えることがあります。だから、私の考えは、マスターインスタンスだけを残して、スレーブとして動作するインスタンスのスナップショットを撮ることです。これは良いアイデアですか?同じような設定の人がいて、正しい方法で私を導くことができますか?レプリケーションに使用するEBSボリュームのスナップショット

また、スレーブインスタンスのスナップショットを作成するには、テーブルをロックする必要があります。レプリケーションが中断することになるのでしょうか?

ありがとうございます。

答えて

5

スナップショットを開始するときにデータベースをロックしてファイルシステムをフリーズすることをお勧めしますが、スナップショットを開始する実際のAPI呼び出しには数分の1秒かかります。そのため、データベースとファイルシステムはロック/長い間冷凍。データベースのロックを作成しようとすると、それは他の文が終了するのをロックされる前に待機する必要があるかもしれません

  1. :言っ

    、カップル他の考慮事項は、あなたが言及しなかったがあります付与された。この間、保留中のロックは、ロックを取得および解放するまで待つようにすることがあります。これにより、本番データベースの文の流れが中断される可能性があります。

  2. スナップショットの作成を開始すると、アプリケーション/データベースはボリューム上のファイルシステムを自由に使用できますが、書き込みが多い場合は、iowaitが高くなることがあります。あなたのアプリケーションの減速。その理由は、バックグラウンドスナップショットプロセスは、ブロックをS3にコピーしてから、アクティブボリューム上のそのブロックに書き込むことができるようにする必要があるからです。

ロックを要求して最初の問題を解決し、すぐに許可されないとタイムアウトします。私は少し待って、私がロックを得るまで再試行を続けます。適切なタイムアウトと再試行の遅​​延は、データベースの負荷によって異なります。

私は、あなたが提案したのと同じように、マスターの代わりにスレーブで頻繁で一貫したスナップショットを実行することで2番目の問題を解決します。しかし、EBSの本質的な耐久性を向上させるためだけにマスターに対して時折スナップショットを実行することをお勧めしますが、スナップショットをロックしたり、フリーズしたりする必要はありません。

また、フラッシングとフリーズ(XFS)をサポートするファイルシステムを使用することをお勧めします。それ以外の場合は、まだEBSボリューム上のすべてのブロック、またはファイルシステムの他の部分が変更されていて、スナップショット内で一貫していない可能性がある、MySQLのロックされたテーブルをスナップショットしています。

MySQLとXFS(どちらもオプション)で一貫性のあるEBSスナップショットを作成するために収集したベストプラクティスを実行するオープンソースソフトウェアを公開しました。

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

マスターでテーブルをロックすると、レプリケーションが中断されません、あなたの最後の質問に答えるために。スナップショットソフトウェアでは、読み込みロックでテーブルをフラッシュして、すべてがスナップショットされているディスク上にあることを確認し、フラッシュが潜在的なスレーブに複製されないようにキーワード「LOCAL」を追加します。

+0

おかげでmysqldを再起動してください。実際に、私はAWSとalestic.comの記事を読んで、MySQLをセットアップし、データベースのスナップショットを作成しています。非常に有益な記事!ありがとうございました。 あなたが言及した最初の問題は考慮しませんでした。ロックしようとするときにタイムアウトを調べる必要があります。第2号への回答に感謝します。 私はXFSを使用しています。スナップショットは正常に動作するはずです。また、ec2-consistent-snapshotを使用しようとしていますが、問題が発生しました。スクリプトに関連するものは何もありませんが、Fedora 15での使用に関連するいくつかの問題と戦っています。もう一度お礼します –

+0

私はFedoraを使用しませんが、他のディストリビューションでどのように動作するかを改善する方法が見つかった場合は、ec2-consistent-snapshotにパッチを追加して嬉しいです。 –

0

あなたは間違いなくスレーブのスナップショットを撮ることができます。

あなたの説明から、スレーブが操作上使用されているようには見えません。

このような場合は、その後、信頼性の高いボリュームのスナップショットを取得する最も安全な方法はには次のようになります。スレーブ に

  1. 停止MySQLサーバのいずれかAWSコンソールを使用して(スナップショットを開始、または
  2. スナップショットが完了すると、コマンドライン)
  3. により、スレーブサーバ上で詳細な回答のため
関連する問題