STOP SERVER 是一个运维操作,常见于机器硬件维修、替换、升级或者对该 Server 进行诊断等场景。广义的 STOP SERVER 有三种,分别是 STOP SERVER、FORCE STOP SERVER 与 ISOLATE SERVER。原理都是把 Leader 切换到其他节点,然后将停止的 OBServer 标记为 STOP 状态。
适用版本
OceanBase 数据库 V2.2.30 及后续版本
操作含义
STOP SERVER、FORCE STOP SERVER 与 ISOLATE SERVER 的具体含义如下表所示。
| 返回命令执行完成前进行的操作 | STOP SERVER | FORCE STOP SERVER | ISOLATE SERVER |
|---|---|---|---|
| 检查副本数是否足够维持多数派 | 是 | 是 | 否 |
| 等待 Clog 日志同步完成 | 是 | 否 | 否 |
| 等待 Leader 副本切换到其他节点 | 是 | 是 | 否 |
执行完成后是否可以通过 kill -9 停止 observer 进程 |
是 | 是 | 否 |
注意事项
在执行 STOP SERVER、FORCE STOP SERVER 或 ISOLATE SERVER 后,RootService 都会尽可能将停止的 Server 上的 Leader 副本切换到其他节点,改动作可能会导致跨机事务。
在执行 STOP SERVER、FORCE STOP SERVER 或 ISOLATE SERVER 后,切主动作需要一些时间,这是因为它需要遍历所有副本元信息,并等待切主完成,分区数量大的集群中,等待时间会更长。您可以通过以下方式来优化切主的时间:
将
ob_query_timeout变量调大。ob_query_timeout用于设置查询超时时间,单位为微秒,默认为 10000000。有关该变量的详细信息,请参见《OceanBase 数据库 参考指南》中的 系统变量 章节。使用
ALTER SYSTEM SET primary_zone=XXX命令手动切主 。