一、场景
现在有服务器A和服务器B ,由于业务需要,要求把服务器A上mq的数据迁移到服务器B上,rabbitmq的数据包括元数据(RabbitMQ用户、vhost、队列、交换和绑定)和消息数据,而消息数据存储在单独的消息存储库中。
A:192.168.2.58
B:192.168.1.60
二、元数据备份和还原
1、操作
在服务B上搭建rabbitmq服务,注意,主机名最好和A上的MQ保持一致。避免后面的数据存储节点名不一致,导致启动失败
安装过程详见:
2、导出数据
用管理员账号登录到A服务器上的管理后台
http://192.168.2.58:15672,按如下所示把备份的数据下载到本地
3、导入数据
登录到B服务器上的MQ管理后台
http://192.168.1.60:15672,进入如下图所示的位置,导入数据,大概10秒钟左右。
4、验证数据
刷新页面,查看用户、队列、vhost 等信息是否存在
三、消息数据备份和还原
1、确定数据目录
登录到A服务器,执行如下命令,确定消息数据存储目:
[root@rabbitmq-ipr-service-test opt]# rabbitmqctl eval 'rabbit_mnesia:dir().' "/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-ipr-service-test"
2、为避免数据的一致性,需先停掉服务
service rabbitmq-server stop
3、备份数据目录
tar -zcvf rabbit@rabbitmq-ipr-service-test.tar.gz rabbit@rabbitmq-ipr-service-test
4、还原数据
登录到B服务器上,先备份原来的数据目录,上传到备份数据到对应目录,并解压
tar -zxvf rabbit@rabbitmq-ipr-service-test.tar.gz
5、修改数据目录权限
chown -R rabbitmq:rabbitmq rabbit@rabbitmq-ipr-service-test
6、启动B服务器上rabbitmq服务
service rabbitmq-server satrt
7、验证消息数据是否还原成功
四、注意
内部节点数据库在某些记录中存储节点的名称,如果节点名称发生更改,则必须首先使用以下rabbitmqctl命令更新数据库以便更改:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
当新节点以备份目录和匹配的节点名称启动时,它会根据需要执行升级步骤并继续引导。