收藏本页 | 设为主页 | RSS
LOGO

我就上乐乐吧

因为数据压力的关系,老板对目前项目的服务器环境不太满意,于是生产环境中就遇到要迁移RabbitMQ数据迁移的场景。之前又提及过,迁移MySQL和Redis都是不难的...

您当前的位置:首页 » 技术杂萃
全站公告
重要提示!

本站收集各类美图,以无LOGO原汁原味图为主!欢迎大家交流。
怕失联,请认准如下地址:
微博:传送门
土豆:传送门
电报:传送门
微信:superimagelove
花瓣:传送门
Q群1:231151757
Q群2:583138281
文件解压密码:593668.com
热心赞助

站内搜索
 
相关文章
热门文章
热搜词组
文章归档
友情链接
RabbitMQ通过shovel插件迁移数据

发布日期:2020-05-22  关键词: RabbitMQ shovel

因为数据压力的关系,老板对目前项目服务器环境不太满意,于是生产环境中就遇到要迁移RabbitMQ数据迁移的场景。之前又提及过,迁移MySQL和Redis都是不难的,但是这个RabbitMQ数据迁移就没有搞过,所以网上找了下资料。

资料上面说明,RabbitMQ数据迁移需要shovel插件,无论是源端还是目的端都要有,当然这两者之间的网络也必须是相通的。

shovel基于RabbitMQ的Erlang客户端实现,且作为内建插件被使用,故可以随broker的启动而自动启动;shovel具有松耦合特性:通过该插件可以在分属不同管理域下的broker或cluster之间进行消息的搬运;shovel还具有WAN 友好特性:基于AMQP 0-9-1协议实现,并设计成能够保证在不稳定网络场景下不丢失消息;shovel同时具有高度可定制性:允许在shovel建立连接后,立即执行指定的AMQP方法进行定制化操作。

shovel插件的使用存在static和dynamic两种形式,static是使用配置文件来实现的,这里就不多说了,迁移的工作主要还是通过dynamic,即直接通过WEB界面来进行创建和删除shovel。

那么接下来就可以慢慢尝试来迁移RabbitMQ数据了。

1)开启Shovel插件
开始shovel插件及管理命令如下:
# rabbitmq-plugins enable rabbitmq_shovel
# rabbitmq-plugins enable rabbitmq_shovel_management
如果成功启用,登录WEB管理控制台,将看到如下内容:

RabbitMQ通过shovel插件迁移数据,RabbitMQ,shovel,技术杂萃


2)配置Shovel
Shovel可以配置在源端,也可以配置在目的端。这里为了迁移的目的,所以直接在目的端来进行一个配置,以便将源端的队列迁移到目的端的队列。
进入rabbitmq2的WEB管理控制台,进入Shovel Management,添加一个 shovel,界面如下图所示:

RabbitMQ通过shovel插件迁移数据,RabbitMQ,shovel,技术杂萃


这里的配置就是将,源端的队列数据全复制迁移到目的端。因为相应的操作比较简单,这里就不多做说明了。多个队列就配置多次即可。另外,换一个角度,其实在源端配置也是可以的。

3)查看shovel状态
添加成功后,可以通过Shovel Status查看shovel状态。如果配置成功,State应该显示RunNing,如果不是的话,说明源URL配置错误,或者是网络不通。

现在就是等待了,一般情况下,队列很快就可以复制迁移成功了。如果源端的队列有相应的数据,就会复制到目的端的。当然还有一种情况,就是目的端死机,这样也没有关系,只要目的端重启后,同样会自动再度复制迁移数据。

4)通过第三方中转
有些情况下,因为目的端无法直接访问【比如内网】,这种情况下,可以再加一个RabbitMQ服务器【可以多重,不过这种效率就难说】,通过它来中转下将源端的队列迁移到目的端的队列。

注意:
在使用shovel 插件时,要么只需要在源端进行配置,目的端不需要配置;同理,只需要在目的端配置,源端不需要配置。不能两边都配置,这样就变成了死循环了。节点上使能shovel插件,同样可以参照这个原理。
在shovel正常工作时,对于源端来说,不过增加了一条用于消费的TCP连接;同样对于目的端来说,也是增加了一条用于生成的TCP连接,和普通RabbitMQ客户端的连接行为没什么不同。
猜您喜欢:
Q群: 231151757微信:superimagelove 官网:www.593668.com