【问题标题】:How do I properly snapshot an EBS volume with a RabbitMQ instance running?如何在运行 RabbitMQ 实例的情况下正确为 EBS 卷创建快照?
【发布时间】:2009-09-07 21:35:58
【问题描述】:

我在 EC2 实例上使用 RabbitMQ,并且在 EBS 卷上有 Mnesia 表,因此当我对其进行快照并尝试使用相同数据启动另一个实例时,似乎该表正在被另一个 RabbitMQ 使用实例。

解决这个问题的唯一方法是关闭 RabbitMQ 以进行刷新/快照,然后在完成后重新启动它?

有没有办法清理文件,使它们看起来不被锁定或被强制解锁?

这不是我会面临的常见问题,只是好奇是否有更好的解决方案。

澄清一下,我看到的错误是:timeout_waiting_for_tables

【问题讨论】:

    标签: amazon-ec2 rabbitmq mnesia


    【解决方案1】:

    您首先需要关注文件系统。不确定您使用的是 LVM、ext3、xfs 还是什么,但如果您使用的是 LVM,您可能需要查看 dmsetup man page;特别是 dmsetup 暂停/恢复

    你最终会得到类似的东西:

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

    一旦文件系统同步/挂起,就需要担心 rabbitmq。 Rabbitmq 开发人员 Matthias Radestock 在email thread 中表示:

    但对于持久性消息,我不太确定。怎么样 rabbit_persister.LOG 管理?我可以把它的备份副本吗 什么时候,或者我可以只取其中一个 rabbit_persister.LOG.previous?

    我会备份这两个文件。 应该是 可以恢复 rabbit_persister.LOG 来自备份 即使那个备份被采取了 追加的中间 - 我没有 不过经过测试。 .previous 日志 在备份需要的情况下需要 在滚动日志时放置。

    我可以在哪里查看它的滚动频率?

    决定何时滚动的逻辑 日志相当复杂。

    我可以触发手动滚动吗?

    rabbit__persister:force_snapshot() 在 Erlang shell 可以解决问题。

    检查Rabbitmq Makefile 中的force-snapshot 目标。

    【讨论】:

    • 我正在使用 XFS 并且已经在此卷上进行了快照,只是当我将 RabbitMQ 的文件连同它一起快照时,当我尝试从快照的新副本启动 RabbitMQ 时,它会失败.我将不得不查找错误,但这可能会奏效!谢谢!
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 2015-01-18
    • 2019-04-06
    • 1970-01-01
    • 2019-01-23
    • 1970-01-01
    相关资源
    最近更新 更多