当前位置:   article > 正文

RabbitMQ队列迁移_rabbitmq 迁移

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';
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

改完之后验证是否成功: 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
  • 1
  • 2
  • 3
  • 4

迁移完毕!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/956397
推荐阅读
相关标签
  

闽ICP备14008679号