使用docke部署oceanbase,镜像版本是4.3.5-lts,重启所有服务失败

使用命令obd cluster restart obcluster启动时,一直开在Connect to observer x
然后查看vi ~/.obd/log/obd日志,日志如下

[2025-05-15 08:01:26.487] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] -- connect 127.0.0.1 -P2881 -uroot -p
[2025-05-15 08:01:29.491] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] -- connect 127.0.0.1 -P2881 -uroot -p******
[2025-05-15 08:01:32.496] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] -- connect 127.0.0.1 -P2881 -uroot -p
[2025-05-15 08:01:35.500] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] -- connect 127.0.0.1 -P2881 -uroot -p******
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR] Traceback (most recent call last):
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "core.py", line 2756, in restart_cluster
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "core.py", line 2864, in _restart_cluster
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "core.py", line 246, in run_workflow
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "core.py", line 288, in run_plugin_template
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "core.py", line 336, in call_plugin
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "_plugin.py", line 348, in __call__
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "_plugin.py", line 304, in _new_func
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "/root/.obd/plugins/oceanbase-ce/3.1.0/connect.py", line 68, in connect
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]     cursor = Cursor(ip=server.ip, port=server_config.get('mysql_port', 2881), tenant='', password=****** if password is not None else '', stdio=stdio)
[2025-05-15 08:01:35.503] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "_stdio.py", line 1089, in wrapper
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "_stdio.py", line 1076, in func_wrapper
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "tool.py", line 783, in __init__
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "tool.py", line 813, in _connect
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "pymysql/connections.py", line 353, in __init__
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "pymysql/connections.py", line 633, in connect
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "pymysql/connections.py", line 907, in _request_authentication
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "pymysql/connections.py", line 725, in _read_packet
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "pymysql/protocol.py", line 221, in raise_for_error
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]   File "pymysql/err.py", line 143, in raise_mysql_exception
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR] pymysql.err.OperationalError: (8001, 'Server is initializing\n[0.0.0.0:0] [2025-05-15 08:01:35.501780] [Y0-00063527D662D7AA-0-0]')
[2025-05-15 08:01:35.504] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR]
[2025-05-15 08:01:38.543] [1e79218a-3162-11f0-817d-0242ac160002] [ERROR] OBD-1006: Failed to connect to oceanbase-ce
[2025-05-15 08:01:38.543] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - sub connect ref count to 0
[2025-05-15 08:01:38.543] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - export connect
[2025-05-15 08:01:38.543] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - plugin oceanbase-ce-py_script_connect-3.1.0 result: False
[2025-05-15 08:01:38.548] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - share lock /root/.obd/lock/mirror_and_repo release, count 1
[2025-05-15 08:01:38.548] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - share lock /root/.obd/lock/mirror_and_repo release, count 0
[2025-05-15 08:01:38.548] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - unlock /root/.obd/lock/mirror_and_repo
[2025-05-15 08:01:38.548] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - exclusive lock /root/.obd/lock/deploy_obcluster release, count 0
[2025-05-15 08:01:38.548] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - unlock /root/.obd/lock/deploy_obcluster
[2025-05-15 08:01:38.549] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - share lock /root/.obd/lock/global release, count 0
[2025-05-15 08:01:38.549] [1e79218a-3162-11f0-817d-0242ac160002] [DEBUG] - unlock /root/.obd/lock/global
[2025-05-15 08:01:38.549] [1e79218a-3162-11f0-817d-0242ac160002] [INFO] See https://www.oceanbase.com/product/ob-deployer/error-codes .
[2025-05-15 08:01:38.549] [1e79218a-3162-11f0-817d-0242ac160002] [INFO] Trace ID: 1e79218a-3162-11f0-817d-0242ac160002
[2025-05-15 08:01:38.549] [1e79218a-3162-11f0-817d-0242ac160002] [INFO] If you want to view detailed obd logs, please run: obd display-trace 1e79218a-3162-11f0-817d-0242ac160002

请问这个如何接口

@论坛小助手

根据您提供的日志信息和问题描述,以下是可能的原因分析及解决方案:

1. 问题分析

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

  • 日志显示 pymysql.err.OperationalError: (8001, 'Server is initializing'),这表明 OBServer 节点正在初始化过程中,无法处理连接请求。
  • 根据文档片段 3 的信息(错误码 8001),OBServer 节点启动过程中收到 RPC 请求时会返回该错误。这意味着 OceanBase 数据库的节点尚未完全启动。

此外,您提到使用 obd cluster restart obcluster 命令重启服务失败,结合日志中的信息,可以推测可能是以下原因之一导致:

  • OceanBase 数据库的某些组件或服务在启动时未能成功初始化。
  • 配置文件中的参数设置不合理,例如内存不足或磁盘空间不足。
  • 网络问题或其他环境配置问题。

2. 解决方法

方法一:检查 OBServer 节点状态

  • 等待 OBServer 节点完成初始化。根据错误码 8001 的解决方式,建议等待一段时间后再次尝试连接。
  • 使用以下命令检查集群状态:
    obd cluster status obcluster
    
    如果集群状态显示为 starting 或其他异常状态,请等待其变为 running

方法二:检查资源配置

  • 检查内存是否充足。根据文档片段 5 的信息,如果内存不足,可能会导致启动失败。您可以尝试释放缓存或调整内存限制:
    sudo sysctl -w vm.drop_caches=1
    # 或
    sudo echo 1 > /proc/sys/vm/drop_caches
    
    然后编辑配置文件,调整 memory_limitsystem_memory 参数:
    obd cluster edit-config obcluster
    
    确保满足以下条件:
    • 对于 OceanBase 数据库 4.x 版本,memory_limit 不低于 6G。
    • 推荐设置范围:memory_limit/3 ≤ system_memory ≤ memory_limit/2

方法三:检查磁盘空间

  • 根据文档片段 8 的信息,如果数据盘目录(默认为 /var/lib/oceanbase/)的磁盘空间不足,可能会导致启动失败。请检查磁盘空间:
    df -h /var/lib/oceanbase/
    
    如果磁盘空间不足,请清理不必要的文件或扩展磁盘容量。

方法四:检查配置文件

  • 确保配置文件中的参数正确无误。使用以下命令查看配置文件:
    obd cluster edit-config obcluster
    
    检查以下关键参数:
    • observer_sys_password 是否与数据库中的密码一致。
    • proxyro_password 是否与 ODP 配置文件中的密码一致(如果适用)。

方法五:重新部署集群

如果以上方法均无效,可以尝试销毁并重新部署集群:

obd cluster destroy obcluster
obd cluster deploy obcluster -c <config_file>
obd cluster start obcluster

3. 后续操作

如果问题仍未解决,建议参考以下步骤:

  1. 查看详细的日志信息:
    obd display-trace 1e79218a-3162-11f0-817d-0242ac160002
    
  2. 根据日志中的具体错误信息进一步排查。
  3. 如果仍然无法解决问题,可以联系 OceanBase 的技术支持团队获取帮助。

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

更多信息请查看:

  1. 4000 ~ 4499
  2. 8000 ~ 8999
  3. 使用命令行部署 obconfigserver
  4. 错误码
  5. OceanBase 安装部署工具 V2.4.0
  6. 使用 systemd 部署 OceanBase 数据库
  7. 通过图形化界面变更组件
1 个赞

docker安装ob 这边不确保其稳定性的。
麻烦提供一份启动失败期间的observer日志看一下

日志太大了,我只截取了一部分,这是日志
observer.log (9.9 MB)

1 个赞

自己排除问题解决了,在第一次启动后连接observer的ip固定下来了,在重启docker后再启动oceanbase的容器后,里面observer的ip变动了,然后就连不上了,即使在配置文件里面改成了对应的ip或者127.0.0.1都不行,都连不上,最后是在docker-compose里面指定容器ip,后重新新建个容器才能连接上

1 个赞

学习了。。正好要装docker版本