【 使用环境 】生产环境
【 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 个赞
论坛小助手
#3
根据您提供的信息,问题主要集中在 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) 启用日志调试
(4) 检查网络环境
- 确保配置的多个 IP 地址均可达,并且网络延迟较低。可以通过以下命令测试:
ping <IP>
如果存在网络不稳定的情况,可能会导致 OBProxy 进程异常。
(5) 联系官方支持
- 如果上述方法仍无法解决问题,建议使用 OceanBase 的敏捷诊断工具
obdiag
收集诊断信息,并联系官方技术支持团队获取进一步帮助。
4. 结论
目前可以初步判断该问题可能与 ODP 4.3.2 对 binlog_service_ip
多 IP 配置的支持存在缺陷有关。建议按照上述步骤逐一排查,并在必要时升级相关组件或联系官方支持团队。
如果您需要进一步的帮助,请随时提供更多信息!
详情请参考:
- binlog_service_ip
- enable_binlog_service
- 配置项总览
- ODP 服务高可用
- 分布式事务
- 重启 OBProxy
- 二次路由
- 事务路由
- SQL 调优常见问题
淇铭
#4
报错的时候 这三个的日志提供一下 看看具体什么问题
binlog_instance.log logproxy.log
obproxy.log
1 个赞
昨天我们调整完binlog_service_ip没有obproxy进程挂掉的现象了,日志估计早刷完了。而且我们不能拿产线的业务再复现,你们能测出来这个问题吗
1 个赞
ODP集群接管整个集团的大部分OB集群,不能冒着生产风险复现这个问题,我们调整完binlog_service_ip为单个IP后 这个现象就没有再次出现,可以肯定是个BUG
1 个赞
论坛小助手
#7
根据您的补充信息,问题已经通过调整 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,但由于无法在生产环境中复现,建议通过以下方式进一步验证和解决:
- 使用测试环境复现问题。
- 提交问题给官方团队,由其在内部测试环境中验证。
- 参考社区反馈,了解是否有类似问题的解决方案。
如果您需要进一步的帮助,请随时提供更多信息!
更多信息请查看:
- ODP 服务高可用
- 基本操作
- ODP 端故障
- enable_binlog_service
- 性能分析
- ODP 线程满
- ping
- 代理层高可用
- 日志同步问题
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
1 个赞
淇铭
#9
你们环境 还能复现么 目前内部没有这个bug 我们可以远程看看
我们OB的版本是4.2.5.1,研发老师是用这个版本测得吗
淇铭
#13
这个版本 目前是没有问题的 我问过了相关的研发同学了 如果你能复现 我们远程可以看看
好的,麻烦老师帮忙看下4.2.1.8和4.2.2.1有没有这个问题,这个业务的预生产数仓环境搭建需要一定的时间,我们如果复现出来会联系您
ODP接管有 4.2.5.1 4.2.1.8 4.2.2.1 多个OB版本