我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何排查rocketmq错误迁移导致的问题

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何排查rocketmq错误迁移导致的问题

小编给大家分享一下如何排查rocketmq错误迁移导致的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

  由于测试环境机器老化,导致测试环境rocketmq集群有台机器关机了(那台机器有一个namesrv、一个master、一个另外的slave),后来起来了,运维告诉我们那台集群可能随时要坏,建议把里面的东西迁移,后来商量给了一台新的测试环境,第一次迁移rocketmq,想的简单了,导致了这次rocketmq错误迁移导致问题排查。

  问题原因

  

  由于操作的时候仅仅复制了rocketmq的部署包,但是配置文件位置并不在rocketmq部署包里面,所以导致下面出现的一些问题。

  如何排查rocketmq错误迁移导致的问题

  配置类似这样的,路径单独指定了,和原来的部署包并不在一起,以后如何需要迁移rocketmq机器,记得把这些配置相关的文件都拷贝过去,启动的时候会自动读取的,虽然现在这个结论看起来很简单,但是从topic那块看出有点问题的时候,还是疑惑了一会会才想到,下面看看一步一步步骤吧。

  

  迁移操作

  

  我的做法是这样的:把原来要坏的机器上面的rocketmq部署的安装包拷贝到新机器,之后修改新机器的hosts之后命令启动,通过命令查看集群起来了。之后我修改集群里面另外的一台集群的hosts把里面的原来指向快坏的机器修改为新的机器地址过了一段时间之后也重启了。

  

  假如原来hosts为:

  如何排查rocketmq错误迁移导致的问题

        现在修改为:

        如何排查rocketmq错误迁移导致的问题

  备注: 配置hosts唯一好处是,下次换机器,只需要修改hosts文件即可,不需要在修改rocketmq配置文件了。

  

  

  问题现象

  

  现象1:

  

  应该是:

  如何排查rocketmq错误迁移导致的问题

  实际变成了:

  如何排查rocketmq错误迁移导致的问题

  现象2:

  

  topic的队列情况应该是:

  如何排查rocketmq错误迁移导致的问题

  实际上 有的topic变成了:

  如何排查rocketmq错误迁移导致的问题

  有的topic队列变成了只有:

  如何排查rocketmq错误迁移导致的问题

  刚刚看到这个现象的时候很奇怪,为什么会这样呢?

  

  分析

  

  把新加一台机器思路整理了下,到底做了什么,由于新迁移机器原来的一些配置topics.json,subscriptionGroup.json等信息都没有,由于2台机器先后都重启了。

  

  

     假如原来hosts为:

  如何排查rocketmq错误迁移导致的问题

        现在修改为:

        如何排查rocketmq错误迁移导致的问题

  由于新的机器已经启动,并且没有任何的topic信息,这个时候客户端(发送端所在的业务)也重启了,并且连接到了新的机器的namesrv上面,由于这个上面并没有topic任何相关信息,这个时候发送端业务需要发送消息,刚刚巧发送到新的机器获取getTopicRouteInfo,没有获取到信息,走默认topicTBW102,由于默认的读写队列为4,而另外一台机器有该topic信息所以是8,就导致了其中的一个问题。

  

  所以出现了这种情况:

  如何排查rocketmq错误迁移导致的问题

  另外一个现象是,客户端并没有发送数据操作,而另外一台机器内容也都重启了,由于broker会定时上报到namesrv(只有原来有的broker会上报,新的没有该topic信息上报),其实就在2个namesrv里面都仅仅注册了一个(topic其中就只有一个broker信息),后续发送获取getTopicRouteInfo,就只能获取一个,所以另外一台就没有任何信息了。

  如何排查rocketmq错误迁移导致的问题

  也就是这个情况了。

  如何排查rocketmq错误迁移导致的问题

  这个现象就解释完了。

  如何排查rocketmq错误迁移导致的问题

  **备注:**由于测试环境操作的可能性(和不太确定性,测试环境很多,很多人什么时候操作我根本不知道),只是个人推测情况,并且也能解释上面现象,如何有疑问或者哪里不对欢迎一起讨论。

  

  处理

  

  把原来快坏的机器上面的相应配置拷贝到新的机器即可(按照道理数据问题也应该拷贝的,但是新的已经入数据了,在拷贝就乱了),重启,现象正常。

  

  备注: 迁移需要注意,不是服务启动起来就行了,应该把运行的一些配置数据啥的都拷贝过去才行。

看完了这篇文章,相信你对“如何排查rocketmq错误迁移导致的问题”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何排查rocketmq错误迁移导致的问题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何排查rocketmq错误迁移导致的问题

小编给大家分享一下如何排查rocketmq错误迁移导致的问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!  由于测试环境机器老化,导致测试环境rocketmq集群有台机器关机了(那台机器有一个namesrv、一个mast
2023-06-04

导致mysqld无法启动的错误问题如何解决

这篇文章主要介绍了导致mysqld无法启动的错误问题如何解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇导致mysqld无法启动的错误问题如何解决文章都会有所收获,下面我们一起来看看吧。导致mysqld无法启
2023-07-05

如何解决使用stream将list转map时key重复导致报错的问题

这篇文章将为大家详细讲解有关如何解决使用stream将list转map时key重复导致报错的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。要将List对象集合转为map集合,可以通过stream流的形
2023-06-15

Excel数据导入Mysql常见问题汇总:如何处理导入数据时遇到的错误日志问题?

Excel数据导入Mysql常见问题汇总:如何处理导入数据时遇到的错误日志问题?导入Excel数据到MySQL数据库是一项常见的任务。然而,在这个过程中,我们经常会遇到各种错误和问题。其中之一就是错误日志问题。当我们尝试导入数据时,系统可能
2023-10-22

如何使用 CONCAT() 函数防止 MySQL LIKE 查询中 % 和 _ 字符导致的安全问题?

mysql like 查询安全过滤 % 和 _ 字符在 mysql 中使用 like 语句进行模糊查询时,经常需要对 like 语句后面的参数进行安全过滤,以防止 sql 注入攻击。当参数包含 % 或 _ 字符时,可能导致查询结果不准确或
如何使用 CONCAT() 函数防止 MySQL LIKE 查询中 % 和 _ 字符导致的安全问题?
2024-10-24
SQLServer 错误 1203 进程 ID %d 尝试对不归它所有的资源进行解锁: %.*ls。 请重试该事务,因为此错误可能是计时条件导致的。 如果该问题仍然存在,请与数据库管理员联系。 故障
2023-11-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录