RabbitMQ的数据日志存放以及数据迁移

一、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

时间: 2024-10-11 16:28:50

RabbitMQ的数据日志存放以及数据迁移的相关文章

OSharp3.0框架解说系列(6.2):操作日志与数据日志

前言 在<[开源]OSharp框架解说系列(6.1):日志系统设计>中,我们已经设计并实现了一个可扩展的日志系统,只要定义好输出端的Adapter,就可以以任意形式输出日志信息. 在日志开发中,有些日志记录需求是常规需要的,比如操作日志,数据变更日志,系统异常日志等,我们希望把这些常规需求都集成到OSharp框架当中.有了内置的支持,在做开发的时候,只需要很简单的配置,就可以实现相关需求. 关于三类日志,这里先简要描述一下: 操作日志:粗略描述系统用户(如管理员.业务人员.会员等)对系统的业务

进程虚拟地址空间之数据分区存放【转】

转自:http://blog.csdn.net/bullbat/article/details/7318269 作者:bullbat 在前面的<对一个程序在内存中的分析 >中很好的描述了程序在内存中的布局,这里对这个结果做些总结和实验验证.下面以Linux为例(实验结果显示windows上的结果也一样). 我们还是利用前面看到过的这个图,如下图:32位X86机器的内存布局图,内存主要分为栈.堆.BSS段.数据段.代码段5个段.   代码段:代码段(code segment/text segme

Oracle使用数据泵 (expdp/impdp)实施迁移

Oracle使用数据泵 (expdp/impdp)实施迁移 实验环境: 1.导出环境:RedHat6.4+Oracle 11.2.0.4.0,利用数据库自带的scott示例用户进行试验测试. Directory:wjq  à /tmp/seiang_wjq 2.导入环境:Centos7.1+Oracle 12.2.0.1.0   Oracle12c默认没有scott用户 Directory:imp_wjq  à /tmp/imp_comsys 一.导出数据: 特别注意:如果后续要导入的数据库版本

MySQL DDL操作--------指定表数据文件存放目录最佳实战

1. 背景 * 在MYSQL中建立一张数据表,在其数据目录对应的数据库目录下都有对应表的.frm文件,.frm文件是用来保存每个数据表的元数据(meta)信息,包括表结构的定义等,.frm文件跟数据库存储引擎无关,也就是任何存储引擎的数据表都必须有.frm文件,命名方式为数据表名.frm,如user.frm. .frm文件可以用来在数据库崩溃时恢复表结构. * MySQL文件包括MySQL所建数据库文件和MySQL所用引擎创建的数据库文件. * .frm 文件与操作系统和数据库引擎无关,都有这么

mysql通过binlog日志来恢复数据

简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通过我们的备份文件来恢复,也只能恢复到 2016-11-19 09:30:00 这个时间点,而9.30分到10:30分这一个小时的数据恢复不了,这时候我们可以通过mysql的binlog日志来恢复没有备份到的这一小时的数据. 1.开启mysql的binlog日志(默认情况下没有开启) #vim /et

Cocos2d-x 3.1.1 学习日志3--C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员

有关const成员.static成员.const static成员的初始化: 1.const成员:只能在构造函数后的初始化列表中初始化 2.static成员:初始化在类外,且不加static修饰 3.const static成员:类只有唯一一份拷贝,且数值不能改变.因此,可以在类中声明处初始化,也可以像static在类外初始化 #include <iostream> using std::cout; using std::endl; class base { public: base(int

osharp3 操作日志之数据日志 控制增强

osharp3 原来的数据日志,有配置文件中有这总开关,DataLoggingEnabled,原来的程序是,这个总开关关了,就无法记录数据日志了,,如果开了,,他不管记录不记录数据日志,系统都会存数据改动日志到DataLogCache中 我在 DbContextBase中注入了一个操作记录员类 public IOperateLoger OperateLoger { get; set; } public class OperateLoger : IOperateLoger,IScopeDepend

MYSQL使用二进制日志来恢复数据

mysqlbinlog工具的使用,大家可以看MySQL的帮助手册.里面有详细的用, 在这个例子中,重点是--start-position参数和--stop-position参数的使用. ·--start-position=N 从二进制日志中第个位置等于N参量时的事件开始读. ·--stop-position=N 从二进制日志中第个位置等于和大于N参量时的事件起停止读. OK,现在开始,要启动二进制日志记录,要先在my.cnf / my.ini文件的mysqld里添加 log-bin=日志名 在这

MySql通过二进制日志文件恢复数据

在<百度.阿里.腾讯如何承载PB级别大数据>的视频中了解到,大型网站的数据库每天都会定时的进行数据备份份.如果设置每天的0点进行数据备份,在两个数据备份周期期间数据库出现宕机情况,0点到宕机这个时间段的数据如何备份呢?在MySql中是通过数据库的二进制日志文件进行数据恢复的. MySql的二进制日志文件默认是关闭的,需要我们在MySql根目录下的my.ini文件中设置为开启状态.设置方式为在[mysqld]节点下,添加log-bin=mysql  binlog-do-db=spring,mys