社区版OBProxy4.3.2 BUG(binlog_service_ip)

【 使用环境 】生产环境
【 OB or 其他组件 】ODP4.3.2 obbinlog 4.0.1
【 使用版本 】社区版
【问题描述】升级ODP至4.3.2版本(ODP的路由策略proxy_route_policy设置为follower_first),将 binlog_service_ip 配置为两个IP后 频繁出现OBProxy进程挂掉的告警,ODP日志中没有内存不足的记录 以及 进程挂掉的信息,将binlog_service_ip配置还原为单IP后,该现象解决。这个目前可以确认为BUG了。
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

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

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

1 个赞

根据您提供的信息,问题主要集中在 ODP 4.3.2 版本中配置 binlog_service_ip 为多个 IP 地址时,OBProxy 进程频繁出现挂掉的告警。以下是基于文档和您的描述的分析与解答:

1. 问题分析

  • binlog_service_ip 配置
    根据文档片段 1 的描述,binlog_service_ip 支持配置为多个 IP 或域名,并以分号 (;) 分隔。配置成功后会优先使用排列在前的地址。因此,从配置语法上来看,设置多个 IP 是被支持的。

  • ODP 日志无异常记录
    您提到 ODP 日志中没有内存不足或进程挂掉的信息,这表明问题可能并非由内存溢出或程序崩溃直接导致。

  • 复现路径与现象
    当将 binlog_service_ip 配置为单个 IP 时,问题消失,说明问题可能与多 IP 配置相关。

  • 版本兼容性
    您使用的 ODP 版本为 4.3.2,而 obbinlog 版本为 4.0.1。虽然文档未明确提及两者之间的兼容性问题,但不同版本间的配合可能存在潜在隐患。


2. 可能原因

结合文档和您的描述,以下可能是问题的原因:

  • 多 IP 配置下的解析问题
    OBProxy 在处理多个 binlog_service_ip 地址时,可能存在解析或轮询逻辑上的缺陷,导致进程异常退出。

  • ODP 和 obbinlog 版本不匹配
    虽然文档未明确指出版本兼容性要求,但不同版本间的协议或功能实现可能存在差异,从而引发问题。

  • OBProxy 的稳定性问题
    文档片段 4 提到,OBProxy 进程异常可能由多种原因引起(如程序 bug、OOM 等)。尽管您未发现内存不足的记录,但仍可能存在其他未捕获的异常。


3. 解决方案

针对上述分析,建议采取以下措施:

(1) 确认版本兼容性

  • 检查 ODP 4.3.2 和 obbinlog 4.0.1 是否完全兼容。如果不确定,可以尝试升级 obbinlog 至最新版本(如 4.3.x),确保两者版本一致。

(2) 简化配置

  • 暂时仅配置单个 binlog_service_ip 地址,观察是否仍有类似问题发生。如果问题消失,则可进一步排查多 IP 配置的具体影响。

(3) 启用日志调试

  • 增加 ODP 和 OBProxy 的日志级别,捕获更详细的运行信息。具体操作如下:
    ALTER PROXYCONFIG SET log_level=DEBUG;
    
    通过日志分析,定位 OBProxy 进程挂掉的具体原因。

(4) 检查网络环境

  • 确保配置的多个 IP 地址均可达,并且网络延迟较低。可以通过以下命令测试:
    ping <IP>
    
    如果存在网络不稳定的情况,可能会导致 OBProxy 进程异常。

(5) 联系官方支持

  • 如果上述方法仍无法解决问题,建议使用 OceanBase 的敏捷诊断工具 obdiag 收集诊断信息,并联系官方技术支持团队获取进一步帮助。

4. 结论

目前可以初步判断该问题可能与 ODP 4.3.2 对 binlog_service_ip 多 IP 配置的支持存在缺陷有关。建议按照上述步骤逐一排查,并在必要时升级相关组件或联系官方支持团队。

如果您需要进一步的帮助,请随时提供更多信息!

详情请参考:

  1. binlog_service_ip
  2. enable_binlog_service
  3. 配置项总览
  4. ODP 服务高可用
  5. 分布式事务
  6. 重启 OBProxy
  7. 二次路由
  8. 事务路由
  9. SQL 调优常见问题

报错的时候 这三个的日志提供一下 看看具体什么问题
binlog_instance.log logproxy.log
obproxy.log

1 个赞

昨天我们调整完binlog_service_ip没有obproxy进程挂掉的现象了,日志估计早刷完了。而且我们不能拿产线的业务再复现,你们能测出来这个问题吗

1 个赞

ODP集群接管整个集团的大部分OB集群,不能冒着生产风险复现这个问题,我们调整完binlog_service_ip为单个IP后 这个现象就没有再次出现,可以肯定是个BUG

1 个赞

根据您的补充信息,问题已经通过调整 binlog_service_ip 为单个 IP 得到缓解,但您希望确认这是否是一个已知的 Bug,并询问我们是否能够复现和测试该问题。以下是基于现有信息的分析与建议:


1. 问题确认

  • 您明确指出,在将 binlog_service_ip 配置为单个 IP 后,OBProxy 进程挂掉的现象消失,这表明问题确实与多 IP 配置相关。
  • 您提到无法在生产环境中复现问题,这是合理的,因为生产环境的稳定性优先级高于问题复现。

2. Bug 的可能性

根据文档片段 4 和您的描述:

  • enable_binlog_service 参数控制 ODP 是否向 oblogproxy 发送 binlog 请求,虽然该参数在 4.2.2 版本后被弃用,但可能仍存在类似逻辑影响多 IP 配置下的行为。
  • OBProxy 在处理多个 binlog_service_ip 地址时,可能存在解析或轮询逻辑上的缺陷,导致进程异常退出。

因此,可以初步判断这是一个潜在的 Bug。


3. 复现与测试

由于您无法在生产环境中复现问题,以下是一些替代方案:

(1) 使用测试环境复现

  • 如果条件允许,建议搭建一个与生产环境相似的测试环境(包括相同的 ODP 和 obbinlog 版本),并尝试复现问题。
  • 在测试环境中,可以安全地配置多个 binlog_service_ip 地址,并观察 OBProxy 的行为。

(2) 提交问题给官方团队

  • OceanBase 社区版的官方团队可以通过内部测试环境复现和验证该问题。您可以将问题详细描述(包括版本、配置、现象等)提交至 OceanBase 官方问答平台 或联系技术支持团队。
  • 提交问题时,建议附上以下信息:
    • ODP 和 obbinlog 的具体版本号。
    • binlog_service_ip 的配置内容(如多个 IP 的格式)。
    • OBProxy 的日志级别设置及关键日志片段(如果仍有留存)。

(3) 参考社区反馈

  • 您可以搜索 OceanBase 社区论坛或 GitHub 仓库,查看是否有其他用户报告类似问题。例如,GitHub 上的 Issues 页面可能包含相关的 Bug 报告和修复进展。

4. 临时解决方案

在官方团队确认并修复该问题之前,建议继续使用单个 binlog_service_ip 配置以确保生产环境的稳定性。


5. 结论

目前可以确认这是一个潜在的 Bug,但由于无法在生产环境中复现,建议通过以下方式进一步验证和解决:

  1. 使用测试环境复现问题。
  2. 提交问题给官方团队,由其在内部测试环境中验证。
  3. 参考社区反馈,了解是否有类似问题的解决方案。

如果您需要进一步的帮助,请随时提供更多信息!

更多信息请查看:

  1. ODP 服务高可用
  2. 基本操作
  3. ODP 端故障
  4. enable_binlog_service
  5. 性能分析
  6. ODP 线程满
  7. ping
  8. 代理层高可用
  9. 日志同步问题

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

1 个赞

好的 我们问问相关的研发同学 看看是否有问题

你们环境 还能复现么 目前内部没有这个bug 我们可以远程看看

我们搭建一套预生产环境尝试下复现

好的 感谢配合

我们OB的版本是4.2.5.1,研发老师是用这个版本测得吗

这个版本 目前是没有问题的 我问过了相关的研发同学了 如果你能复现 我们远程可以看看

好的,麻烦老师帮忙看下4.2.1.8和4.2.2.1有没有这个问题,这个业务的预生产数仓环境搭建需要一定的时间,我们如果复现出来会联系您

ODP接管有 4.2.5.1 4.2.1.8 4.2.2.1 多个OB版本

应该和ob的版本 没有关系

好的,我们准备预生产环境复现