在 Linux 上升级 RabbitMQ,通常分 升级 Erlang(如需要) 和 升级 RabbitMQ 本体 两部分。下面按常见场景说明。
rabbitmqctl status | head -n 20
rabbitmqctl version
erl -version
RabbitMQ 对 版本跨度 有要求:
官方文档: https://www.rabbitmq.com/docs/upgrade
# 停止服务
systemctl stop rabbitmq-server
# 备份数据目录(默认)
cp -r /var/lib/rabbitmq /var/lib/rabbitmq.bak
cp -r /etc/rabbitmq /etc/rabbitmq.bak
# 更新 apt 源(如来自 PackageCloud 或 RabbitMQ 官方)
apt-get update
# 升级
apt-get install --only-upgrade rabbitmq-server
# 或重新安装指定版本
apt-get install rabbitmq-server=3.12.x-1
yum clean all
yum update rabbitmq-server
或(新版本):
dnf update rabbitmq-server
systemctl stop rabbitmq-server
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.12.x/rabbitmq-server-3.12.x-1.el8.noarch.rpm
rpm -Uvh rabbitmq-server-3.12.x-1.el8.noarch.rpm
或 Debian:
dpkg -i rabbitmq-server_3.12.x-1_all.deb
systemctl start rabbitmq-server
RabbitMQ 对 Erlang 版本有强制要求:
| RabbitMQ | Erlang |
|---|---|
| 3.12.x | 25.0+ |
| 3.13.x | 26.x |
erl -version
yum install erlang
或安装指定版本(推荐用 RabbitMQ 提供的 Erlang 包)
⚠️ 必须先升 Erlang,再升 RabbitMQ
如果是 RabbitMQ 集群:
rabbitmqctl stop_app
# 升级
rabbitmqctl start_app
rabbitmqctl status
rabbitmqctl cluster_status
rabbitmqctl list_queues
查看日志:
tail -f /var/log/rabbitmq/rabbit@*.log
| 问题 | 原因 |
|---|---|
| node not running | 数据版本不兼容 |
| Erlang version mismatch | Erlang 太低 |
| mnesia corrupted | 跨版本过大 |
如果你能告诉我:
我可以给你 精确升级命令。