Files
oceanbase/docs/docs-cn/6.administrator-guide/3.basic-database-management/3.observer-management/5.manage-observer-node-status.md
2022-02-10 14:51:49 +08:00

147 lines
4.3 KiB
Markdown

管理 OBServer 节点状态
=====================================
OceanBase 数据库提供了命令行方式来管理 OBServer 的节点状态
在运维操作中,如果需要替换节点、维修节点或者对节点进行诊断,可以通过 `STOP SERVER` 命令将该节点的分区 Leader 切到其他节点上。然后该 Server 状态将变为 `stopped` 并且不会对外提供服务。
节点的 `stopped` 状态并非等价于进程退出,进程可能仍然在运行,仅仅是集群的状态标志认为该节点为 `stopped` 状态。同理与之对应的是节点的 `started` 状态。
**Start Server 操作**
----------------------------------------
Start Server 操作对应 Stop Server 操作。当集群中的 OBServer 启动后,默认状态是 `started`。在执行 Stop Server 操作后,需要通过 Start Server 操作将 Server 状态置为 `started`。Start Server 操作的命令如下所示:
```sql
ALTER SYSTEM START SERVER 'ip:port' [,'ip:port'...] [ZONE='zone']
```
示例语句如下所示:
```sql
obclient> ALTER SYSTEM START SERVER "10.10.10.1:2882"
```
**Stop Server 操作**
---------------------------------------
Stop Server 操作的目的是将该 Server 上的分区 Leader 切到其他节点。当该 Server 上没有分区 Leader 的情况下,系统将内部标记 Server 为 `stopped` 状态,客户端请求不会再次发送到该 Server,该 Server 也不会再对外提供服务。
Stop Server 操作通常是特殊运维操作时执行,比如机器硬件维修、替换和升级,或者对该 Server 进行诊断等而进行的动作。Stop Server 操作的命令如下所示:
```sql
ALTER SYSTEM STOP SERVER 'ip:port' [,'ip:port'...] [ZONE='zone']
```
示例语句如下所示:
```sql
obclient> ALTER SYSTEM STOP SERVER "10.10.10.1:2882" zone='z1'
```
**Add Server 操作**
--------------------------------------
Add Server 操作的目的是添加节点到集群,该操作是运维扩容的操作。被添加的新节点要求是空的,即 CLog 和 ILog 目录下为空。Add Server 操作的命令如下所示:
```sql
ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']
```
示例语句如下所示:
```sql
obclient> ALTER SYSTEM ADD SERVER "10.10.10.1:2882" zone='z1'
```
**Delete Server 操作**
-----------------------------------------
Delete Server 用于从集群中删除节点。Delete Server 操作的命令如下所示:
```sql
ALTER SYSTEM DELETE SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']
```
示例语句如下所示:
```sql
obclient> ALTER SYSTEM DELETE SERVER "192.168.100.1:2882" zone='z1'
```
**Cancel Delete Server 操作**
------------------------------------------------
Delete Server 的动作会涉及到负载均衡。被删除的 Server 上的资源单元会在同一个 Zone 中进行资源单元(Unit)迁移。Unit 的迁移动作是 Unit 自动均衡过程由 RootService 控制。Unit 均衡过程中可能发生资源不足,其他同 Zone 的机器资源不足容纳这个新迁移的 Unit。这样将导致 Unit 迁移失败,通过 `/home/admin/oceanbase/log/rootservice.log` 可以看到迁移 Unit 失败的错误代码 -4624。如果希望取消 Delete Server 动作,可以通过 Cancel Delete Server 操作实现。 Cancel Delete Server 操作的命令如下所示:
```sql
ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' [,'ip:port'...] [ZONE [=] 'zone']
```
示例语句如下所示:
```sql
obclient> ALTER SYSTEM CANCEL DELETE SERVER "10.10.10.1:2882" zone='z1'
```
操作限制说明
---------------------------
对节点执行操作时:
* 不能跨 Zone 执行 Stop Server 操作,同一个 Zone 可以同时 Stop 多个 Server。
* 一个 Stop 操作发起没有结束前,不能发起第二个操作。
* `enable_auto_leader_switch`参数必须设置为开启。
* 分区副本满足多数派。
* 如果分区数多,或者被 Stop Server 的节点分区的 Leader 数量多, Alter System Stop Server 操作时间会比较长,如果超时,可以加大 SQL 超时时间。
* 如果命令很快失败,那么可能是日志不同步。
* 检查 `__all_rootservice_event_history `可以确认是否有 Stop Server 动作。
* Stop Server 后该 Server 的状态仍为 `Active` ,但 `stop_service_time `的值由 0 变为 Stop Server 的时间点。