本文介绍 OceanBase 数据库 BOOTSTRAP 失败的排查方法。
适用版本
OceanBase 数据库所有版本问题排查
BOOTSTRAP 操作是在 OBServer 启动成功后,初始化系统租户的过程。如果 BOOTSTRAP 失败,您可进行以下排查:1. 检查 OBServer 的基础设施是否满足要求。
在启动 OBServer 并初始化 BOOTSTRAP 的 OB 集群必须要先保证机器的基础环境符合要求。 1. 检查时钟同步情况。
使用 chronyc sources -v 或 ntpq -p 方式验证时钟时效,如果时钟不同步,矫正时钟后再次进行重启。
a. 检查网络是否异常。
保证网络延迟时间(单向延迟)最好保证在 50ms 以内,最差(单向延迟)也要在 100ms 以内。且网络的稳定性足够,不存在重传等异常情况。待保证稳定的网络质量后进行重启,查看是否能够重启成功。
2. 检查 BOOTSTRAP 命令相关信息是否正确。
首先要检查 rs_list 列表中的机器是否都在线,并且在执行 BOOTSTRAP 命令时,保证该集群是第一次执行 BOOTSTRAP 命令,如果数据目录使用了软链接,查看软链接下的目录内容是否清理干净,否则清除掉。 如果没有清除,会引起 BOOTSTRAP 失败,并报错 4015。具体的排查步骤如下: 1. 在执行命令的机器上,查看 observer.log。
对 OceanBase 执行 BOOTSTRAP 命令失败的情况,打开 observer.log,通过搜索 BOOTSTRAP 关键字可以看到错误日志,关键信息为 observer is not empty(ret=-4015)。
WARN [BOOTSTRAP] bootstrap (ob_service.cpp:2233) [52707][1110][YB426451898A-00059E8E47A3C4DE] [lt=14] [dc=0] observer is not empty(ret=-4015)
a. 查看日志中错误信息。
一般情况下若能确定是由于进行 BOOTSTRAP 时文件目录不为空引起的。引起该错误有以下可能: * 该服务器曾经执行过 BOOTSTRAP。此时分两种情况:
i. 当前机器已注册别的集群的 RS 上
此时当前机器已被占用,无法被新集群再次初始化,您可以换一台未被占用机器即可。
ii. 当前机器未注册别的集群
此时系统产生了 sstable、clog、ilog、slog 及 shm 等目录和文件。
iii. 同一目录启动了多个集群。
文件目录存在软连接。
这时候需要对集群进行整理后再对集群进行初始化。
3. 检查 OBServer 的 clog 目录是否有足够的可用空间。
OBServer 默认会在 clog 所在目录已用空间达到 95% 时(受参数 log_disk_usage_limit_percentage 控制)日志停写。 如果 OBServer 的 clog 目录占用(不论是 OBServer clog 或者其他文件)已经超过了 95%,就会引起 OBServer BOOTSTRAP 失败。有关 clog 盘占用量超过阈值问题的解决方法,请参见 节点日志盘(Clog)空间满。
4. 检查集群进行 BOOTSTRAP 操作时系统资源是否不足。
OB 集群在进行 BOOTSTRAP 操作时系统资源不足,例如 CPU、内存等资源不足。系统资源不足时,可能报 OB_INVALID_RESOURCE_UNIT 相关错误信息 ;但是如果资源足够,但是仍然报错,需要进行进一步诊断确认 BOOTSTRAP 超时的原因。
5. 检查每个 OBServer 是否使用相同的 cluster_id 启动。
在启动 OBServer 的时候,需要指定合法的 cluster_id,cluster_id 的合法取值范围是 [1,4294901759]。
6. 检查 OCP 初始化 BOOTSTRAP 是否失败。
使用 OCP 进行 OB 集群初始化 BOOTSTRAP 时失败,从 OCP 中看到在创建任务流时,可以在子任务中查看具体的报错信息。
场景示例:
在子任务流 at_bootstrap_observer 环节报错,报错详情里可以看到报错码 4216 。目前有一个已知的场景是用 OCP 管控 OB 集群时,没有正确配置 OCP 的域名。因为从 OBServer 节点上使用 curl 访问通过 OCP 暴露的 configureURL 时,如果配置了 OCP 的域名,需要由 OBServer 解析,此时没有正确的 OCP 域名则会产生这样的报错。
如果机器配置都满足条件,且遇到的 BOOTSTRAP 失败都不是上述提到的常见原因引起时,您就需要系统性地对 BOOTSTRAP 进行排查。所有 BOOTSTRAP 流程可以通过 BOOTSTRAP 关键字日志串起来,在相应的 server 上搜索 BOOTSTRAP 关键字即可查看 BOOTSTRAP 进度。根据失败的进度信息可以确定诊断方向。如果诊断后 BOOTSTRAP 原因仍然不明确,请联系 OceanBase 技术支持人员协助解决。




