遇到一个问题
一个 rabbitmq server 的内存不够了,加了内存之后重启
重启后发现,账号登录不上了!
吓死我
研究了一下,原因如下:
- rabbitmq sever 依赖 hostname。
- 机器上的 hostname 没有持久化,重启之后,hostname 变了
先来说说第一个问题。
rabbitmq server 的数据持久化存储在 /vobiledata/rabbitmq
目录下面:
root@iZbp1ghi852mxfw5grbimsZ:/vobiledata/rabbitmq# ll
total 40K
drwxr-xr-x 7 rabbitmq rabbitmq 4.0K Feb 17 21:44 .
drwxr-xr-x 4 root root 4.0K Feb 24 2022 ..
drwxr-x--- 2 rabbitmq rabbitmq 4.0K Feb 17 21:37 log
drwxr-x--- 5 rabbitmq rabbitmq 4.0K Feb 17 21:45 rabbit@iZbp1ghi852mxfw5grbimsZ
-rw-r----- 1 rabbitmq rabbitmq 163 Feb 17 21:37 rabbit@iZbp1ghi852mxfw5grbimsZ-feature_flags
-rw-r----- 1 rabbitmq rabbitmq 4 Feb 17 21:44 [email protected]
drwxr-x--- 2 rabbitmq rabbitmq 4.0K Feb 17 21:44 rabbit@iZbp1ghi852mxfw5grbimsZ-plugins-expand
drwxr-x--- 5 rabbitmq rabbitmq 4.0K Feb 17 21:35 rabbit@szbq-rabbitmq-52
-rw-r----- 1 rabbitmq rabbitmq 137 Jul 15 2022 rabbit@szbq-rabbitmq-52-feature_flags
drwxr-x--- 2 rabbitmq rabbitmq 4.0K Feb 17 19:39 rabbit@szbq-rabbitmq-52-plugins-expand
重启之前,我的 hostname 是 szbq-rabbitmq-52,重启之后 hostname 变成了 iZbp1ghi852mxfw5grbimsZ,因为 hostname 变了,所以 rabbitmq sevrer 在 /vobiledata/rabbitmq
下又创建了一个关于 iZbp1ghi852mxfw5grbimsZ 的一堆目录,而我之前的数据,包括 excharge、queue、message甚至账号信息都是存储在 rabbit@szbq-rabbitmq-52 相关目录下面的
所以,这个问题要怎么解决,其实就是修改 hostname,然后重启一下 rabbitmq server,一切都就回来了
service rabbitmq-server restart
参考: rabbitmq 如何在 docker 下做数据持久化?
然后说会第二个问题,hostname 持久化和不持久化的问题
hostname 怎么样是不持久化的?hostname szbq-rabbitmq-52
这样执行就是临时的 ,机器重启就会回去
那要怎么持久化 hostname?修改 /etc/hostname
文件即可