还原RabbitMQ中备份的排队消息不起作用
根据以下职位: 通过执行以下步骤,可以备份然后恢复持久队列消息: 要备份,我们必须: 1-停止rabbitmq服务器:还原RabbitMQ中备份的排队消息不起作用,rabbitmq,Rabbitmq,根据以下职位: 通过执行以下步骤,可以备份然后恢复持久队列消息: 要备份,我们必须: 1-停止rabbitmq服务器: #rabbitmqctl停止应用程序 2-复制(tar)文件夹“/var/lib/rabbitmq/mnesia/”: #tar-cvf mnesia.tar/var/lib/rabbitmq/mnesia/ 3-启动rabbitmq服务器: #rabbitmqctl启动应用程序 然后要恢复它们,我们必须: 1-停止rabbitmq服务器: #rabbitmqctl停止应用
#rabbitmqctl停止应用程序
2-复制(tar)文件夹“/var/lib/rabbitmq/mnesia/”:
#tar-cvf mnesia.tar/var/lib/rabbitmq/mnesia/
3-启动rabbitmq服务器:
#rabbitmqctl启动应用程序
然后要恢复它们,我们必须:
1-停止rabbitmq服务器:
#rabbitmqctl停止应用程序
2-复制回(untar)文件夹“/var/lib/rabbitmq/mnesia/”:
#tar-xvf mnesia.tar-C/
3-启动rabbitmq服务器:
#rabbitmqctl启动应用程序
但当尝试在rabbitmq群集或甚至在单个节点上应用这些步骤时,无法还原任何消息。
我们还注意到:
/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-node1/msg\u store\u transient
似乎存储排队消息的位置,
总是在rabbitmq服务器重新启动后进行清理(停止应用程序并启动应用程序)。
然后尝试在启动rabbitmq后复制备份的tar,以不清除文件夹/msg\u store\u,
但这也没有帮助(在web管理控制台中没有恢复消息的迹象)
我们正在虚拟机上执行测试,包括:
Ubuntu-14.04,
Erlang-R16B03,
RabbitMQ-3.4.1,
并使用java客户端创建的持久队列
非常感谢您提供帮助或提示,以正确恢复排队消息,尤其是在rabbitmq服务器出现故障后。需要持久性
已发布的消息应标记为持久消息-通过提供值为2的delivery_mode属性。看
在Java客户端中,我们可以如下设置:
AMQP.BasicProperties basicProperties = new AMQP.BasicProperties().builder().deliveryMode(2).build();
Channel channel = initializeChannel(...);
channel.basicPublish(exchange, rootinKey, basicProperties, message body in bytes);
存储位置
已发布的消息存储在
/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-node1/msg_store_persistent
目录,而不是
/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-node1/msg_store_transient
以及记忆的内容/rabbit@rabbitmq-重新启动rabbitmq后,未清理node1/msg_store_persistent**
还发现,在重新启动单个节点或所有集群节点后,所有标记为持久的消息都可用
单节点配置的恢复
对于仅备份了/var/lib/rabbitmq/mnesia的单节点rabbitmq配置,恢复备份的消息也能正常工作/rabbit@rabbitmq-node1dir,这很好,足以恢复队列及其所有消息,之后,您可以使用rabbitmq管理器web控制台删除队列及其内容
恢复群集配置和更改的节点名称
但在多个节点组成的集群中,在从所有集群节点删除队列后,无法恢复备份的消息
作为一种解决方法,我们尝试将备份从群集恢复到具有相同节点名称的单节点rabbitmq服务器(在我的示例中,节点名称为rabbit@rabbitmq-节点1)并通过执行以下步骤成功:
\\\etc/init.d/rabbitmq-server重启
对于我来说,这可以将特定队列的排队消息从集群恢复(IOW迁移)到单节点rabbitmq服务器。这可以在3.7.3版上使用。复制后,我必须设置文件的权限,因为它们来自Windows框。chown-R rabbitmq:rabbitmq/var/lib/rabbitmq chmod-R 777/var/lib/rabbitmq/mnesia