出现原因:
服务器的电源有问题,导致异常断电,服务器启动后,导致rabbitmq服务一直反复重启,还有虚拟机上部署rabbitmq,宿主机异常断电也会导致该问题,一直反复提示:
Failed to start RabbitMQ Messaging Server.
rabbitmq-server.service: Scheduled restart job, restart counter is at 2062.
Stopped RabbitMQ Messaging Server.
网上找了挺多教程,都是直接移除/var/lib/rabbitmq/mnesia目录,虽然简单粗暴,但是可能会导致没有消费的数据丢失,以下是我解决方案
处理步骤:
备份数据
cd /var/lib/rabbitmq/ #备份数据 sudo cp -rp mnesia mnesia_bak cd /var/lib/rabbitmq/mnesia/rabbit@{你的名称}/quorum/rabbit@{你的名称}
查看该目录下的.wal文件,数据大小是否是0,如果是0,那么恭喜你,大概率数据能够恢复了
如图:
将该.wal文件进行备份,将该文件进行删除,删除后重启rabbitmq-server,然后查看状态,发现服务状态已经是“running”
#重启服务 sudo systemctl start rabbitmq-server #查看服务状态 systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ Messaging Server
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-05-15 10:06:27 CST; 5h 40min ago
Main PID: 101398 (beam.smp)
Status: "Initialized"
Tasks: 91 (limit: 9388)
Memory: 93.7M
CGroup: /system.slice/rabbitmq-server.service
├─101379 /bin/sh /usr/sbin/rabbitmq-server
├─101398 /usr/lib/erlang/erts-10.6.4/bin/beam.smp -W w -A 64 -MBas ageffcbf -MHas ageffcbf -MBlmbcs 512 -MHlmbcs 512 -MMmcs 30 -P 1048576 -t 5000000 -stbt db -zdbbl 128000 -K true -- -root /usr/l>
├─101688 erl_child_setup 65536
├─101804 inet_gethost 4
└─101805 inet_gethost 4
看到这里是不感觉服务已经正常了,当然不是,后续登录mq的网页进行模拟获取消息和发送消息,提示访问被拒绝,所以这个时候需要执行下初始的脚本,以下是我执行脚本,可参考下
sudo rabbitmqctl add_user 用户名 密码 sudo rabbitmqctl set_user_tags 用户名 administrator sudo rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
执行以上代码后,可正常收发消息
希望能对你们有所帮助