---
title: "停止或启动 OBServer | OceanBase 文档中心"
description: 停止或启动 OBServer 您可以根据数据库的运行情况，启动或停止 OBServer 的运行。 通过 SQL 语句停止 OBServer 停止 OBServer 主要包含以下 2 个 操作： 停止节点服务，即 Stop Server 操作 停止 observer 进程 停止节点服务 您可以通过对 OBServer …
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.0.0 社区版

# 停止或启动 OBServer

更新时间：2026-02-16 16:55:58

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/500.administrator-guide/600.basic-database-management/100.manage-clusters/500.manage-observers/300.stop-or-start-observer.md)  

您可以根据数据库的运行情况，启动或停止 OBServer 的运行。

## 通过 SQL 语句停止 OBServer

停止 OBServer 主要包含以下 2 个 操作：

- 停止节点服务，即 Stop Server 操作
 - 停止 observer 进程

### 停止节点服务

您可以通过对 OBServer 执行 Stop Server 操作来停止节点服务。Stop Server 操作的目的是将该 OBServer 上的分区 Leader 切到其他节点。当该 OBServer 上没有分区 Leader 的情况下，系统将内部标记 OBServer 为 `stop` 状态，客户端请求不会再次发送到该 OBServer，该 OBServer 也不会再对外提供服务。

关于 OBServer 状态的更多说明请参见 [查看 OBServer 状态](https://www.oceanbase.com/docs/community-observer-cn-10000000000901810)。

Stop Server 操作通常是特殊运维操作时执行，例如机器硬件维修、替换和升级，或者对该 Server 进行诊断等而进行的动作。

Stop Server 操作的语句如下：

```sql
obclient> ALTER SYSTEM STOP SERVER 'ip:port' [,'ip:port'...] [ZONE='zone'];

```

该语句仅支持在 `sys` 租户中执行。

在执行 Stop Server 操作前，需要确认分区副本满足多数派。

此外，执行 Stop Server 操作时，还需要注意以下事项：

- 不能跨 Zone 执行 Stop Server 操作，同一个 Zone 可以同时 Stop 多个 Server。
 - 一个 Stop 操作发起没有结束前，不能发起第二个操作。
 - 如果分区数多，或者被 Stop Server 的节点分区的 Leader 数量多， Stop Server 操作时间会比较长，如果超时，可以加大 SQL 超时时间。

  SQL 超时时间可通过租户变量 `ob_query_timeout` 来设置，该变量的默认值为 `10000000`，单位为微秒，具体设置方法可参见 [设置变量](https://www.oceanbase.com/docs/community-observer-cn-10000000000901628)。

  更多变量 `ob_query_timeout` 的介绍信息请参见 [ob_query_timeout](https://www.oceanbase.com/docs/community-observer-cn-10000000000900428) 。
 - 如果命令很快执行失败，那么可能是日志不同步，需要查询 `oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY` 视图，确认是否有 Stop Server 的记录。如果没有记录，则说明在 RS 没执行 Stop Server 操作前就失败了；如果有记录，则说明是日志不同步导致 Stop Server 操作执行失败。

  查询示例如下：

  ```sql
  obclient> SELECT rs_svr_ip FROM oceanbase.DBA_OB_ROOTSERVICE_EVENT_HISTORY WHERE event='stop_server';
  +----------------+
  | RS_SVR_IP      |
  +----------------+
  | xxx.xx.xxx.xx5 |
  | xxx.xx.xxx.xx5 |
  +----------------+
  2 rows in set

  ```
 - 执行 Stop Server 操作后，`oceanbase.DBA_OB_SERVERS` 视图中该 Server 的 `status` 字段仍为 `Active` 不变，但 `stop_time` 字段的值由 `NULL` 变为 Stop Server 的时间点，同时 OBServer 处于 `stop` 状态。

  更多 OBServer 状态的介绍和查看相关操作请参见 [查看 OBServer 状态](https://www.oceanbase.com/docs/community-observer-cn-10000000000901810)。

示例：

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. 执行以下 SQL 语句，停止节点服务。

   ```sql
   obclient> ALTER SYSTEM STOP SERVER "10.10.10.1:2882" zone='z1';

   ```

   停止节点服务后，如果该节点上有主副本，则系统会自动切换为备副本，且节点的备副本依然可以参与投票，但不会当选为主副本。节点服务停止与 OBServer 宕机性质不同，节点停止服务的时间可以超出配置项 `server_permanent_offline_time` 指定的永久下线时间且不会导致节点真的下线。

   > **说明**
   >
   >  
   >
   > 配置项 `server_permanent_offline_time` 用于设置节点心跳中断的时间阈值，即节点心跳中断多久后认为其被永久下线，永久下线的节点上的数据副本需要被自动补足。

### 停止 observer 进程

1. 使用 `admin` 用户登录 OBServer 所在的机器。
 2. 通过命令行工具进入 `/home/admin/oceanbase/bin` 目录。
 3. 运行以下命令，停止 observer 进程。

   ```shell
   kill `pidof observer`

   ```
 4. 运行以下命令，确认进程是否已停止。

   ```shell
   ps -ef | grep observer | grep -v grep

   ```

   如果命令执行后没有返回信息，则表示进程停止成功。

## 通过 SQL 语句启动 OBServer

启动 OBServer 主要包含以下 2 个操作：

- 启动 observer 进程
 - 启动节点服务，即 Start Server 操作

### 启动 observer 进程

某些特殊情况下，您可以通过命令启动 observer 进程。

1. 使用 `admin` 用户登录 OBServer 所在的机器。
 2. 通过命令行工具进入 `/home/admin/oceanbase/bin` 目录。
 3. 运行以下命令，启动 observer 进程。

   ```shell
   cd /home/admin/oceanbase/

   ./bin/observer [启动参数]

   ```

   通常仅在第一次启动时，需要添加启动参数，其他时候启动时，可直接使用 `./bin/observer` 命令启动 observer 进程。同时，您还可以运行 `./bin/observer --help` 查看 observer 启动参数的详细信息。

   第一次启动 observer 进程的命令示例如下：

   ```shell
   cd /home/admin/oceanbase/bin

   ./observer -p 2881 -P 2882 -z 'zone_1' -d '/data/1/prod_data/' -r '10.10.10.1:2882:2881;10.10.10.2:2882:2881;10.10.10.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%。
      - `10.10.10.1` 和 `10.10.10.2` 和 `10.10.10.3`：表示 RootServer 列表。
      - `memory_limit=100GB`：表示进程启动内存上限为 100 GB。
      - `WARN`：表示日志级别为 WARNING 级别。
      - 使用 `-o` 参数时，需满足以下条件：

            - 不分大小写，但是建议按照 `observer.config.bin` 中的变量名称来写。
            - 参数不能包含以下特殊字符：空格、`\r`、`\n`、`\t`
            - 参数名和参数值中间必须有等号（=）。
            - 参数之间使用逗号（,）进行分割。
 4. 进程启动后，5~10 秒钟后，执行以下命令，确认进程是否启动成功。

      1. 执行以下命令，确认进程是否已存在。

        示例如下：

        ```shell
        [root@xx oceanbase]#ps -ef | grep observer | grep -v grep
        root       6136      0 99 11:23 ?        00:00:19 ./bin/observer

        ```

        示例中，命令执行后有返回信息，表示进程已启动成功。如果命令执行后没有返回信息，则表示进程未启动成功。
      2. 执行以下命令，确认端口监听是否成功。

        示例如下：

        ```shell
        [root@xxx oceanbase]#netstat -ntlp | grep `pidof observer`
        tcp        0      0 0.0.0.0:2881            0.0.0.0:*               LISTEN      6136/./bin/observer
        tcp        0      0 0.0.0.0:2882            0.0.0.0:*               LISTEN      6136/./bin/observer

        ```

        示例中，`6136/./bin/observer` 中的 `6136` 表示 observer 的进程 ID，从执行结果可知，端口监听成功。

### 启动节点服务

一般情况下，您可以通过 Start Server 操作来启动节点服务。Start Server 操作对应 Stop Server 操作。集群中的 OBServer 启动后，通常默认状态为 `started`。如果执行过 Stop Server 操作，则需要通过 Start Server 操作将 Server 状态置为 `started`。

启动节点服务的语句如下：

```sql
obclient> ALTER SYSTEM START SERVER 'ip:port' [,'ip:port'...] [ZONE='zone'];

```

示例：

1. 使用 `root` 用户登录数据库的 `sys` 租户。
 2. 执行以下 SQL 语句，启动节点服务。

   ```sql
   obclient> ALTER SYSTEM START SERVER "10.10.10.1:2882";

   ```
 3. 执行以下 SQL 语句，查看节点服务是否已经正常。

   示例如下：

   ```sql
   obclient> SELECT * FROM oceanbase.DBA_OB_SERVERS\G
      *************************** 1. row ***************************
                  SVR_IP: xx.xx.xx.xx
               SVR_PORT: 2882
                     ID: 1
                  ZONE: zone1
               SQL_PORT: 2881
         WITH_ROOTSERVER: YES
                  STATUS: ACTIVE
      START_SERVICE_TIME: 2022-06-17 11:30:04.589074
               STOP_TIME: NULL
   BLOCK_MIGRATE_IN_TIME: NULL
      LAST_OFFLINE_TIME: NULL
         BUILD_VERSION: 4.0.0.0_20220525115829-1873fc2598d56060fe307ce3b7b88647686e0b09(May 25 2022 12:12:10)
   1 row in set

   ```

   其中：

      - `status`：表示节点服务的状态，一般有以下几种状态：

            - `active`：表示该 OBServer 节点为正常状态。
            - `inactive`：表示该 OBServer 节点为下线状态，集群升级过程中该值为 `inactive`。
      - `start_service_time`：表示节点启动服务的时间。如果该值是 `NULL`；则表示该节点的服务还没有启动。
      - `stop_time`：表示节点停止时间，该时间应该是默认值 `NULL`，如果不是，则表示该节点被停止服务（Stop Server 操作）了，需要先启动服务（Start Server）。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
