RabbitMQ队列迁移

RabbitMQ把某个队列从一个集群迁移到另一个集群的操作方法

比如,把队列 dhgate_translate_priority 由酒仙桥读写jxq_mq_group_e集群的172.19.224.22、172.19.224.25节点分别迁移至酒仙桥读写jxq_mq_group_g集群的172.19.40.71、172.19.40.72节点。

step1、在dhmq管理平台(http://172.19.40.57:8080/login)上查看dhgate_translate_priority队列信息和所属集群id:
确认好迁移前所属集群和节点等信息,方便下面写sql改库用。

step2、在新集群新建exchange,ename = dhgate_translate_priority,其中Features属性尽量和原来的保持一致,Policy也和原来的保持一致,如果新集群还未添加policy,先添加policy:
在这里插入图片描述
在这里插入图片描述

step3、在新集群新建队列,qname = dhgate_translate_priority,属性和参数跟原来保持一致,然后给该队列绑定ename=dhgate_translate_priority的exchange。

step4、修改酒仙桥读写环境的队列相关数据库:dhmq_dev(QA环境数据库ip:172.30.100.13,用户和密码:dhmq_dev),修改queue和exchange:

-- td_dhmq_queue表,修改queue
update td_dhmq_queue set queuenode = replace(queuenode,'172.19.224.22_','172.19.40.71_')
where clusterid='5' and queuename='dhgate_translate_priority';
update td_dhmq_queue set queuenode = replace(queuenode,'172.19.224.25_','172.19.40.72_')
where clusterid='5' and queuename='dhgate_translate_priority';
update td_dhmq_queue set clusterid=8
where clusterid='5' and queuename='dhgate_translate_priority';
-- td_dhmq_exchange表,修改exchange
update td_dhmq_exchange set brokernode = replace(brokernode,'172.19.224.22_','172.19.40.71_')
where clusterid=5 and ename='dhgate_translate_priority';
update td_dhmq_exchange set brokernode = replace(brokernode,'172.19.224.25_','172.19.40.72_')
where clusterid=5 and ename='dhgate_translate_priority';
update td_dhmq_exchange set clusterid=8
where clusterid=5 and ename='dhgate_translate_priority';

改完之后验证是否成功: http://172.19.40.57:8080/getqueue?queuename=dhgate_translate_priority
响应值为新集群节点列表即成功。
在这里插入图片描述
在这里插入图片描述

step5、重启生产者和消费者服务,然后到rabbitmq管理平台查看该队列incomming和deliver状态: http://172.19.40.71:15672/#/queues

step6、迁移老集群该队列的数据(如果有未消费完的话)

dhgate_translate_priority老集群机器上还有剩余未消费的数据,如图:
在这里插入图片描述

-------------接下来开始迁移历史遗留数据----------

首先,在新集群上创建shovel,用来迁移队列源数据:
[技术中心 > DHMQ队列迁移 > image2021-9-28_16-47-28.png]

然后看下shovel执行状态:
在这里插入图片描述

到老集群上看看遗留的消息个数:
在这里插入图片描述

再检查下消费者个数:
在这里插入图片描述
step7、数据迁移完毕之后,到新集群上删除shovel

step8、确认无误后,到老集群上删除该队列即可:
删除队列的方法一:rabbitmq管理平台上,Queues—> Binds(先解绑exchange)-→Delete(删除)

删除队列的方法二:使用命令删除队列

  # 查看所有队列
  rabbitmqctl list_queues
  # 根据 queue_name 参数,删除对应的队列
  rabbitmqctl delete_queue dhgate_translate_priority

迁移完毕!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,进行rabbitmq数据迁移的步骤如下: 1. 首先,登录到dhmq管理平台(http://172.19.40.57:8080/login),查看dhgate_translate_priority队列信息和所属集群id,以确认迁移前的集群和节点信息,方便后续的SQL改库操作。\[1\] 2. 检查环境变量,确保执行命令时不会报错。设置Erlang的环境变量ERLANG_HOME为D:\erl\erl10.0.1\erts-10.0.1,ERLANG_SERVICE_MANAGER_PATH为D:\erl\erl10.0.1\erts-10.0.1\bin。设置RabbitMQ的环境变量RABBITMQ_SERVER为D:\rabbitmq\rabbitmq_server-3.7.7。\[2\] 3. 执行命令重新设定路径启动。在控制台中进入RabbitMQ安装目录下的sbin目录,使用命令rabbitmq-service.bat remove删除已安装的RabbitMQ服务。然后设置新路径,将RABBITMQ_BASE设置为D:\RabbitMQ\Data。最后重新安装RabbitMQ服务,使用命令rabbitmq-service.bat install。\[2\] 4. 查看管理界面。启动RabbitMQ管理页面,使用命令rabbitmq-plugins.bat enable rabbitmq_management。然后在本地浏览器中登录管理页面,访问http://localhost:15672,默认账号为guest/guest。\[2\] 5. 修改酒仙桥读写环境的队列相关数据库。连接到dhmq_dev(QA环境数据库ip:172.30.100.13,用户和密码:dhmq_dev),并执行以下SQL语句来修改queue和exchange: - 修改td_dhmq_queue表中的queue:使用update语句将queuenode中的IP地址从'172.19.224.22_'替换为'172.19.40.71_',将'172.19.224.25_'替换为'172.19.40.72_',并将clusterid从'5'修改为'8',其中queuename为'dhgate_translate_priority'。 - 修改td_dhmq_exchange表中的exchange:使用update语句将brokernode中的IP地址从'172.19.224.22_'替换为'172.19.40.71_',将'172.19.224.25_'替换为'172.19.40.72_',并将clusterid从'5'修改为'8',其中ename为'dhgate_translate_priority'。\[3\] 以上是进行rabbitmq数据迁移的步骤。请根据具体情况进行操作。 #### 引用[.reference_title] - *1* *3* [RabbitMQ队列迁移](https://blog.csdn.net/want_you_gogo/article/details/120934191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [RabbitMQ的数据日志存放以及数据迁移](https://blog.csdn.net/lutan20/article/details/128289661)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值