OMS kafka数据同步源端新增表后导致同步异常

【 使用环境 】 测试环境
【 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 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据您的描述,您遇到了 OceanBase OMS 在进行 Kafka 数据同步时,由于源端(OceanBase)新增了表而导致的数据同步异常问题。

在这种情况下,我们可以先通过 obdiag 工具来收集一些基础信息,以便进一步排查问题。不过,根据当前提供的 obdiag 场景列表来看,没有直接针对数据同步或 Kafka 同步异常的特定场景。因此,我们选择一个较为通用的场景来收集集群的基础信息,这有助于我们了解集群的整体状态。

日志采集场景: 集群基础信息

日志采集命令:

obdiag gather scene run --scene=observer.base

这个命令将会收集集群的基本配置信息,包括但不限于集群版本、节点状态等,这对于理解集群的整体情况非常有用。

提供信息:

为了更准确地定位问题,请您提供以下信息:

  1. 新增表的结构是什么样的?是否包含了一些特殊的字段类型?
  2. 您是在进行全量迁移还是增量同步时发现的问题?
  3. OMS 控制台上是否有具体的错误提示信息?如果有,请提供错误详情。
  4. 新增表后,是否进行了结构迁移操作?如果没有,目标端(Kafka)的表结构是否与源端完全一致?
  5. 您使用的 OMS 版本是多少?

请执行上述命令并提供相关信息,我们将基于这些信息进一步分析问题所在。

具体信息可参考以下文档:

附上敏捷诊断工具 obdiag 使用帮助链接

为了更准确地定位问题,请您提供以下信息:

  1. 新增表的结构是什么样的?是否包含了一些特殊的字段类型?
    不存在特殊字段类型。

  2. 您是在进行全量迁移还是增量同步时发现的问题?
    增量同步,同步DML。未选择同步DDL。

  3. OMS 控制台上是否有具体的错误提示信息?如果有,请提供错误详情。
    未截取信息,就重建任务了。

  4. 新增表后,是否进行了结构迁移操作?如果没有,目标端(Kafka)的表结构是否与源端完全一致?
    一致的。

  5. 您使用的 OMS 版本是多少?
    最新版本,4.2.4

再向您确认几个问题:

  1. 新增表的具体结构是什么样的它包含哪些字段和字段类型
  2. 当源端创建新表并插入数据后是在进行全量迁移还是增量同步时OMS 报告了同步失败
  3. OMS 控制台上关于找不到 topic 的具体错误信息是什么能否提供完整的错误日志
  4. 在源端创建新表之后是否对 Kafka 目标端进行了相应的结构迁移如果没有 Kafka 目标端的表结构是否与源端的新表结构完全一致
  1. 新增表的结构是什么样的?是否包含了一些特殊的字段类型?
    不存在特殊字段类型。
  2. 您是在进行全量迁移还是增量同步时发现的问题?
    增量同步,同步DML。未选择同步DDL。
  3. OMS 控制台上是否有具体的错误提示信息?如果有,请提供错误详情。
    未截取信息,就重建任务了。
  4. 新增表后,是否进行了结构迁移操作?如果没有,目标端(Kafka)的表结构是否与源端完全一致?
    一致的。
  5. 您使用的 OMS 版本是多少?
    最新版本,4.2.4

根据您提供的信息,您在使用 OMS 进行 Kafka 数据同步时遇到的问题是:当源端创建新的日志表并插入数据后,OMS 无法找到对应的 Kafka topic,导致同步失败。您提到已经确保了表结构的一致性,并且没有进行结构迁移操作,同时也确认了表中不存在特殊字段类型。

分析

  1. 表结构一致性:您确认了源端表结构与 Kafka 目标端的表结构是一致的,这意味着表结构本身不应该成为问题的原因。
  2. 同步类型:您选择了增量同步,并且未选择同步 DDL。这意味着 OMS 不会自动检测并同步源端的表结构变化。
  3. OMS 版本:您使用的是最新版本的 OMS,即 4.2.4 版本。

解决方案建议

  1. 手动添加 Topic:既然 OMS 不会自动同步表结构,那么当源端创建新表时,您需要手动在 Kafka 中创建对应的 topic。这样,当源端有新的表数据时,OMS 才能找到对应的 topic 并进行数据同步。
  2. 配置匹配规则:您提到使用了通配符 test_* 来匹配表名。请确保 Kafka 中的 topic 名称与源端表名完全一致,包括大小写和特殊字符等。
  3. 检查 OMS 配置:请检查 OMS 的配置文件,确保 Kafka 的连接信息正确无误,包括 broker 地址、端口等。
  4. 日志排查:虽然您未能截取到具体的错误信息,但在未来遇到类似问题时,建议及时截取错误日志,以便于排查问题原因。

总结

由于 OMS 在增量同步时不自动同步表结构,您需要确保 Kafka 中手动创建了与源端表名完全一致的 topic。此外,检查 OMS 的配置文件以确保 Kafka 的连接信息正确无误也很重要。

如果您按照上述建议操作后仍然遇到问题,请提供更多的错误日志信息,以便我们进一步分析问题原因。

具体信息可参考以下文档:

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

查看组件监控
单击页面右上角的 查看组件监控 截图发一下

您好,应该是没topic,我这次选择了,同步表结构。

但是,我发现增量拉取仍然可以拉。

只是增量同步不行。

只有增量同步才报错~

找一下 这几个日志 上传一下
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)

新建链路的那边如何配置的?截图看一下

新建链路的时候应该是选择一个指定的topic,不要批量,批量则是一张表一个topic,你这边的场景应该是这些表都应该放入一个topic

是的,没有批量。

多个表同步至一个已经存在的topic。

本地测试了一下,情况如你所碰到的,程序中默认是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 个赞

太感谢了,相关问题已处理。