2009-09-07 92 views
3

我在EC2實例上使用RabbitMQ,並且在EBS捲上有Mnesia表,所以當我將其快照並嘗試使用相同數據啓動另一個實例時,似乎該表正在被另一個RabbitMQ實例使用。如何在運行RabbitMQ實例的情況下正確地快照EBS卷?

就是要解決這個關閉的RabbitMQ下來沖水/快照,然後重新啓動它,一旦它做的唯一途徑?

有沒有辦法來清理文件,以便它們不會出現鎖定或正在強制解鎖?

這不是一個常見的問題,我會面對,只是好奇,如果有更好的解決方案。

爲了澄清,我看到錯誤是:timeout_waiting_for_tables

回答

3

您首先需要關心文件系統。不知道您是否使用LVM,ext3,xfs或什麼,但如果您使用的是LVM,則可能需要檢出dmsetup man page;特別是dmsetup掛起/恢復

最後你會喜歡的東西:

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

一旦你得到了文件系統正在同步/暫停,有RabbitMQ的擔心。 RabbitMQ的開發商馬蒂亞斯Radestock在email thread指出:

但對於持續性的消息我不敢肯定。如何管理 rabbit_persister.LOG?無論何時,我是否可以隨身攜帶 的備份副本,或者我可以只取其中一個rabbit_persister.LOG.previous?

我會同時備份文件。 它應該是 儘可能從備份中恢復 rabbit_persister.LOG 即使在 中追加了一個備份 - 我還沒有 進行了測試。如果備份在滾動日誌時佔用 ,則需要.previous日誌 。

我會在哪裏去找找出來它是如何經常推出?

確定何時滾動 日誌的邏輯相當複雜。

我可以觸發手動卷?

rabbit__persister:force_snapshot()in Erlang shell會訣竅。

結帳的力的快照目標在Rabbitmq Makefile

+1

我正在使用XFS,並且已經在此捲上創建了快照,只是當我將RabbitMQ的文件一起快照時,當我嘗試從快照的新副本啓動RabbitMQ時,失敗。 我將不得不查看錯誤,但這可能會訣竅!謝謝! – 2009-11-14 16:03:24

相關問題