云网牛站
所在位置:首页 > Linux云服务器 > 备份与恢复RabbitMQ数据和配置的方法

备份与恢复RabbitMQ数据和配置的方法

2019-01-10 21:41:10作者:王优明稿源:云网牛站

我们在CentOS 7或Ubuntu系统上安装了RabbitMQ,现在本文介绍为RabbitMQ配置和数据执行备份,包括有关将RabbitMQ备份还原恢复到新部署中。

 

安装参考

在CentOS 7/CentOS 6系统上安装RabbitMQ的方法

在Ubuntu 18.04 LTS系统上安装RabbitMQ服务器的步骤

 

获取群集状态

$ rabbitmqctl cluster_status

Cluster status of node rabbit@computingforgeeks-centos7 ...

[{nodes,[{disc,['rabbit@computingforgeeks-centos7']}]},

{running_nodes,['rabbit@computingforgeeks-centos7']},

{cluster_name,<<"rabbit@computingforgeeks-centos7">>},

{partitions,[]},

{alarms,[{'rabbit@computingforgeeks-centos7',[]}]}]

 

备份RabbitMQ配置

请注意,此备份不包含消息,因为它们存储在单独的消息存储库中,它只会备份RabbitMQ用户、vhost、队列、交换和绑定,备份文件是RabbitMQ元数据的JSON表示,我们将使用rabbitmqadmin命令行工具进行备份。

管理插件附带命令行工具rabbitmqadmin,你需要启用管理插件:

rabbitmq-plugins enable rabbitmq_management

此插件用于执行与基于Web的UI相同的一些操作,这对于自动化任务可能更方便。

 

下载rabbitmqadmin

启用管理插件后,下载与HTTP API交互的rabbitmqadmin Python命令行工具,它可以从任何启用了管理插件的RabbitMQ节点下载:

http://{node-hostname}:15672/cli/

下载后,使文件可执行并将其移动到/usr/local/bin目录:

chmod +x rabbitmqadmin

sudo mv rabbitmqadmin /usr/local/bin

要备份RabbitMQ配置,请使用以下命令:

rabbitmqadmin export <backup-file-name>

比如:

$ rabbitmqadmin export rabbitmq-backup-config.json

Exported definitions for localhost to "rabbitmq-backup-config.json"

导出写入文件filerabbitmq-backup-config.json。

 

恢复RabbitMQ配置备份

如果你想从备份中恢复RabbitMQ配置,请使用以下命令:

rabbitmqadmin import <JSON backup file >

比如:

$ rabbitmqadmin import rabbitmq-backup.json 

Imported definitions for localhost from "rabbitmq-backup.json"

 

备份RabbitMQ数据

RabbitMQ定义和消息存储在位于节点数据目录中的内部数据库中,要获取目录路径,请针对正在运行的RabbitMQ节点运行以下命令:

rabbitmqctl eval 'rabbit_mnesia:dir().'

输出示例:

"/var/lib/rabbitmq/mnesia/rabbit@computingforgeeks-server1"

该目录包含许多文件:

# ls /var/lib/rabbitmq/mnesia/rabbit@computingforgeeks-centos7

备份与恢复RabbitMQ数据和配置的方法

在从3.7.0开始的RabbitMQ版本中,所有消息数据都组合在msg_stores/vhosts目录中,并存储在每个vhost的子目录中,每个vhost目录都使用散列命名,并包含带有vhost名称的.vhost文件,因此可以单独备份特定的vhost消息集。

要做RabbitMQ定义和消息数据备份,复制或归档此目录及其内容,但先需要停止RabbitMQ服务:

sudo systemctl stop rabbitmq-server.service

以下示例将创建一个存档:

tar cvf rabbitmq-backup.tgz /var/lib/rabbitmq/mnesia/rabbit@computingforgeeks-centos7

 

恢复RabbitMQ数据

要从备份中还原,请将文件从备份提取到数据目录。

内部节点数据库在某些记录中存储节点的名称,如果节点名称发生更改,则必须首先使用以下rabbitmqctl命令更新数据库以便更改:

rabbitmqctl rename_cluster_node <oldnode> <newnode>

当新节点以备份目录和匹配的节点名称启动时,它会根据需要执行升级步骤并继续引导。

 

相关主题

在Ubuntu 18.04 LTS系统上配置RabbitMQ集群的步骤

精选文章
热门文章