2009-09-07 91 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

相关问题