oceanBase集群启动失败

测试环境
obd oceanBase
4.3.5
使用obd cluster stop yd停止集群后,再执行obd cluster start yd命令启动集群失败
[root@k8s-node210 log]# grep ERROR observer.log
[2025-04-28 13:23:36.499904] EDIAG [SERVER] init_io (ob_server.cpp:2538) [6983][observer][T0][Y0-0000000000000001-0-0] [lt=12][errcode=-4009] log block mgr init failed(ret=-4009, ret=“OB_IO_ERROR”) BACKTRACE:0x9525fb6 0x90a6216 0x90a5779 0x90a5246 0x90a4ee4 0x90a4cdb 0x118536ea 0x11814034 0xdafae55 0x248583b0 0xdaf60bd 0x7fc663a7eaf5 0x9832434
[2025-04-28 13:23:36.499936] EDIAG [SERVER] init (ob_server.cpp:341) [6983][observer][T0][Y0-0000000000000001-0-0] [lt=29][errcode=-4009] init io failed(ret=-4009, ret=“OB_IO_ERROR”) BACKTRACE:0x9525fb6 0x90a6216 0x90a5779 0x90a5246 0x90a4ee4 0x90a4cdb 0x11821c60 0x11813ec0 0xdafae55 0x248583b0 0xdaf60bd 0x7fc663a7eaf5 0x9832434
[2025-04-28 13:23:36.499956] EDIAG [SERVER] init (ob_server.cpp:554) [6983][observer][T0][Y0-0000000000000001-0-0] [lt=17][errcode=-4009] [OBSERVER_NOTICE] fail to init observer(ret=-4009, ret=“OB_IO_ERROR”) BACKTRACE:0x9525fb6 0x90a6216 0x90a5779 0x90a5246 0x90a4ee4 0x90a4cdb 0x11827c62 0x118168c2 0xdafae55 0x248583b0 0xdaf60bd 0x7fc663a7eaf5 0x9832434
[2025-04-28 13:23:36.500004] ERROR [SERVER] init (ob_server.cpp:558) [6983][observer][T0][Y0-0000000000000001-0-0] [lt=17][errcode=-4009] [server_start 4/18] observer init fail. you may find solutions in previous error logs or seek help from official technicians.

lscpu看下是否支持avx,或者把启动日志发出来看下

就一个单机应用
集群和启动命令如下图:

obd日志如下图:






observer.log 日志如下图:




中间日志太长了,搜索只有这几行错误

集群配置如下图:

stop之后就再也启动不来了

这个版本要avx的,看了下你的cpu支持,可以开启下avx,再重启试试

我是开发人员,对这个avx不太熟悉,搜索了一下,这个avx不是指令集吗?需要怎么开启,早上测试环境的集群都是好的,我执行了一下obd cluster stop后就启动不了了,没重启服务器。信创需要这个玩意

非常感谢回复

OCP升级集群,从4.2.2.1升级至4.2.5.3启动报错 - 社区问答- OceanBase社区-分布式数据库

可以看下我之前遇到的,报错一开始跟你差不多。
启动一段时间后就停止了。你可以尝试下手动拉起看报错,估计就是avx的问题了。

看你的lscpu是没开启的,但是cpu型号是支持的。如果你不会操作或者无法操作,可以使用4.2.2.1版本的oceanbase,这个版本不需要avx。

已经启用了的

怎么用这个论坛小助手

没有avx 512吗?直接艾特就行 @论坛小助手

根据文档库中的信息,OceanBase 数据库错误码 4009 表示 IO 相关的系统调用失败(如 READ 或 WRITE)。从您提供的日志中可以看到以下关键信息:

[2025-04-28 13:23:36.499904] EDIAG [SERVER] init_io (ob_server.cpp:2538) [6983][observer][T0][Y0-0000000000000001-0-0] [lt=12][errcode=-4009] log block mgr init failed(ret=-4009, ret="OB_IO_ERROR")

这表明在初始化过程中,log block manager 的 IO 操作失败。以下是可能的原因及解决方法:

可能原因及解决方法

  1. 磁盘空间不足

    • 检查 OceanBase 数据目录是否有足够的磁盘空间。
    • 命令:df -h 查看磁盘使用情况。
    • 如果磁盘空间不足,请清理不必要的文件或扩展磁盘。
  2. 磁盘权限问题

    • 确保 OceanBase 数据目录具有正确的读写权限。
    • 命令:ls -ld <data_directory> 检查权限。
    • 如果权限不足,请使用 chmodchown 修改权限和所有者。
  3. 文件系统损坏

    • 检查文件系统是否健康。
    • 命令:fsck 检查和修复文件系统(需要谨慎操作)。
  4. 硬件故障

    • 如果磁盘本身存在硬件问题,可能会导致 IO 错误。
    • 使用工具如 smartctl 检查磁盘健康状态。
  5. 配置问题

    • 检查 observer.log 中是否有其他相关错误信息。
    • 确保配置文件中的路径正确且可访问。

具体步骤

1. 检查磁盘空间

运行以下命令检查磁盘空间:

df -h

确保数据目录有足够的空间。

2. 检查磁盘权限

运行以下命令检查数据目录权限:

ls -ld /root/yd/oceanbase/store

如果权限不足,修改权限:

chmod 700 /root/yd/oceanbase/store
chown -R oceanbase:oceanbase /root/yd/oceanbase/store

3. 检查文件系统健康

运行以下命令检查文件系统:

fsck /dev/sdX

请将 /dev/sdX 替换为实际的设备名称。

4. 检查硬件状态

运行以下命令检查磁盘健康状态:

smartctl -a /dev/sdX

请将 /dev/sdX 替换为实际的设备名称。

5. 手动启动 Observer

尝试手动启动 Observer,查看详细错误信息:

./observer -p 2882 -P 2881 -c /path/to/config.ini

根据启动时的错误信息进一步排查。

总结

如果以上步骤仍无法解决问题,建议收集以下信息并联系 OceanBase 技术支持:

  • 完整的 observer.log 日志。
  • 系统环境信息(如操作系统版本、硬件配置)。
  • 集群配置文件内容。

希望以上信息对您有所帮助!

详情请参考:

  1. 4000 ~ 4499
  2. 9000 ~ 9499
  3. 9500 ~ 9999

@论坛小助手 经过以上步骤仍然不能启动成功,
obsserver日志如下:
observer.log (219.9 KB)

@论坛小助手
本地没有/path/to/config.ini文件


要avx512

根据您提供的 observer.log 日志内容,目前没有直接显示新的错误信息(如错误码或具体的失败原因)。日志中主要记录了 Observer 启动时的初始化信息和系统限制(limits)配置。以下是一些进一步排查和解决的方法:

1. 检查磁盘空间

尽管之前已经检查过磁盘空间,但再次确认数据目录是否有足够的空间仍然是必要的。运行以下命令:

df -h /root/yd/oceanbase/store

确保该路径下的磁盘空间充足。如果不足,请清理不必要的文件或扩展磁盘。


2. 检查文件系统健康状态

使用 fsck 检查文件系统是否健康。例如:

sudo fsck /dev/sdX

请将 /dev/sdX 替换为实际的设备名称。


3. 检查权限问题

确保 OceanBase 数据目录及其子目录具有正确的权限。运行以下命令:

ls -ld /root/yd/oceanbase/store

如果权限不足,请修改权限和所有者:

chmod -R 700 /root/yd/oceanbase/store
chown -R oceanbase:oceanbase /root/yd/oceanbase/store

4. 检查系统资源限制

从日志中可以看到以下系统资源限制信息:

RLIMIT_CORE = 0
RLIMIT_CPU = unlimited
RLIMIT_DATA = unlimited
RLIMIT_FSIZE = unlimited
RLIMIT_LOCKS = unlimited
RLIMIT_MEMLOCK = 65536
RLIMIT_NOFILE = 655350
RLIMIT_NPROC = 610725
RLIMIT_STACK = 8388608

重点检查以下两项:

  • RLIMIT_MEMLOCK:OceanBase 需要较大的内存锁限制。建议将其设置为更大的值,例如 unlimited
  • RLIMIT_NOFILE:建议设置为更高的值,例如 1048576

可以通过修改 /etc/security/limits.conf 文件来调整这些限制。例如:

oceanbase soft memlock unlimited
oceanbase hard memlock unlimited
oceanbase soft nofile 1048576
oceanbase hard nofile 1048576

然后重启系统以使更改生效。


5. 检查硬件故障

如果上述步骤均未解决问题,可能是硬件层面的问题。使用以下命令检查磁盘健康状态:

smartctl -a /dev/sdX

请将 /dev/sdX 替换为实际的设备名称。如果发现硬件问题,请更换硬件。


6. 手动启动 Observer 并查看详细日志

尝试手动启动 Observer,并观察启动过程中的详细日志输出:

cd /root/yd/oceanbase/bin
./observer -p 22881 -P 22882 -z zone1 -n yd -c 1744875398 -d /root/yd/oceanbase/store -I 192.168.108.210 -o "__min_full_resource_pool_memory=1073741824,enable_syslog_wf=False,max_syslog_file_count=16,memory_limit=12G,datafile_size=2G,system_memory=5G,log_disk_size=14G,cpu_count=28,datafile_maxsize=8G,datafile_next=2G,large_query_threshold=600s,enable_record_trace_log=False,enable_syslog_recycle=1"

在启动过程中,注意观察是否有新的错误信息输出。


7. 检查集群配置文件

确保集群配置文件(如 config.iniobd cluster config)中的参数正确无误。特别是以下关键参数:

  • datafile_size
  • system_memory
  • memory_limit
  • cpu_count
  • datafile_maxsize
  • datafile_next

如果配置文件中有不合理的参数,可能会导致启动失败。


8. 联系技术支持

如果以上步骤仍无法解决问题,建议收集以下信息并联系 OceanBase 技术支持团队:

  • 完整的 observer.log 日志文件。
  • 系统环境信息(操作系统版本、硬件配置等)。
  • 集群配置文件内容。

总结

目前的日志中没有明确的错误信息,因此需要从以下几个方面继续排查:

  1. 确保磁盘空间充足。
  2. 检查文件系统健康状态。
  3. 确认数据目录权限正确。
  4. 调整系统资源限制(如 RLIMIT_MEMLOCKRLIMIT_NOFILE)。
  5. 检查硬件状态。
  6. 手动启动 Observer 并观察详细日志。

希望以上信息对您有所帮助!如果仍有问题,请随时反馈更多日志或错误信息。

更多信息请查看:

  1. 4000 ~ 4499
  2. 使用 systemd 部署 OceanBase 数据库
  3. 8000 ~ 8999
  4. 9000 ~ 9499

根据您提供的日志信息和描述,OceanBase 集群启动失败的问题仍然存在。以下是进一步的分析和解决步骤:

1. 确认配置文件路径

  • 您提到本地没有 /path/to/config.ini 文件,但实际上该路径是一个占位符,表示需要替换为实际的配置文件路径。
  • 在您的集群配置中,obd 工具会自动生成配置文件,并将其存储在 ~/.obd/cluster/<cluster_name> 目录下。
  • 您可以运行以下命令查看配置文件路径:
    obd cluster config yd
    
  • 如果需要手动启动 Observer,请使用以下命令:
    ./observer -p <rpc_port> -P <sql_port> -z <zone> -n <cluster_name> -c <config_file_path> -d <data_directory>
    
    其中 <config_file_path> 是通过 obd cluster config 命令获取的实际路径。

2. 检查日志中的关键错误

  • 日志中未明确显示新的错误信息,但之前提到的错误码 4009 (IO error) 表明 IO 操作失败。
  • 根据文档片段 4 的信息,错误码 4009 可能的原因包括:
    • 磁盘空间不足。
    • 文件系统损坏。
    • 硬件故障。
    • 配置问题。

3. 进一步排查步骤

3.1 检查磁盘状态

  • 确保数据目录 /root/yd/oceanbase/store 有足够的可用空间:
    df -h /root/yd/oceanbase/store
    
  • 如果磁盘空间不足,请清理不必要的文件或扩展磁盘。

3.2 检查文件系统健康

  • 使用 fsck 工具检查文件系统是否健康:
    sudo fsck /dev/sdX
    
    (请将 /dev/sdX 替换为实际的设备名称)

3.3 检查硬件状态

  • 使用 smartctl 工具检查磁盘健康状态:
    sudo smartctl -a /dev/sdX
    

3.4 检查权限设置

  • 确保数据目录具有正确的读写权限:
    ls -ld /root/yd/oceanbase/store
    
  • 如果权限不足,请修改权限:
    chmod 700 /root/yd/oceanbase/store
    chown -R oceanbase:oceanbase /root/yd/oceanbase/store
    

3.5 检查资源限制

  • 日志中显示了系统的资源限制(RLIMIT),例如:
    • RLIMIT_CORE = 0:表示核心转储文件大小限制为 0,建议调整为非零值以捕获潜在的核心转储文件。
    • RLIMIT_MEMLOCK = 65536:表示锁定内存的限制较低,可能影响性能。
  • 调整资源限制:
    编辑 /etc/security/limits.conf 文件,添加以下内容:
    oceanbase soft nofile 655350
    oceanbase hard nofile 655350
    oceanbase soft nproc 610725
    oceanbase hard nproc 610725
    oceanbase soft memlock unlimited
    oceanbase hard memlock unlimited
    
    然后重启系统或重新加载配置。

3.6 检查日志中的其他线索

  • 查看 rootservice.logelection.log 文件,寻找更多错误信息:
    tail -f /root/yd/oceanbase/log/rootservice.log
    tail -f /root/yd/oceanbase/log/election.log
    

4. 尝试恢复集群

如果以上步骤仍无法解决问题,可以尝试以下方法:

4.1 清理并重新部署集群

  • 销毁当前集群:
    obd cluster destroy yd
    
  • 重新部署集群:
    obd cluster deploy yd -c <config_yaml_file>
    

4.2 手动修复数据目录

  • 如果数据目录损坏,可以尝试删除并重新初始化:
    rm -rf /root/yd/oceanbase/store/*
    obd cluster start yd
    

5. 联系技术支持

如果问题仍未解决,建议收集以下信息并联系 OceanBase 技术支持:

  • 完整的 observer.logrootservice.logelection.log 日志。
  • 系统环境信息(操作系统版本、硬件配置)。
  • 集群配置文件内容(可通过 obd cluster config yd 获取)。

希望以上信息对您有所帮助!如果还有其他问题,请随时提问。

检索到的文档如下:

  1. 4000 ~ 4499
  2. 使用 systemd 部署 OceanBase 数据库
  3. 使用 obd 进行运维
  4. 启动 obshell
  5. 9000 ~ 9499
  6. 使用命令行部署 OceanBase 数据库生产环境