本文介绍 OBServer 的重启过程以及如何通过日志查看 OBServer 的重启进度。
适用版本
OceanBase 数据库所有版本
重启 OBServer 的阶段
重启 OBServer 可以简单划分为两个阶段:
启动的 OBServer 与 RootService 建立心跳,此时 OceanBase 数据库会将该 OBServer 的状态标记为 ACTIVE。
此时,查询
__all_server虚拟表,可以观察到启动的 OBServer 状态为ACTIVE,但start_service_time为0,如下所示。obclient> select svr_ip,status,start_service_time from __all_server; +----------------+--------+--------------------+ | svr_ip | status | start_service_time | +----------------+--------+--------------------+ | xxx.xx.xxx.xxa | active | 0 | | xxx.xx.xxx.xxb | active | 1617702133437712 | | xxx.xx.xxx.xxc | active | 1617702146772849 | +----------------+--------+--------------------+ 3 rows in set (0.00 sec)对启动的 OBServer 进行 Clog 回放、Schema 刷新等操作,这些工作完成后,OceanBase 数据库会记录工作完成的时间,标记为该 OBServer 的
start_service_time。此时,查询
__all_server虚拟表,可以观察到启动的 OBServer 状态为ACTIVE,并且start_service_time不为0,如下所示。obclient> select svr_ip,status,start_service_time from __all_server; +----------------+--------+--------------------+ | svr_ip | status | start_service_time | +----------------+--------+--------------------+ | xxx.xx.xxx.xxa | active | 1618381958817094 | | xxx.xx.xxx.xxb | active | 1617702133437712 | | xxx.xx.xxx.xxc | active | 1617702146772849 | +----------------+--------+--------------------+ 3 rows in set (0.00 sec)
通过日志查看重启状态
根据上文的描述,只要确认 start_service_time 有值,就可以判断重启是否完成。
通过以下命令搜索
start_service_time相关的日志。[admin@hostname log]$ grep "NOTICE" observer.log也可以按重启时间点按以下命令找到线程号,查看线程正在执行的任务。
如果出现
[NOTICE] observer start service,则说明start_service_time已经是大于零的值,OBServer 重启成功。[admin@hostname log]$ grep "succ to init logger" observer.log