RabbitMQ: использование диска и перенос базы данных

Thank you for reading this post, don't forget to subscribe!

Заби­вал­ся диск в ката­ло­ге базы RabbitMQ — /var/lib/rabbitmq/mnesia.

Быст­рый фикс — пере­не­сти его базу на отдель­ный диск.

Созда­ём новый каталог:

root@bttrm-prod-console:/home/admin# cd /data/ && mkdir rabbitdb

 

Обнов­ля­ем кон­фиг реб­би­та /etc/rabbitmq/rabbitmq-env.conf — зада­ём пере­мен­ную RABBITMQ_MNESIA_BASE:

RABBITMQ_MNESIA_BASE=/data/rabbitdb

Оста­нав­ли­ва­ем RabbitMQ:

root@bttrm-prod-console:/data# systemctl stop rabbitmq-server

 

Копи­ру­ем дан­ные из ста­ро­го ката­ло­га и меня­ем владельца:

root@bttrm-prod-console:/data# cp -r /var/lib/rabbitmq/mnesia/* /data/rabbitdb/
root@bttrm-prod-console:/data# chown -R rabbitmq:rabbitmq rabbitdb/

 

Запус­ка­ем его:

root@bttrm-prod-console:/data# systemctl start rabbitmq-server

 

Про­ве­ря­ем статус:

root@bttrm-prod-console:/data# rabbitmqctl status
Status of node 'rabbit@bttrm-prod-console' …
[{pid,30368},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.6.6"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.6.6"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.6.6"},

 

Доступ­ное ему место и Database directory path:

нача­ли про­ве­рять — поче­му же RabbitMQ так засрал диск: ока­за­лось, что в оче­ре­дях ско­пи­лось 2 мил­ли­о­на сооб­ще­ний, кото­рые не чита­лись, пото­му что зада­чи supervisor-а, кото­рые долж­ны полу­чать их, не были запущены.

Про­смот­реть спи­сок сооб­ще­ний в оче­ре­дях мож­но с помо­щью rabbitadmin:

root@bttrm-prod-console:/home/admin# rabbitmqadmin list queues -u adminuser -p p@ssw0rd
+------------------------+----------+
|          name          | messages |
+------------------------+----------+
| purchases              | 395 |