oblogproxy+flinkcdc 增量同步OceanBase 至 Doris 失败

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】社区版OB
社区版oblogproxy
flinkcdc
Doris
【 使用版本 】社区版OB4.2.1.8 社区版oblogproxy 2.0
【问题描述】使用 oblogproxy+flinkcdc 同步OceanBase 数据至 Doris 是可以成功的,但是发现增量的数据没有同步过去,重新运行之后数据可以拉过去,之后新增三条数据发现还是没有同步过去,增量同步异常,应用没有报错,就是新增的数据同步不过去。
【复现路径】
【附件及日志】
logproxy.log

oblogproxy 配置


【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

推荐使用 obdiag 工具进行日志采集,以便我们进一步分析问题所在。

日志采集场景: 未知问题
日志采集命令: obdiag gather scene run --scene=observer.unknown

请您按照上述命令采集日志,并将采集到的日志压缩包提供给我们,以便我们进行更详细的分析。同时,为了更好地帮助您解决问题,请您提供以下信息:

  1. 您是否已经检查过 Doris 端的配置,确保其能够正确接收来自 OceanBase 的增量数据?
  2. 您能否提供具体的 oblogproxy 和 FlinkCDC 的配置文件内容,特别是与 OceanBase 和 Doris 连接相关的部分?
  3. 您能否提供增量数据同步失败的具体时间点,以及在此时间段内的应用操作日志?
  4. 您是否尝试过重启 oblogproxy 服务,以查看问题是否能够得到解决?
  5. 您能否提供更多的 oblogproxy 和 FlinkCDC 的日志信息,特别是在出现 ‘Failed to check the existence of svr_min_log timestamp column in _all_virtual_server_clog_stat’ 和 ‘Failed to fetch peer info of fd:9, errno:9, error:Bad file descriptor’ 错误时的日志上下文?

检索到的文档如下:

  1. 使用 Canal 从 OceanBase 数据库同步数据到 MySQL 数据库
  2. CDC 概述

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

建议使用最新版本 obbinlog-ce V4.0.1

这个是大变更了,oblogproxy目前已经有业务在用,我们用的是CDC模式,没有binlog模式,应用的startup_mode 是 initial

我联系这块的老师看下,有进展回复你

看起来是不支持4218的

根据您的描述,您正在使用 oblogproxy 的 CDC 模式进行增量数据同步,且应用的 startup_mode 设置为 initial。在这种情况下,增量数据未能同步的问题可能涉及多个方面。以下是一些可能的原因及排查建议:

1. 检查 oblogproxy 配置

  • 确保 oblogproxy 配置正确:请确认 oblogproxy 的配置文件中,与 OceanBase 和 Doris 连接相关的配置项是否正确。特别是 oblogreader_pathbinlog_max_file_size_bytesbinlog_heartbeat_interval_us 等参数。
  • 检查 startup_mode 配置:您提到 startup_mode 设置为 initial,这意味着 oblogproxy 会在首次启动时从最新的事务日志开始读取。请确保这是您期望的行为。如果需要从某个特定的时间点开始同步,可以考虑使用 timestampgtid 模式。

2. 检查 Doris 端配置

  • 确保 Doris 能够接收增量数据:请确认 Doris 端的配置是否正确,特别是与 FlinkCDC 相关的配置。确保 Doris 能够正确接收并处理来自 oblogproxy 的增量数据。

3. 检查 FlinkCDC 配置

  • 确保 FlinkCDC 配置正确:请确认 FlinkCDC 的配置文件中,与 oblogproxy 和 Doris 连接相关的配置项是否正确。特别是 connectortopicformat 等参数。
  • 检查 FlinkCDC 日志:查看 FlinkCDC 的日志,确认是否有任何错误或警告信息,这些信息可能会帮助您定位问题。

4. 检查网络和连接

  • 确保网络连接稳定:请确认 oblogproxy 和 Doris 之间的网络连接是稳定的,没有丢包或延迟过高的情况。
  • 检查连接超时设置:请确认 oblogproxy 和 FlinkCDC 的连接超时设置是否合理,避免因超时导致的数据同步失败。

5. 检查日志信息

  • 查看 oblogproxy 日志:您提供的日志中有一些错误信息,如 Failed to check the existence of svr_min_log timestamp column in _all_virtual_server_clog_statFailed to fetch peer info of fd:9, errno:9, error:Bad file descriptor。这些错误可能表明 oblogproxy 在与 OceanBase 集群通信时遇到了问题。
  • 查看 OceanBase 集群日志:请检查 OceanBase 集群的日志,确认是否有任何与 oblogproxy 相关的错误或警告信息。

6. 重启服务

  • 重启 oblogproxy 服务:有时重启 oblogproxy 服务可以解决一些临时性的问题。请尝试重启 oblogproxy 服务,观察增量数据同步是否恢复正常。

7. 联系技术支持

  • 寻求专业帮助:如果您已经尝试了上述方法但问题仍然存在,建议联系 OceanBase 的技术支持团队,他们可以提供更专业的帮助和指导。

参考文档

希望以上建议能帮助您解决问题。如果需要进一步的帮助,请随时联系我们。

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

  1. OceanBase 日志代理服务(OBLogProxy)
  2. 使用 Canal 从 OceanBase 数据库同步数据到 MySQL 数据库
  3. 使用 Flink CDC 从 OceanBase 数据库迁移数据到 MySQL 数据库
  4. CDC 概述
  5. 使用 ChunJun 从 OceanBase 数据库迁移数据到 MySQL 数据库
  6. ob_startup_mode

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

老师,我看一下oblogproxy版本吧,安装人员不确定,是这样看版本吗

好的,老师,麻烦了

从 cdc 的支持版本序列来看,用的是 V2.0.2,可以试下换成 V2.0.2_BP1,对应的 rpm 包是 oblogproxy-2.0.2-101000142024080121

升级不可取,目前该工具上已经有其它业务在跑。而且这不是升不升级的问题,测试环境验证增量数据是可以的同步。生产环境目前就不行,新增1800条数据都通不过不过去。测试和生产环境配置都一样,上面的报错老师你看一下

上面的 error 日志是 metric 模块报出来的,其实并不影响功能使用。如果你们的测试环境同样的配置运行没问题的话,就得看看其他日志文件有没有别的 error 信息了。如果最外层的 log 目录下没有 error,可以进到 run/{client id}/log 下面,看看其他 log 有没有 error。