obbinlog-ce启动失败

【 使用环境 】生产环境
【 OB or 其他组件 】 obbinlog-ce
【 使用版本 】4.2.4
【问题描述】使用obd部署成功后启动报错,但是没有具体的原因
【复现路径】obd cluster start obbinlog
【附件及日志】
[2025-05-15 15:11:50.151] [INFO] start obbinlog-ce
[2025-05-15 15:11:50.151] [DEBUG] – root@192.168.10.64 execute: cat /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid
[2025-05-15 15:11:50.167] [DEBUG] – exited code 1, error output:
[2025-05-15 15:11:50.167] [DEBUG] cat: /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid: No such file or directory
[2025-05-15 15:11:50.167] [DEBUG]
[2025-05-15 15:11:50.167] [DEBUG] – root@192.168.10.64 execute: cd /data/obbinlog/lib/ && ln -sf libstdc++.so.6.0.28 libstdc++.so.6
[2025-05-15 15:11:50.222] [DEBUG] – exited code 0
[2025-05-15 15:11:50.222] [DEBUG] – root@192.168.10.64 export LD_LIBRARY_PATH=’/data/obbinlog/lib’
[2025-05-15 15:11:50.223] [DEBUG] – root@192.168.10.64 execute: cd /data/obbinlog;nohup /data/obbinlog/bin/logproxy -f /data/obbinlog/conf/conf.json > /data/obbinlog/log/out.log &
[2025-05-15 15:11:50.238] [DEBUG] – exited code 0
[2025-05-15 15:11:50.238] [DEBUG] – root@192.168.10.64 execute: ps -aux | grep ‘/data/obbinlog/bin/logproxy -f /data/obbinlog/conf/conf.json’ | grep -v grep | awk ‘{print $2}’
[2025-05-15 15:11:50.276] [DEBUG] – exited code 0
[2025-05-15 15:11:50.276] [DEBUG] – root@192.168.10.64 delete env LD_LIBRARY_PATH
[2025-05-15 15:11:50.276] [ERROR] failed to start obbinlog-ce(server1(192.168.10.64))
[2025-05-15 15:11:50.282] [INFO] [ERROR] failed to start obbinlog-ce(server1(192.168.10.64))
[2025-05-15 15:11:50.282] [INFO]
[2025-05-15 15:11:50.282] [DEBUG] - sub start ref count to 0
[2025-05-15 15:11:50.282] [DEBUG] - export start
[2025-05-15 15:11:50.282] [DEBUG] - plugin obbinlog-ce-py_script_start-4.0.1 result: False
[2025-05-15 15:11:50.286] [DEBUG] - share lock /root/.obd/lock/mirror_and_repo release, count 1
[2025-05-15 15:11:50.286] [DEBUG] - share lock /root/.obd/lock/mirror_and_repo release, count 0
[2025-05-15 15:11:50.286] [DEBUG] - unlock /root/.obd/lock/mirror_and_repo
[2025-05-15 15:11:50.286] [DEBUG] - exclusive lock /root/.obd/lock/deploy_obbinlog release, count 0
[2025-05-15 15:11:50.286] [DEBUG] - unlock /root/.obd/lock/deploy_obbinlog
[2025-05-15 15:11:50.286] [DEBUG] - share lock /root/.obd/lock/global release, count 0
[2025-05-15 15:11:50.286] [DEBUG] - unlock /root/.obd/lock/global

[@论坛小助手]

根据您提供的日志信息和问题描述,obbinlog-ce 启动失败的原因可能与以下几点有关。以下是综合分析后的解答:


1. PID 文件缺失

从日志中可以看到:

cat: /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid: No such file or directory

这表明 obbinlog-ce 的 PID 文件不存在,可能是由于服务未正确启动或启动后立即退出导致的。

解决办法:
检查 /data/obbinlog/run/ 目录是否存在,并确保该目录具有正确的权限。如果目录不存在,请手动创建:

mkdir -p /data/obbinlog/run/
chmod 755 /data/obbinlog/run/

2. 配置文件问题

日志中提到启动命令为:

/data/obbinlog/bin/logproxy -f /data/obbinlog/conf/conf.json

如果 /data/obbinlog/conf/conf.json 配置文件内容不正确或缺失,可能导致服务无法正常启动。

解决办法:

  • 检查 /data/obbinlog/conf/conf.json 是否存在。
  • 确保配置文件内容正确,尤其是连接 OceanBase 数据库的相关参数(如 IP、端口、用户名、密码等)。
  • 如果不确定配置是否正确,可以尝试重新生成配置文件:
    obd cluster edit-config obbinlog
    

3. 依赖库问题

日志中有一段关于软链接的命令:

ln -sf libstdc++.so.6.0.28 libstdc++.so.6

这表明 obbinlog-ce 可能依赖于特定版本的 libstdc++ 库。如果系统中缺少该库或版本不匹配,可能导致启动失败。

解决办法:

  • 确认系统中是否存在 libstdc++.so.6.0.28 文件。如果不存在,请安装对应的开发工具包:
    yum install libstdc++-devel
    
  • 确保软链接正确:
    cd /data/obbinlog/lib/
    ln -sf libstdc++.so.6.0.28 libstdc++.so.6
    

4. 日志文件分析

日志中提到输出日志文件路径为 /data/obbinlog/log/out.log,但未提供具体内容。建议查看该文件以获取更详细的错误信息。

解决办法:

  • 检查 /data/obbinlog/log/out.log 文件内容:
    cat /data/obbinlog/log/out.log
    
  • 如果文件为空或不存在,说明服务可能在启动时直接崩溃。此时需要进一步检查环境配置。

5. 内存不足

根据文档片段 9 的信息,内存不足可能导致组件启动失败。虽然日志中未明确提到内存问题,但仍需确认系统是否有足够的可用内存。

解决办法:

  • 检查系统内存使用情况:
    free -m
    
  • 如果内存不足,可以尝试释放缓存:
    sudo sysctl -w vm.drop_caches=1
    
  • 调整 memory_limitsystem_memory 参数(如果适用):
    obd cluster edit-config obbinlog
    

6. 网络或权限问题

如果 obbinlog-ce 无法连接到 OceanBase 数据库,也可能导致启动失败。

解决办法:

  • 确认目标 OceanBase 数据库的 IP 和端口是否可达:
    telnet <OB_IP> <OB_PORT>
    
  • 检查数据库用户权限是否正确。可以通过以下命令测试连接:
    mysql -h <OB_IP> -P <OB_PORT> -u <username> -p
    

综合建议

如果以上方法仍无法解决问题,建议提供以下信息以便进一步排查:

  1. /data/obbinlog/log/out.log 的完整内容。
  2. obd cluster list 的输出结果。
  3. obd cluster config show obbinlog 的配置详情。

最后,如果问题仍未解决,可以参考文档片段 7 的建议,提供相关日志文件并联系 OceanBase 技术支持团队获取帮助。

更多信息请查看:

  1. OceanBase 安装部署工具 V1.6.0
  2. 错误码
  3. OceanBase 安装部署工具 V1.3.3
  4. 如何升级 obproxy 到 obproxy-ce 3.2.3
  5. 遇到问题如何向技术支持同学提问

麻烦提供一下binlog的日志

obd_log.txt (53.5 KB)

下面的日志信息 提供一下
/data/obbinlog/log/out.log

binlog的元数据库是哪个版本?

根据您上传的日志文件内容,以下是针对 obbinlog-ce 启动失败问题的进一步分析和解决方案:


1. 日志分析

从日志中可以看到以下关键信息:

  • 部署状态检查:日志显示 Deploy status judgeGet deploy config 正常完成,表明部署配置文件加载成功。
  • SSH 连接正常:日志中提到 Open ssh connection ok,说明 SSH 连接没有问题。
  • 插件加载成功:日志中提到 plugin obbinlog-ce-py_script_workflow_start_check-4.0.1 result: True,表明启动前的检查插件运行正常。
  • PID 文件缺失:日志中提到 cat: /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid: No such file or directory,这与之前的分析一致,可能是服务未正确启动或启动后立即退出。

2. 可能原因及解决办法

(1) PID 文件路径问题

日志中提到 PID 文件路径为 /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid。如果该路径不存在或权限不足,可能导致服务无法正常启动。

解决办法:

  • 确认目录是否存在并具有正确的权限:
    mkdir -p /data/obbinlog/run/
    chmod 755 /data/obbinlog/run/
    
  • 如果问题仍未解决,可以尝试手动创建一个空的 PID 文件以测试是否为路径问题:
    touch /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid
    chmod 644 /data/obbinlog/run/obbinlog-ce-192.168.10.64-2983.pid
    

(2) 依赖库问题

日志中提到软链接命令:

ln -sf libstdc++.so.6.0.28 libstdc++.so.6

这表明 obbinlog-ce 可能依赖于特定版本的 libstdc++ 库。如果系统中缺少该库或版本不匹配,可能导致启动失败。

解决办法:

  • 确认系统中是否存在 libstdc++.so.6.0.28 文件。如果不存在,请安装对应的开发工具包:
    yum install libstdc++-devel
    
  • 确保软链接正确:
    cd /data/obbinlog/lib/
    ln -sf libstdc++.so.6.0.28 libstdc++.so.6
    

(3) 配置文件问题

日志中提到启动命令为:

/data/obbinlog/bin/logproxy -f /data/obbinlog/conf/conf.json

如果 /data/obbinlog/conf/conf.json 配置文件内容不正确或缺失,可能导致服务无法正常启动。

解决办法:

  • 检查 /data/obbinlog/conf/conf.json 是否存在。
  • 确保配置文件内容正确,尤其是连接 OceanBase 数据库的相关参数(如 IP、端口、用户名、密码等)。
  • 如果不确定配置是否正确,可以尝试重新生成配置文件:
    obd cluster edit-config obbinlog
    

(4) 日志文件分析

日志中提到输出日志文件路径为 /data/obbinlog/log/out.log,但未提供具体内容。建议查看该文件以获取更详细的错误信息。

解决办法:

  • 检查 /data/obbinlog/log/out.log 文件内容:
    cat /data/obbinlog/log/out.log
    
  • 如果文件为空或不存在,说明服务可能在启动时直接崩溃。此时需要进一步检查环境配置。

(5) 内存不足

虽然日志中未明确提到内存问题,但仍需确认系统是否有足够的可用内存。

解决办法:

  • 检查系统内存使用情况:
    free -m
    
  • 如果内存不足,可以尝试释放缓存:
    sudo sysctl -w vm.drop_caches=1
    
  • 调整 memory_limitsystem_memory 参数(如果适用):
    obd cluster edit-config obbinlog
    

3. 综合建议

如果以上方法仍无法解决问题,建议提供以下信息以便进一步排查:

  1. /data/obbinlog/log/out.log 的完整内容。
  2. obd cluster list 的输出结果。
  3. obd cluster config show obbinlog 的配置详情。

最后,如果问题仍未解决,可以参考文档片段 7 的建议,提供相关日志文件并联系 OceanBase 技术支持团队获取帮助。


4. 补充说明

根据日志内容,obbinlog-ce 的启动流程已经通过了大部分检查点,但在实际启动过程中出现问题。结合之前分析的 PID 文件缺失、依赖库问题和配置文件问题,建议优先从这些方面入手排查。

检索到的文档如下:

  1. 创建 MySQL 模式的用户租户

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

/data/obbinlog/log/out.log 是空的。
binlog元数据库用的是OceanBase 版本号4.3.5.1
我在使用obd安装之前先用下载安装部署过一次(sh env/deploy.sh -m deploy -f env/deploy.conf.json),后来也是报连不上,我就给删除了,然后又用obd部署

我应该怎么排查问题呢?

麻烦提供一份obd的日志附件

obd.2025-05-15.txt (1.1 MB)
obd.txt (466.0 KB)
这是昨天和今天的,我今天尝试了安装4.0.1版本的,也是一样的错误

提供一下这个日志/data/obbinlog/log/out.log

/data/obbinlog/log/out.log 日志是空的

麻烦提供一下obd的版本和yaml配置文件。
建议你把元数据删掉,或者更换一个新的数据库再启动试试看

[root@localhost ~]# obd --version
OceanBase Deploy: 3.2.0
REVISION: 5f4ee37b01de1063b822e7866aaf945e4089cba7
BUILD_BRANCH: HEAD
BUILD_TIME: Apr 01 2025 18:55:26OURCE
Copyright (C) 2025 OceanBase
License Apache 2.0: Apache version 2 or later https://www.apache.org/licenses/LICENSE-2.0.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

yml的内容如下:
#Only need to configure when remote login is required
user:
username: root
password: dbFbsf%6214ddd1
#key_file: /home/admin/.ssh/id_rsa
#port: your ssh port, default 22
#timeout: ssh connection timeout (second), default 30
obbinlog-ce:
version: 4.0.1 #4.2.4
servers:
- name: server1
ip: 192.168.10.24
global:
home_path: /data/obbinlog
service_port: 2983 # External port. The default value is 2983.
prometheus_port: 2984 # The Prometheus port. The default value is 2984.
init_schema: true # init meta db, default true
meta_host: 192.168.10.24 # meta support ob/mysql
meta_port: 2883
meta_username: root@binglog # need tenant exist, if db is mysql, use root or other
meta_password: Ei71hg6gdshH
meta_db: binlog_database

binlog-only-example.yaml.txt (786 字节)

我也试过把数据库中的表都删掉,启动的时候可以正常创建

学习了