OB启动问题

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.2.1.10
【问题描述】为什么执行了启动服务的命令,查询启动时间还是null,这是bug吗

2 个赞

还没启动完成吧?看看日志

现在有了,这个启动很慢吗?大概20多分钟,而且OCP页面看已经正常了

执行启动服务的命令start server,内部启动服务大概涉及哪些步骤 @论坛小助手

根据您提供的信息和文档库中的信息,我将为您解析 OB(OceanBase)启动过程中遇到的问题。

1. 启动时间显示为 NULL

在您提供的查询结果中,START_SERVICE_TIME 列的值为 NULL。这并不一定是 bug。在 OceanBase 数据库中,START_SERVICE_TIME 表示的是服务实际开始提供对外服务的时间。如果这个时间是 NULL,可能是因为:

  • 服务尚未完全初始化:即使 STATUS 显示为 ACTIVE,某些内部组件和服务可能仍在初始化过程中。
  • 查询时机问题:在某些情况下,虽然服务已经启动并可以接受连接,但 START_SERVICE_TIME 可能还没有被更新。

2. 启动时间较长

您提到启动过程大约需要 20 多分钟,并且 OCP 页面显示已经正常。根据文档片段 1 的描述,启动预计需要 2~5 分钟。然而,实际启动时间可能会因多种因素而延长,包括但不限于:

  • 硬件性能:服务器的 CPU、内存、磁盘 I/O 等性能会影响启动速度。
  • 数据量大小:如果有大量的历史数据需要恢复或加载,启动时间会相应增加。
  • 配置复杂度:复杂的配置或较大的集群规模也会导致启动时间变长。

3. 内部启动步骤

执行 start server 命令后,OceanBase 内部启动服务涉及的主要步骤包括:

  • 读取配置文件:解析并加载配置文件中的各项参数。
  • 初始化系统表:确保系统表结构正确无误。
  • 恢复日志:从日志中恢复未完成的事务,确保数据一致性。
  • 启动各个模块:如 SQL 引擎、存储引擎等核心模块。
  • 检查健康状态:进行一系列自检,确保所有组件正常工作。
  • 注册到集群:向集群中的其他节点注册自身信息,加入集群网络。

4. 建议与操作

为了进一步确认启动是否存在问题,您可以采取以下措施:

  • 查看日志:通过 docker logs <container_name> 或直接查看 observer.log 文件,检查是否有异常信息。
  • 监控资源使用情况:使用系统工具(如 topiostat 等)监控 CPU、内存、磁盘 I/O 的使用情况,判断是否存在瓶颈。
  • 调整参数:如果启动时间过长,可以尝试调整一些启动相关的参数,如 ob_log_restore_parallel_degree(见文档片段 3),以优化启动性能。

如果您仍然怀疑存在 bug 或者启动时间异常,请联系 OceanBase 技术支持人员协助排查。希望以上信息对您有所帮助!

更多信息请查看:

  1. 快速体验 OceanBase 数据库
  2. 体验并行导入和数据压缩
  3. log_restore_concurrency
  4. 4000 ~ 4499
  5. BOOTSTRAP
  6. 6000 ~ 6999
  7. MySQL 事务控制
  8. 备份架构
  9. 部署前准备

可以参考了解下小助手的回复 内部启动步骤涉及挺多步骤的