我们在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
在从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> 当新节点以备份目录和匹配的节点名称启动时,它会根据需要执行升级步骤并继续引导。
相关主题 |