obbinlog实例租户连接不稳定问题

【 使用环境 】生产环境
【 OB or 其他组件 】obbinlog4.0.1 OB4.2.1.8 ODP4.2.1.0
【 使用版本 】社区版
【问题描述】业务进行 OB-Diors 的数据同步任务,任务日志里报 OBProxy connect binlog service failed 连接ODP失败的错误,查看binlog租户实例运行正常

ODP的binlog_service_ip设置的也没有问题

在ODC上使用ODP连接binlog实例对应的租户,执行 show matser status 有时候可以刷出binlog,有时候报obproxy连接失败


【复现路径】问题出现前后相关操作
【附件及日志】bimlog server 日志 以及 binlog实例租户的运行日志 和 libcdc日志后续发,查看以上三种日志并没有发现明显报错问题

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

2 个赞

根因分析场景: 针对断链接场景的根因分析
根因分析命令: obdiag rca run --scene=disconnection

日志采集场景: 集群基础信息, IO问题, observer无故重启
日志采集命令:

  1. obdiag gather scene run --scene=observer.base
  2. obdiag gather scene run --scene=observer.io
  3. obdiag gather scene run --scene=observer.restart

为了更好地帮助您解决 OBProxy 连接 binlog service 失败的问题,我们建议使用 obdiag 工具进行日志采集和根因分析。上述命令将有助于我们收集必要的诊断信息,以确定 OBProxy 连接失败的根本原因。

请您提供一些额外的信息,以便我们更准确地定位问题:

  1. OBProxy 的版本信息以及配置参数。
  2. 在遇到连接失败时,是否有特定的时间规律或触发条件?
  3. 是否有其他组件(如网络设备、防火墙等)可能影响 OBProxy 与 binlog service 之间的通信?
  4. 在 ODC 上使用 ODP 连接 binlog 实例对应的租户执行 show master status 命令时,能否提供具体的报错信息?
  5. 是否可以提供一份详细的日志压缩包,包括通过上述命令采集的日志文件?

这些信息将有助于我们更全面地了解您的环境,并为解决问题提供更有针对性的建议。

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

2 个赞

binlog实例的libcdc日志里全是INFO信息,没有发现ERROR日志记录

1 个赞

根据您提供的信息,libcdc 日志中确实没有发现 ERROR 级别的日志记录,这表明 binlog 实例本身在运行时并没有遇到明显的错误。然而,您仍然遇到了 OBProxy 连接 binlog service 失败的问题。为了进一步排查问题,我们可以从以下几个方面入手:

1. 检查 OBProxy 配置

确保 OBProxy 的配置正确无误,特别是与 binlog service 相关的配置项。您可以检查以下配置参数:

  • binlog_service_ip:确保该参数设置为正确的 binlog 服务 IP 和端口。
  • obproxy_binlog_timeout:确保超时时间设置合理,避免因网络延迟导致的连接失败。

2. 检查网络连通性

由于 OBProxy 连接 binlog service 失败,可能是网络问题导致的。请确认以下几点:

  • OBProxy 和 binlog service 之间的网络是否畅通,可以使用 pingtelnet 测试网络连通性。
  • 是否存在防火墙或安全组规则限制了 OBProxy 和 binlog service 之间的通信。

3. 检查 OBProxy 日志

OBProxy 的日志可能会提供更多关于连接失败的详细信息。请查看 OBProxy 的日志文件,重点关注以下内容:

  • 是否有与 binlog service 连接相关的错误或警告信息。
  • 是否有超时或重试的记录。

4. 检查 ODP 配置

ODP(OceanBase Developer Center)作为管理工具,其配置也可能影响到 OBProxy 和 binlog service 的连接。请确认 ODP 的配置是否正确,特别是与 binlog service 相关的配置项。

5. 使用 obdiag 工具进行诊断

如前所述,建议使用 obdiag 工具进行日志采集和根因分析。具体命令如下:

# 根因分析场景: 针对断链接场景的根因分析
obdiag rca run --scene=disconnection

# 日志采集场景: 集群基础信息, IO问题, observer无故重启
obdiag gather scene run --scene=observer.base
obdiag gather scene run --scene=observer.io
obdiag gather scene run --scene=observer.restart

6. 检查系统资源

有时,系统资源不足(如 CPU、内存、磁盘 I/O 等)也可能导致连接不稳定。请检查 OBProxy 和 binlog service 所在服务器的系统资源使用情况,确保它们有足够的资源来处理请求。

7. 检查 OBProxy 版本兼容性

确保 OBProxy 的版本与 OceanBase 数据库和其他组件(如 ODP)的版本兼容。不同版本之间可能存在兼容性问题,导致连接失败。

8. 检查租户状态

虽然您提到 binlog 租户实例运行正常,但仍建议再次确认租户的状态,确保其没有进入异常状态。可以通过以下 SQL 查询租户状态:

SELECT * FROM oceanbase.DBA_OB_TENANTS WHERE tenant_name = 'your_binlog_tenant';

总结

通过上述步骤,您可以更全面地排查 OBProxy 连接 binlog service 失败的原因。如果经过这些检查后问题仍未解决,建议联系 OceanBase 的技术支持团队,提供详细的日志和配置信息,以便他们能够更深入地帮助您解决问题。

希望这些建议能帮助您找到问题的根本原因并解决连接不稳定的问题。如果您有更多问题或需要进一步的帮助,请随时告知。

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

  1. 全链路追踪展示
  2. 迁移/复制/Rebuild

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

在黑屏下执行呢?obclient -h10.10.10.1 -P2883 -uroot@obmysql -p -Doceanbase -A
SHOW MASTER STATUS;

1 个赞

1 个赞

bimlog server 日志 以及 binlog实例租户的运行日志 和 libcdc日志 我私发您了

1 个赞

貌似打不开 我问一下 相关同学是不是没办法私发呀

1 个赞

稍等

1 个赞

binlog_instance.zip (1.8 MB)
libobcdc.zip (19.8 MB)
logproxy.zip (5.9 MB)

1 个赞

怀疑是binlog service ip不稳定,建议直连binlog_service_ip,多执行几次show binlog server for tenant $cluster_name.$tenant_name看看,替换为真实的集群和租户名

1 个赞

执行 show binlog server for tenant $cluster_name .$tenant_name后的结果,obbinlog的连接方式不是变了吗,不是按照mysql-cdc的模式连接吗?连接地址和端口填ODP的IP和端口。另外我们binlog-server是两台,ODP的binlog_service_ip设置的是xx.xx.xx.229:2983,从show binlog server for tenant $cluster_name .$tenant_name执行的结果看好像binlog实例租户在 xx.xx.xx.230 这台binlog-server上运行的

直连上你配置的binlog_service_ip的地址 试一下

确认是直连xx.xx.xx.229:2983是吗

现在连接的配置是mysql-cdc模式的

是的 你试一下

那我让业务把hostname和IP换成binlog-server-ip试一下

正在处理:libobcdc.zip…
不能这么 连接。业务连接的是odp , 能直接连接 2983 ?

不是应用端连 刚才我发的也有歧义
登录 Binlog Server

mysql -h127.0.0.1 -P2983

多执行几次show binlog server for tenant $cluster_name .$tenant_name 看看

这个就是直连啊