1.备份元数据
在服务B上搭建rabbitmq服务,注意,主机名最好和A上的MQ保持一致。避免后面的数据存储节点名不一致,导致启动失败
- 通过图形备份元数据
- 导入新机器上面
验证数据
刷新页面,查看用户、队列、vhost 等信息是否存在
💡 说明
内部节点数据库在某些记录中存储节点的名称,如果节点名称发生更改,则必须首先使用以下rabbitmqctl命令更新数据库以便更改:
rabbitmqctl rename_cluster_node <oldnode> <newnode>
rabbitmqctl rename_cluster_node <oldnode> <newnode>
当新节点以备份目录和匹配的节点名称启动时,它会根据需要执行升级步骤并继续引导
2.备份消息数据
1.备份 rabbitmq 配置
[root@beta ~]# rabbitmqadmin export rabbitmq_back.json
Exported definitions for localhost to "rabbitmq_back.json"
#有密码方式
/sbin/rabbitmqadmin -H ${mq_server_ip} -P ${mqadmin_port} -u ${mqadmin_user} -p ${mqadmin_pw} export ${mq_config_backup_file} > /dev/null 2>&1
[root@beta ~]# rabbitmqadmin export rabbitmq_back.json
Exported definitions for localhost to "rabbitmq_back.json"
#有密码方式
/sbin/rabbitmqadmin -H ${mq_server_ip} -P ${mqadmin_port} -u ${mqadmin_user} -p ${mqadmin_pw} export ${mq_config_backup_file} > /dev/null 2>&1
2.恢复配置
[root@beta ~]# rabbitmqadmin import rabbitmq_back.json Imported definitions for localhost from "rabbitmq_back.json"
[root@beta ~]# rabbitmqadmin import rabbitmq_back.json Imported definitions for localhost from "rabbitmq_back.json"
3.获取 rabbitmq 数据目录
#获取数据目录执行如下命令
[root@beta ~]# rabbitmqctl eval 'rabbit_mnesia:dir().'
"/data/ajime/ajime_data/rabbitmq_data/mnesia/rabbit"
#获取数据目录执行如下命令
[root@beta ~]# rabbitmqctl eval 'rabbit_mnesia:dir().'
"/data/ajime/ajime_data/rabbitmq_data/mnesia/rabbit"
4.备份
为保证数据一致,可以先停止 rabbitmq
[root@beta mnesia]# pwd
/data/ajime/ajime_data/rabbitmq_data/mnesia
tar -zcf rabbitmq_backup.tar.gz rabbit
[root@beta mnesia]# pwd
/data/ajime/ajime_data/rabbitmq_data/mnesia
tar -zcf rabbitmq_backup.tar.gz rabbit
5.数据恢复
恢复数据比较简单,把压缩档解压至数据目录中即可。恢复到另一节点则不适用,备份同一台机器,然后重启同一台机器
参考地址
- https://www.rabbitmq.com/backup.html
- https://www.rabbitmq.com/upgrade.html
- https://www.rabbitmq.com/blue-green-upgrade.html
3.删除数据
1. 清空指定queue队列的数据
#查看队列
rabbitmqctl list_queues
#清空指定队列
rabbitmqctl -q purge_queue queue_name
#查看队列
rabbitmqctl list_queues
#清空指定队列
rabbitmqctl -q purge_queue queue_name
2. rabbitmqadmin清空队列
#查看队列
rabbitmqadmin list queues
#清空指定队列
rabbitmqadmin delete queue name=queue_name
#查看队列
rabbitmqadmin list queues
#清空指定队列
rabbitmqadmin delete queue name=queue_name
3. 清空全部队列
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
4. 管理端操作
在web管理端可以进行操作,选择到要操作的队列,下拉里面有一个Purge(不要选到delete)