3

EC2 インスタンスで RabbitMQ を使用しており、EBS ボリュームに Mnesia テーブルがあるため、スナップショットを作成して同じデータで別のインスタンスを起動しようとすると、テーブルが別の RabbitMQ インスタンスによって使用されているように見えます。

これを回避して、フラッシュ/スナップショットのためにRabbitMQをシャットダウンし、完了したら再び起動する唯一の方法はありますか?

ファイルがロックされているように見えたり、強制的にロックが解除されたりしないように、ファイルをクリーンアップする方法はありますか?

これは私が直面する一般的な問題ではなく、より良い解決策があるかどうかに興味があります.

明確にするために、表示されるエラーは次のとおりtimeout_waiting_for_tablesです。

4

1 に答える 1

3

最初に、関係するファイルシステムがあります。LVM、ext3、xfs などを使用しているかどうかはわかりませんが、LVM を使用している場合は、dmsetup のマニュアル ページを参照してください。具体的には dmsetup サスペンド/レジューム

次のような結果になります。

dmsetup suspend <dev> 
ec2-create-snapshot <vol> 
dmsetup resume <dev> 

ファイルシステムの同期/一時停止を取得したら、rabbitmq について心配する必要があります。Rabbitmq 開発者の Matthias Radestock は、電子メール スレッドで次のように述べています。

しかし、永続的なメッセージについては、よくわかりません。rabbit_persister.LOG はどのように管理されていますか? いつでもバックアップ コピーを取ることはできますか、それとも rabbit_persister.LOG.previous の 1 つだけを取ることはできますか

両方のファイルをバックアップします。バックアップが追加の途中で取得された場合でも、バックアップから rabbit_persister.LOG を復元できるはずです-ただし、テストしていません。ログのロール中にバックアップが行われる場合は、.previous ログが必要です。

ロールされる頻度を調べるには、どこを見ればよいでしょうか?

ログをロールするタイミングを決定するロジックはかなり複雑です。

手動ロールをトリガーできますか?

Erlang シェルの rabbit__persister:force_snapshot() がうまく機能します。

Rabbitmq Makefileでforce-snapshotターゲットをチェックアウトします。

于 2009-11-13T22:52:28.060 に答える