【 使用环境 】 测试环境
【 OB or 其他组件 】Oceanbase OMS
【 使用版本 】4.2.4
【问题描述】
1、源端有一个每天创建的日志表,命名规则为:test_yyyymmdd;
2、OMS,数据同步kafka,配置的匹配规则为:test_*;因为希望将每天新增的test_*的数据都写入kafka中;
3、每天23:00左右,源端创建下一天的新表,例如今天创建明天的新表则为:test_20240816;
4、源端建立新表并插入数据后,OMS报同步失败,错误信息类似为找不到topic对于test_20240816。
请问该如何配置避免上述情况?
【复现路径】出现相关问题,目前都是重建任务处理。
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
论坛小助手
#3
根据您的描述,您遇到了 OceanBase OMS 在进行 Kafka 数据同步时,由于源端(OceanBase)新增了表而导致的数据同步异常问题。
在这种情况下,我们可以先通过 obdiag
工具来收集一些基础信息,以便进一步排查问题。不过,根据当前提供的 obdiag
场景列表来看,没有直接针对数据同步或 Kafka 同步异常的特定场景。因此,我们选择一个较为通用的场景来收集集群的基础信息,这有助于我们了解集群的整体状态。
日志采集场景: 集群基础信息
日志采集命令:
obdiag gather scene run --scene=observer.base
这个命令将会收集集群的基本配置信息,包括但不限于集群版本、节点状态等,这对于理解集群的整体情况非常有用。
提供信息:
为了更准确地定位问题,请您提供以下信息:
- 新增表的结构是什么样的?是否包含了一些特殊的字段类型?
- 您是在进行全量迁移还是增量同步时发现的问题?
- OMS 控制台上是否有具体的错误提示信息?如果有,请提供错误详情。
- 新增表后,是否进行了结构迁移操作?如果没有,目标端(Kafka)的表结构是否与源端完全一致?
- 您使用的 OMS 版本是多少?
请执行上述命令并提供相关信息,我们将基于这些信息进一步分析问题所在。
具体信息可参考以下文档:
附上敏捷诊断工具 obdiag 使用帮助链接
论坛小助手
#8
根据您提供的信息,您在使用 OMS 进行 Kafka 数据同步时遇到的问题是:当源端创建新的日志表并插入数据后,OMS 无法找到对应的 Kafka topic,导致同步失败。您提到已经确保了表结构的一致性,并且没有进行结构迁移操作,同时也确认了表中不存在特殊字段类型。
分析
-
表结构一致性:您确认了源端表结构与 Kafka 目标端的表结构是一致的,这意味着表结构本身不应该成为问题的原因。
-
同步类型:您选择了增量同步,并且未选择同步 DDL。这意味着 OMS 不会自动检测并同步源端的表结构变化。
-
OMS 版本:您使用的是最新版本的 OMS,即 4.2.4 版本。
解决方案建议
-
手动添加 Topic:既然 OMS 不会自动同步表结构,那么当源端创建新表时,您需要手动在 Kafka 中创建对应的 topic。这样,当源端有新的表数据时,OMS 才能找到对应的 topic 并进行数据同步。
-
配置匹配规则:您提到使用了通配符
test_*
来匹配表名。请确保 Kafka 中的 topic 名称与源端表名完全一致,包括大小写和特殊字符等。
-
检查 OMS 配置:请检查 OMS 的配置文件,确保 Kafka 的连接信息正确无误,包括 broker 地址、端口等。
-
日志排查:虽然您未能截取到具体的错误信息,但在未来遇到类似问题时,建议及时截取错误日志,以便于排查问题原因。
总结
由于 OMS 在增量同步时不自动同步表结构,您需要确保 Kafka 中手动创建了与源端表名完全一致的 topic。此外,检查 OMS 的配置文件以确保 Kafka 的连接信息正确无误也很重要。
如果您按照上述建议操作后仍然遇到问题,请提供更多的错误日志信息,以便我们进一步分析问题原因。
具体信息可参考以下文档:
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
淇铭
#9
查看组件监控
单击页面右上角的 查看组件监控 截图发一下
您好,应该是没topic,我这次选择了,同步表结构。
淇铭
#13
找一下 这几个日志 上传一下
store日志
/home/ds/store/store{port}/log/libobcdc.log
store {port}如何查看:
找到组件ID → {ip}-{port}:{subtopic}:{seq}
增量同步组件日志
/home/ds/run/{组件ID}/logs/error.log
/home/ds/run/{组件ID}/logs/connector.log
/home/ds/store/store{port}/log/libobcdc.log 没错误信息,内容比较大。
libobcdc.zip (9.0 MB)
sync组件有,但是就是截图所示。
oms_run_logs.zip (79.3 KB)
刘彻
#16
新建链路的时候应该是选择一个指定的topic,不要批量,批量则是一张表一个topic,你这边的场景应该是这些表都应该放入一个topic
刘彻
#18
本地测试了一下,情况如你所碰到的,程序中默认是topic和表名一样
你可以这么搞,链路建好之后,点击 查看组件监控 - 更新
{“func”:“fn”,“name”:“a*”} 中加一个map → {“func”:“fn”,“name”:“a*”,“map”:“oms(这个就是想要发送到目标kafka中的topic名称)”}
[{“all”:false,“sub”:[{“func”:“fn”,“name”:“a*”,“map”:“oms”},{“name”:“all_mysql_type_test”,“map”:“oms”}],“func”:“fn”,“name”:“test.mariadb”,“map”:“NONE”}]
1 个赞