RabbitMQ数据备份与还原

一、场景

目前有服务器A和服务器B ,由于业务需要,要求把服务器A上mq的数据迁移到服务器B上,rabbitmq的数据包括元数据(RabbitMQ用户、vhost、队列、交换和绑定)和消息数据,而消息数据存储在单独的消息存储库中。

A:192.168.100.58
B:192.168.100.60

二、元数据备份和还原

1、操作

在服务B上搭建rabbitmq服务,注意,主机名最好和A上的MQ保持一致。避免后面的数据存储节点名不一致,导致启动失败。
安装过程:https://www.jianshu.com/p/e1aa16852044

2、导出数据

用管理员账号登录到A服务器上的管理后台
http://192.168.100.58:15672,按如下所示把备份的数据下载到本地

RabbitMQ数据备份与还原

3、导入数据

登录到B服务器上的MQ管理后台
http://192.168.100.60:15672,进入如下图所示的位置,导入数据,大致10秒钟左右。

RabbitMQ数据备份与还原

4、验证数据

刷新页面,查看用户、队列、vhost 等信息是否存在

RabbitMQ数据备份与还原

三、消息数据备份和还原

1、确定数据目录

登录到A服务器,执行如下命令,确定消息数据存储目:
[root@heiban data]# rabbitmqctl eval rabbit_mnesia:dir().
“/var/lib/rabbitmq/mnesia/rabbit@heiban”

2、为避免数据的一致性,需先停掉服务

systemctl stop rabbitmq-server.service

3、备份数据目录

cd /var/lib/rabbitmq/mnesia/
tar -zcvf rabbit@heiban.tar.gz rabbit@heiban

4、还原数据

登录到B服务器上,先备份原来的数据目录,上传到备份数据到对应目录,并解压
cd /var/lib/rabbitmq/mnesia/
tar -zxvf rabbit@heiban.tar.gz

5、修改数据目录权限

chown -R rabbitmq:rabbitmq rabbit@heiban

6、启动B服务器上rabbitmq服务

systemctl start rabbitmq-server.service

7、验证消息数据是否还原成功

RabbitMQ数据备份与还原

四、注意

内部节点数据库在某些记录中存储节点的名称,如果节点名称发生更改,则必须第一使用以下rabbitmqctl命令更新数据库以便更改:

rabbitmqctl rename_cluster_node <oldnode> <newnode>

当新节点以备份目录和匹配的节点名称启动时,它会根据需要执行升级步骤并继续引导。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...