oblogproxy的cdc模式往下游同步,在ob里面是否有记录同步的位置?

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】OB:4.2.1.7;oblogproxy:2.0.2
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

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

部署了两台oblogproxy,上面有负载均衡。 当手动关闭一台oblogproxy后,oblogclient程序重试连接到另外一台,下游收到了冗余的数据变更记录。
问题:
1、同步的位置信息是否在ob里面有记录?
2、如果有记录的话,是记录在哪个表里面吗?

根据您的问题描述,您关心的是在使用 oblogproxy 进行 CDC 模式数据同步时,OceanBase 数据库内部是否记录了同步的位置信息以及具体的记录位置。基于检索到的文档信息,目前没有直接提及 oblogproxy 在 OceanBase 内部记录同步位置的具体表或机制。不过,我们可以从 oblogproxy 的工作原理入手来推测可能的情况:

  1. 同步的位置信息是否在 OB 里面有记录?

    • 根据文档描述,oblogproxy 作为增量日志代理服务,它订阅并转发 OceanBase 数据库中的数据变更信息 [1], [3]. 由于 oblogproxy 的设计目的是为了方便应用接入 OceanBase 的增量日志,理论上它应该具备跟踪其读取位置的功能,以确保数据的连续性和一致性。但是,文档中并没有明确指出 oblogproxy 如何在内部维护这一状态信息。
  2. 如果有记录的话,是记录在哪个表里面吗?

    • 文档中没有直接提到 oblogproxy 记录同步位置的具体表或机制。考虑到 oblogproxy 是作为外部服务与 OceanBase 进行交互的,它可能有自己的方式来保存状态信息,而不一定是在 OceanBase 的某个表中记录。例如,它可能会使用内存或者文件系统来保存当前的同步进度。

综上所述,虽然我们不能确定 oblogproxy 是否在 OceanBase 内部记录了同步位置,但从其作为增量日志代理服务的角度来看,它应该有能力维持同步状态的一致性。建议您可以查阅 oblogproxy 的官方文档或源码以获得更准确的信息,或者联系 OceanBase 的技术支持获取进一步的帮助。

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

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

oblogproxy 的 cdc 模式是完全无状态的,observer 和 oblogproxy 服务本身不会记录位点信息,需要客户端自行维护。

oblogclient 重连的时候会使用客户端自己记录的安全位点作为起始位点,因为安全位点只保证早于该时间的日志已被接收,但不能保证晚于该时间的日志未被接收,因此可能会造成一定时间段的数据重复。