Skip to content

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.数据恢复

恢复数据比较简单,把压缩档解压至数据目录中即可。恢复到另一节点则不适用,备份同一台机器,然后重启同一台机器

参考地址

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)