RabbitMQ修改数据目录MNESIA数据目录

RabbitMQ修改数据目录MNESIA数据目录

  • 一、什么情况要调整数据目录
    • 1.1 磁盘空间不足
    • 1.2 磁盘性能瓶颈
    • 1.3 迁移集群的备份还原
    • 1.4 数据分离
  • 二、MNESIA简介
  • 三、操作步骤
  • 四、其他问题
    • 4.1 重启失败

一、什么情况要调整数据目录

1.1 磁盘空间不足

如果不指定数据目录,默认情况下的Mnesia目录为/var/lib/rabbitmq/mnesia
该路径属于系统磁盘,系统磁盘往往不会特别大,RabbitMQ有对于磁盘的限制默认最低为48MB。
若系统磁盘空间面临枯竭需要更改数据目录应对突发情况。

1.2 磁盘性能瓶颈

RabbitMQ节点间同步数据,对写入磁盘是非常频繁的。系统磁盘受限于磁盘类型和容量,IOPS等指标可能会有性能瓶颈。
将其更换到SSD磁盘IOPS更高的挂载盘是更好的选择,这对系统及RabbitMQ的性能都会得到大幅的提升。

1.3 迁移集群的备份还原

集群迁移,数据文件往往要恢复到新集群中。

1.4 数据分离

Mnesia可以将数据存储在节点的本地磁盘上,也可以将数据存储在多个节点之间,从而实现数据的分布式存储和管理。

二、MNESIA简介

Mnesia作为数据库存储引擎。Mnesia是一个基于Erlang语言开发的分布式数据库,其默认情况下将数据存储在节点的本地磁盘上。

Mnesia提供了一个基于事务的存储系统,支持ACID属性(原子性、一致性、隔离性和持久性),可以保证数据的完整性和可靠性。Mnesia可以将数据存储在节点的本地磁盘上,也可以将数据存储在多个节点之间,从而实现数据的分布式存储和管理。

在RabbitMQ中,Mnesia用于存储所有队列、交换器、绑定和节点的元数据信息。Mnesia还用于跟踪连接、通道和消息的状态信息,以确保消息在传输过程中的可靠性和正确性。通过使用Mnesia,RabbitMQ可以轻松地扩展到大规模的分布式系统,提供高可用性和高性能的消息传递服务。

因此,Mnesia数据库和RabbitMQ集群有紧密的联系。

三、操作步骤

修改数据目录的方法目前已知仅能从配置文件进行调整并且需要重启服务来生效。
生产环境不具备高可用的架构需要评估谨慎操作;如果使用集群的方式且具有高可用的特性(队列镜像或仲裁队列)可以逐节点进行修改。

首先创建目录,并设置目录权限

mkdir -p /mnt/data01/rabbitmq/data
chown -R rabbitmq:rabbitmq /mnt/data01/rabbitmq 

数据目录控制的配置文件为/etc/rabbitmq/rabbitmq-env.conf。因此需要在配置文件中进行指定。

sed -i '$a MNESIA_BASE=/mnt/data01/rabbitmq/data' /etc/rabbitmq/rabbitmq-env.conf

拷贝数据文件至新目录

cp -a /var/lib/rabbitmq/mnesia/* /mnt/data01/rabbitmq/data

重启服务

sudo systemctl restart rabbitmq-server

此时可以通过管理界面或rabbitmqctl命令来查看修改后的内容是否生效。

四、其他问题

4.1 重启失败

若重启失败将配置文件内容进行删除,再进行重启服务即可

你可能感兴趣的:(rabbitmq)