A服务器备份rabbitmq持久化目录到B服务器,不显示mq队列消息
场景:在A服务器上docker启动mq服务,在mq服务器上恢复服务,结果队列消息丢失问题
1.备份持久化文件
docker inspect 容器id
"Mounts": [{"Type": "bind","Source": "/data/containers/rabbitmq/data","Destination": "/var/lib/rabbitmq","Mode": "rw","RW": true,"Propagation": "rprivate"}
# 使用tar压缩文件
tar -zcvf rabbitmq.tar.gz /data/containers/rabbitmq/data
将压缩文件发送到备用服务器103
2.新服务器启动mq服务
1.解压文件
解压文件到当前文件夹
tar -xzvf rabbitmq.tar.gz
查看文件
(base) [root@centos-3 rabbitmq]# ls
config data docker-compose.yml
docker-compose文件内容如下
services:rabbitmq:container_name: rabbitmqimage: registry.cn-hangzhou.aliyuncs.com/spider_tie/rabbitmq:3.7restart: alwaysulimits:nofile:soft: 65536hard: 65536environment:- TZ=Asia/Shanghai- RABBITMQ_DEFAULT_USER=rbadmin- RABBITMQ_DEFAULT_PASS=OpsXlab2024!ivolumes:- ./data:/var/lib/rabbitmqnetworks:- app-tier#ipv4_address: 172.22.1.10ports:- 5672:5672- 15672:15672
networks:app-tier:name: app-tierdriver: bridge#external: true# ipam:# config:# - subnet: 172.22.1.0/24
docker-compose up -d
web端查看服务如下,mq中没有队列消息
可以看到队列无消息,但是原来的mq服务是有消息的
2.解决消息未显示问题
需要备份hostname和cookie,要不然持久化消息无法被识别
docker exec -it f43fb7de1ba1 cat /var/lib/rabbitmq/.erlang.cookie
docker exec -it f43fb7de1ba1 hostname
例如在101上操作
[root@centos-1 mnesia]# docker exec -it f43fb7de1ba1 cat /var/lib/rabbitmq/.erlang.cookie
IHMICEQVPBXTPPFDNFTT
[root@centos-1 mnesia]# docker exec -it f43fb7de1ba1 hostname
f43fb7de1ba1
然后再备用服务器103操作
(base) [root@centos-3 rabbitmq]# docker exec -it a0dbe129970f cat /var/lib/rabbitmq/.erlang.cookie
IHMICEQVPBXTPPFDNFTT
(base) [root@centos-3 rabbitmq]# docker exec -it a0dbe129970f hostname
a0dbe129970f
docker-compose.yml文件如下
services:rabbitmq:container_name: rabbitmqimage: registry.cn-hangzhou.aliyuncs.com/spider_tie/rabbitmq:3.7restart: alwayshostname: f43fb7de1ba1ulimits:nofile:soft: 65536hard: 65536environment:- TZ=Asia/Shanghai- RABBITMQ_DEFAULT_USER=rbadmin- RABBITMQ_DEFAULT_PASS=OpsXlab2024!i- RABBITMQ_ERLANG_COOKIE=IHMICEQVPBXTPPFDNFTTvolumes:- ./data:/var/lib/rabbitmqnetworks:- app-tier#ipv4_address: 172.22.1.10ports:- 5672:5672- 15672:15672
networks:app-tier:name: app-tierdriver: bridge#external: true# ipam:# config:# - subnet: 172.22.1.0/24
注:主要是新增hostname,RABBITMQ_ERLANG_COOKIE
修改之后重新启动查看效果
备份前
备份后
至此,问题解决