一、rabbitMQ的数据和日志的存储位置
当我们安装rabbitMQ时,系统RabbitMQ默认读取的配置文件路径在%AppData%\RabbitMQ中,我们可以从以下脚本文件中可以看出:
想找到这个存储位置,一般我们就可以先去该文件路径查看有没有最近的日志和数据,那为什么要看有没有最近日期的呢?
答:因为日志和数据的位置是可以人为改变的,如果日志和数据的最新日期已经停留在很久之前并且队列一直都是在使用的,那么99%的可能都是因为存储位置改变了。
那么是如何改变的呢?
我们可以参考这篇文章:https://www.cnblogs.com/chinaifae/p/9993231.html
我自己也试了一下,见下图:
从图中以及上面的脚本文件截图中 我们都可以看出,这个数据和日志的存储位置 取决于这个 RABBITMQ_BASE的环境变量。当卸载服务之后,指定了 RABBITMQ_BASE的值为D:\RabbitMQ\Data,然后重新安装服务,那么我们就成功将日志和数据存储的位置从%AppData%\RabbitMQ更改到D:\RabbitMQ\Data了,当然原先文件中的文件还是要记得拷贝回来哦,不然当你重启rabbitMQ服务,浏览localhost:15692是会发现访问不了的。
当重启系统之后,问题又来了,发现在windows的系统变量中并没有发现RABBITMQ_BASE的环境变量,那么这个环境变量的值到底是存储在哪让程序读取到的呢?
经过无比艰难的寻找过程之后,终于在系统注册表中发现了他的踪迹…
大家还记得Erlang这个东西吗,没错,当我们安装rabbitMQ之前,需要先搭建一个Erlang的语言环境,意思也就是RabbitMQ是依附在Erlang下执行的,那么大家有没有想过,我们在安装过程中并没有对Erlang指定过RabbitMQ在哪或者是别的一些信息,那么Erlang是怎么知道的呢?答案都在下图中。
没错,这些信息在安装RabbitMQ Sevice时都被写入了该注册表中,从上图中可以看出记录很多有关RabbitMq配置的很多信息,我们想要看到的D:\RabbitMQ\Data的值也成功找到。
所以,如果在上面的方法中发现存储位置不在%AppData%\RabbitMQ中,我们可以通过查看注册表来查看日志和数据存储的位置。
二、如何迁移
好了,上面的内容成功介绍了 rabbitMQ的日志以及数据的存储位置,以及如何更改这个位置。
那么我们想将一个服务器上的rabbitMQ的队列数据想拷到另外一个服务器上的rabbitMQ中,该怎么办呢?毕竟,在我们日常工作中,往往正式服务器的RabbitMQ中的数据消费时出了什么问题,本地想调试时,不知道该怎么办,如果知道怎么转移,那么我们就可以轻松在本地调试本地的rabbitMQ队列属于正式服务器中队列的数据了。
1.找到正式服务器上日志和数据存储的位置,然后找到该目录下db\[email protected]\msg_stores\vhosts\628WB79CIFDYO9LJI6DKMI09L的文件夹,将里面的内容拷贝。
2.找到本地服务器上日志和数据存储的位置,同样找到上面的文件夹,将1里面拷贝的内容覆盖本地(覆盖之前最好备份下本地哦,这样测试完,还可在恢复回去)
覆盖的时候,还要注意一点,记得将rabbitMQ的服务停掉,否则是覆盖不了的哦,如果停了rabbitMQ的服务还是不行,请查看有关erlang的服务有没有全部停掉。
3.覆盖结束之后,重启rabbitMQ服务,这样我们去访问本地的队列,就会发现数据已经全部进去啦。
原文地址:https://www.cnblogs.com/luj-fighting/p/11022939.html