您可以在客户端中对 observe 进程进行查看、启动以及停止操作,同时还可以管理 OBServer 节点的状态。

查看 observer 进程

登录 OceanBase Server 所在的宿主机,在命令行工具中运行以下语句以查看进程 observer:

  1. ps -ef |grep observer

启动 observer 进程

1.登录 OceanBase Server 所在的宿主机,在命令行工具中 cd 至 ​/home/admin/oceanbase/bin​ 目录,运行下述命令以启动 observer:

  1. cd /home/admin/oceanbase/
  2. ./bin/observer [启动参数]

可以运行 ./bin/observer --help 查看 observer 启动参数的详细信息。

示例:

下述示例展示了 启动 observer 的命令:

  1. cd /home/admin/oceanbase/bin
  2. ./observer -p 2881 -P 2882 -z 'zone_1' -d '/data/1/prod_data/' -r '192.168.1.1:2882:2881;192.168.1.2:2882:2881;192.168.1.3:2882:2881' -l WARN -d '/data/1/prod_data' -o 'memory_limit=100GB,datafile_disk_percentage=85'

其中:

  • 2881 :表示 MySQL 的访问端口。
  • 2882:表示远程访问端口。
  • zone_1:表示 Zone 名称。
  • /data/1/prod_data:表示数据盘目录。
  • datafile_disk_percentage=85:表示数据盘的占用比率为 85%。
  • 192.168.1.1192.168.1.2192.168.1.3:表示 rs_list。
  • memory_limit=100GB:表示进程启动内存上限 100 GB。
  • WARN:表示 log_level 为 WARNING 级别。
  • 使用 -o 参数时,需满足以下条件:

  • 不分大小写,但是推荐按照 observer.config.bin 中的变量名称来写。

  • 参数不能包含以下特殊字符:

  • 空格

  • \r
  • \n
  • \t

  • 参数名和参数值中间必须有等号(=)。

  • 参数之间使用逗号(,)进行分割。

停止 observer 进程

登录 OceanBase Server 所在的宿主机,在命令行工具中运行下述语句以停止 observer 进程:

  1. kill -15 `pgrep observer`

如果遇到无法正常退出情况,可以运行下述语句:

  1. kill -9 `pgrep observer`

管理 OBServer 状态

进程启动后,在集群中 OBServer 作为节点单元的管理类似 Zone 的管理。 节点上线,下线操作也是类似的。在运维操作中,如果需要替换节点,维修节点或者对节点进行诊断,可以通过 STOP SERVER 命令将该节点的分区 Leader 切到其他节点上。然后该 Server 状态将变为 stopped 并且不会对外提供服务。

节点的 stopped 状态并非等价于进程退出。进程可能仍然在运行,仅仅是集群的状态标志认为该节点为 stopped 状态。同理与之对应的是节点的 started 状态。

Start Server 操作

Start Server 操作对应 Stop Server 操作。当集群中的 OBServer 启动后,默认状态是 started。在执行 STOP SERVER 后,需要通过 Start Server 操作将 Server 状态置为 started。Start Server 操作的命令如下所示:

  1. ALTER SYSTEM START SERVER 'ip:port' [,'ip:port'…] [ZONE='zone']

示例语句如下所示:

  1. alter system start server "192.168.100.1:2882"

Stop Server 操作

Stop Server 操作的目的是将该 Server 上的分区 Leader 切到其他节点。当该 Server 上没有分区 Leader 的情况下,系统将内部标记 Server 为 stopped 状态,客户端请求不会再次发送到该 Server,该 Server 也不会再对外提供服务。

Stop Server 操作通常是特殊运维操作时执行,比如机器硬件维修、替换和升级,或者对该 Server 进行诊断等而进行的动作。Stop Server 操作的命令如下所示:

  1. ALTER SYSTEM STOP SERVER 'ip:port' [,'ip:port'…] [ZONE='zone']

示例语句如下所示:

  1. alter system stop server "192.168.100.1:2882" zone='z1'

Add Server 操作

Add Server 操作的目的是添加节点到集群,该操作是运维扩容的操作。被添加的新节点要求是空的,即 CLog 和 ILog 目录下是空的状态。Add Server 操作的命令如下所示:

  1. ALTER SYSTEM ADD SERVER 'ip:port' [,'ip:port'…] [ZONE [=] 'zone']

示例语句如下所示:

  1. alter system add server "192.168.100.1:2882" zone='z1'

Delete Server 操作

Delete Server 操作的目的是从集群中删除节点。Delete Server 操作的命令如下所示:

  1. ALTER SYSTEM DELETE SERVER 'ip:port' [,'ip:port'…] [ZONE [=] 'zone']

示例语句如下所示:

  1. 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 操作的命令如下所示:

  1. ALTER SYSTEM CANCEL DELETE SERVER 'ip:port' [,'ip:port'…] [ZONE [=] 'zone']

示例语句如下所示:

  1. ALTER SYSTEM CANCEL DELETE SERVER "192.168.100.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 的时间点。