RabbitMQ 在 CentOS 上的备份策略
策略总览
备份方式与适用场景
落地步骤 CentOS 7/8 通用
rabbitmqctl eval 'rabbit_mnesia:dir().',常见路径为 /var/lib/rabbitmq/mnesia/rabbit@rabbitmq-plugins enable rabbitmq_managementrabbitmqadmin export /backup/rabbitmq_defs_$(date +%F).jsonsystemctl stop rabbitmq-servertar czvf /backup/rabbitmq_mnesia_$(date +%F).tar.gz -C /var/lib/rabbitmq/mnesia .systemctl start rabbitmq-serverfind ... -mtime +N -delete 清理旧备份。crontab 定时执行;通过 rsync 或对象存储同步到异地。0 2 * * * /usr/local/bin/backup_rabbitmq.sh恢复流程要点
rabbitmqadmin import /backup/rabbitmq_defs_YYYY-MM-DD.jsoncurl -T /backup/rabbitmq_defs_YYYY-MM-DD.json -X POST -u user:pass -H "Content-Type: application/json" http://<host>:15672/api/definitionssystemctl stop rabbitmq-servermv /var/lib/rabbitmq/mnesia /var/lib/rabbitmq/mnesia.bak_$(date +%F)tar xzvf /backup/rabbitmq_mnesia_YYYY-MM-DD.tar.gz -C /var/lib/rabbitmqsystemctl start rabbitmq-serverrabbitmqctl list_queues name messages_ready messages_unacknowledged、rabbitmqctl list_usersDocker 与容器化场景
docker exec <container> tar czf /backup/rabbitmq_$(date +%F).tar.gz -C /var/lib/rabbitmq .docker cp backup.tar.gz <container>:/tmp/ && docker exec <container> tar xzvf /tmp/backup.tar.gz -C /