目录
一、背景
因原来rabbitmq版本存在漏洞需升级至最新版本。
原来是使用软件包部署,升级我采用使用docker-compose部署,后续还需升级直接改版本号就行,先部署新的,端口改成别的,调试没问题再恢复默认端口
二、部署新的mq
cat rabbitmq.yaml
version: '3'
services:
rabbitmq:
image: rabbitmq:3.9.13-management
container_name: rabbitmq
network_mode: bridge
hostname: localhost
restart: always
ports:
- 4369:4369 #erlang发现口
- 25672:25672 #server间内部通信口
- 15672:15672 #管理界面ui端口
- 5672:5672 ##client端通信口
volumes:
- ./rabbitmq:/var/lib/rabbitmq
- /etc/localtime:/etc/localtime
environment:
- RABBITMQ_DEFAULT_USER=xxxx
- RABBITMQ_DEFAULT_PASS=xxxx
- RABBITMQ_ERLANG_COOKIE=CURIOAPPLICATION
三、元数据备份和还原
1.在旧mq web上导出
2. 在新mq web上导入
3.刷新页面,查看用户、队列、vhost 等信息是否存在
四、消息数据备份和还原
1.确定原mq数据存储路径
[root@rabbitmq-ipr-service-test opt]# rabbitmqctl eval 'rabbit_mnesia:dir().'
"/var/lib/rabbitmq/mnesia/rabbit@rabbitmq-ipr-service-test"
2.因为新的mq我是使用docker-compose部署,直接做目录映射即可。如果使用软件包,需要压缩打包备份。
3.验证消息队列
五、注意
内部节点数据库在某些记录中存储节点的名称,如果节点名称发生更改,则必须首先使用以下rabbitmqctl命令更新数据库以便更改:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
当新节点以备份目录和匹配的节点名称启动时,它会根据需要执行升级步骤并继续引导。