首批通过分布式安全可靠测评,为关键业务系统打造
OBServer 服务器重启后 observer 进程未能自动启动
更新时间:2026-06-08 02:36
适用版本
OceanBase 数据库各个版本。
问题现象
OBServer 服务器计划外掉电重启或计划内重启后,observer 进程未能自动启动,导致 OCP 上显示 OceanBase 集群不可用。
[root@ob1 ~]# ps -ef | grep observer | grep -v grep
[root@ob1 ~]# <== 结果为空!
问题原因
通过 OAT 做过装机模板化的 OBServer 服务器,都会在 /etc/rc.local 开机自启动脚本中自动添加下面的一行启动代码。
[root@ob1 ~]# cat /etc/rc.local
...
/usr/local/bin/auto_start_ob.sh >> /var/log/ob.autostart.log 2>&1 &
...
如果机器重启了,observer 进程会通过 /etc/rc.local 脚本里面的 /usr/local/bin/auto_start_ob.sh 自动起来,obproxy 和 ocp-agent 相关进程也应该会通过该脚本自动起来。
/usr/local/bin/auto_start_ob.sh >> /var/log/ob.autostart.log 2>&1 &
因为 OceanBase 集群对节点之间时间的同步有强依赖(集群内要求主机之间的时钟同步时延在 100ms 以内),因此,该脚本启动 observer 之前会先检查一下是否有稳定的时钟同步源。
执行以下命令
# ntpq -np或
# chronyc -n sources确认输出中是否有
^*开头的记录行。MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* xxx.xxx.2.8 2 7 377 4 +5856ns[ -14us] +/- 21ms如果可以找到
^*开头的记录行,则代表当前时钟同步服务存在稳定的时钟同步源。
如果主机上找不到运行中的 ntpd/chronyd 服务,/var/log/ob.autostart.log 启动日志中就会报错。
can't find running ntpd/chronyd service, observer will not run
sync time failed, will not start observer.
如果找不到稳定的 NTP 时钟同步源,/var/log/ob.autostart.log 启动日志中就会报错。
can't get steady ntp server, observer will not run
sync time failed, will not start observer.
如果找不到稳定的 Chrony 时钟同步源,/var/log/ob.autostart.log 启动日志中就会报错。
can't get steady chrony server, observer will not run
sync time failed, will not start observer.
因此,如果 OBServer 主机上的 ntpd/chronyd 服务由于某些原因(比如无法连通时钟源服务器)而无法自动同步时间,就会导致 observer 进程开机自启动失败。
解决方法
检查并修复时钟服务同步问题,确认 ntpd/chronyd 服务可以跟时钟源正确地同步时间。
以 root 用户身份重新执行自启动脚本。
[root@ob1 ~]# /usr/local/bin/auto_start_ob.sh >> /var/log/ob.autostart.log 2>&1 &
如果暂时未能解决时钟服务同步问题,也可以先手工拉起 observer 进程,暂时先恢复 OceanBase 数据库服务。
[root@ob1 ~]# su - admin
[admin@ob1 ~]$ cd ~/oceanbase ; ./bin/observer