---
title: "添加 OBServer | OceanBase 文档中心"
description: 添加 OBServer 您可以向管理的集群中添加 OBServer 节点。 关于 OBServer OceanBase 数据库是单进程软件，进程名为 observer，通常每个机器启动一个进程就是一个节点（节点不完全等同于物理机器）。OBServer 是 OceanBase 数据库的服务器，observer 是运行在…
---
切换语言

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

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

# 添加 OBServer

更新时间：2023-09-20 20:20:57

您可以向管理的集群中添加 OBServer 节点。

## 关于 OBServer

OceanBase 数据库是单进程软件，进程名为 observer，通常每个机器启动一个进程就是一个节点（节点不完全等同于物理机器）。OBServer 是 OceanBase 数据库的服务器，observer 是运行在该服务器上进程。

每一个 OceanBase 数据库的进程 observer 由 IP 和端口作为唯一标识。通常一台物理或者虚拟服务器运行一个 observer 进程。observer 进程作为 OceanBase 数据库最核心的进程负责几乎所有数据库内核功能，包括 SQL 引擎、存储引擎和事务引擎。分布式的功能也同样在这个进程中，包括 RPC 通信、负载均衡和分区管理等。

## 通过命令向集群中添加 OBServer 节点

通过命令添加 OBServer 节点前，需要提前准备好对应版本的 OceanBase 数据库 RPM 包。

> **说明**
>
>  
>
> 可以在 OceanBase 官方网站左上角单击 **支持与服务** 下的 **软件下载** 按钮进入下载页面下载有关 OceanBase 数据库的 RPM 包或者联系 OceanBase 技术支持人员获取。

1. 通过 `root` 用户登录到 OceanBase 数据库的 `sys` 租户。
 2. （可选）依次执行以下语句，添加 Zone，并设置 Zone 的区域与 IDC 属性。

   > **说明**
   >
   >  
   >
   > 如果是向已有的 Zone 中添加 OBServer 节点，则该步骤可省略。如果需要新增 Zone 并向其中添加 OBServer 节点，则需要执行该步骤。

   本节以待添加 Zone 为 `zone4`，且 `REGION='HANGZHOU',IDC='HZ1'` 为例，提供操作指导。

   ```sql
   obclient> ALTER SYSTEM ADD ZONE zone4 REGION HANGZHOU;

   obclient> ALTER SYSTEM START ZONE zone4;

   obclient> ALTER SYSTEM ALTER ZONE zone4 SET REGION='HANGZHOU',IDC='HZ1';

   ```
 3. 使用 `root` 用户通过 `ssh` 登录到待添加的 OBServer 服务器，进行安装前检查。

      1. 进入工具所在的目录。

        ```shell
        [root@xxx /]# cd /root/t-oceanbase-antman/clonescripts

        ```
      2. 执行以下命令，开始检查。

        推荐您使用 oat-cli 工具进行检查，有关 oat-cli 工具的详细信息及使用，请参见当前版本对应的 《OceanBase 数据库 部署指南》文档。

        ```shell
        [root@xxx clonescripts]# sh precheck.sh -m ob

        ```
      3. 执行以下命令，检查时钟同步情况，保证所有节点的时钟偏差在 100 ms 以内。

        其中，`$IP` 表示集群中其他 OBServer 的 IP 地址。

        ```shell
        [root@xxx /]# ntpdate $IP

        ```
 4. 安装 OceanBase 数据库的 RPM 包。

   其中，`rpm_dir` 表示存放 RPM 包的目录；`$rpm_name` 表示 RPM 包的名称。

   ```shell
   [root@xxx /]# cd $rpm_dir

   [root@xxx $rpm_dir]# rpm -i --prefix=/home/admin/oceanbase $rpm_name

   ```

   > **说明**
   >
   >  
   >
   > OceanBase 数据库软件默认安装在 `/home/admin/oceanbase` 目录下。
 5. 在待添加的 OBServer 服务器上创建 `/data/1` 和 `/data/log1` 目录，并将目录的拥有者（Owner）修改为 `admin`。

   通常情况下，使用 `/data/1` 作为数据目录，`/data/log1` 作为日志目录。

   ```shell
   [root@xxx /]# mkdir -p /data/1 /data/log1
   [root@xxx /]# cd data
   [root@xxx data]# ll
   total 8
   drwxr-xr-x 2 root root 4096 Nov 18 14:24 1
   drwxr-xr-x 2 root root 4096 Nov 18 14:24 log1
   [root@xxx data]# cd ..
   [root@xxx /]# chown -R admin:admin data
   [root@xxx /]# cd data
   [root@xxx data]# ll
   total 8
   drwxr-xr-x 2 admin admin 4096 Nov 18 14:24 1
   drwxr-xr-x 2 admin admin 4096 Nov 18 14:24 log1

   ```
 6. 初始化 OceanBase 数据库的目录。

   OceanBase 数据库的数据目录通常建议设置在独立的磁盘上，然后通过软链接方式链接到软件的 `Home` 目录下面。

   ```shell
   [root@xxx admin]# su - admin
   -bash-4.2$ mkdir -p /data/1/$cluster_name/{etc3,sort_dir,sstable}
   -bash-4.2$ mkdir -p /data/log1/$cluster_name/{clog,etc2,ilog,slog,oob_clog}
   -bash-4.2$ mkdir -p /home/admin/oceanbase/store/$cluster_name
   -bash-4.2$ for t in {etc3,sort_dir,sstable};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done
   -bash-4.2$ for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done

   ```

   其中，`$cluster_name` 表示待添加 OBServer 节点的集群。

   示例如下：

   ```shell
   [root@xxx admin]# su - admin
   -bash-4.2$ mkdir -p /data/1/obdemo/{etc3,sort_dir,sstable}
   -bash-4.2$ mkdir -p /data/log1/obdemo/{clog,etc2,ilog,slog,oob_clog}
   -bash-4.2$ mkdir -p /home/admin/oceanbase/store/obdemo
   -bash-4.2$ for t in {etc3,sort_dir,sstable};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done
   -bash-4.2$ for t in {clog,etc2,ilog,slog,oob_clog};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done

   ```
 7. 启动 OBServer，并将 OBServer 注册到集群。

      1. 设置 `admin` 用户的 ulimit。

        ```shell
        [admin@xxx oceanbase]$ ulimit -s 10240; ulimit -c unlimited

        ```
      2. 配置环境变量。

        ```shell
        [admin@xxx oceanbase]$ export LD_LIBRARY_PATH=/home/admin/oceanbase/lib:$LD_LIBRARY_PATH LD_PRELOAD=''

        ```
      3. 启动 observer 进程。

        语句如下：

        ```shell
        [admin@xxx oceanbase]$ /home/admin/oceanbase/bin/observer -i eth0 -P XXXX -p YYYY -z zone1 -d /home/admin/oceanbase/store/obdemo -r 'xxx.xxx.xxx.xxx:xxxx:xxx.xxx.xxx.xxx:xxxx xxx.xxx.xxx.xxx:xxxx:yyyy' -c 20190716 -n obdemo -o "memory_limit_percentage=90,memstore_limit_percentage=60,datafile_disk_percentage=80,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"

        ```

        其中：

             - `-P` 参数用于指定 RPC 端口号。
             - `-p` 参数用于指定直连端口号。
             - `-z` 参数用于指定待加入的 Zone。
             - `-d` 参数用于指定数据的存储目录。
             - `-r` 参数用于指定待添加的 OBServer 的 IP 地址列表。
             - `-c` 参数用于指定集群 ID。
             - `-n` 参数用于指定集群名。
             - `-o` 参数用于指定启动配置项。

              更多配置项的详细信息，请参见《参考指南》文档中的 **系统配置项** 。

        > **注意**
        >
        >  
        >
        > 在启动 observer 进程时，请务必指定正确的 Zone 名称和初始化参数值。
 8. 再次通过 `root` 用户登录到 OceanBase 数据库的 `sys` 租户，向集群中添加 OBServer 节点。

   其中，`$IP` 表示待添加的 OBServer 的 IP 地址；`$PORT` 表示 OBServer 的 RPC 端口号，默认为 `2882`。

   ```sql
   obclient> ALTER SYSTEM ADD SERVER '$IP:$PORT' ZONE 'zone4';

   ```

   该操作会将 OBServer 加入到服务列表，只有服务列表中的 OBServer 才可以提供服务。

   添加后，可以执行以下语句，确认列表中是否有刚才添加的 OBServer，如果有，则表示添加成功。

   ```sql
   obclient> SELECT * FROM oceanbase.__all_server;

   ```

## 通过 OCP 向集群的多个 zone 同时添加 OBServer 节点

您也可以通过 OCP 向集群中的多个 Zone 分别添加相同数量的 OBServer 节点。

### 前提条件

- 待操作的集群可以在当前 OCP 中进行管理。

  如果该集群未加入到 OCP 中进行管理，请联系管理员将待操作的集群接管到当前 OCP 中，具体操作方法请参见 OCP 对应版本的《用户指南》文档中的 **接管集群** 。
 - 向集群中添加 OBServer 节点前，请确认当前登录用户已具备集群的管理权限。

  如果当前用户没有集群管理的权限，请联系管理员为您添加相应权限的角色，具体操作方法请参见 OCP 对应版本的《用户指南》文档中的 **编辑用户**。
 - 待添加的 OBServer 的硬件架构需要与当前集群保持一致并且机器已加入到 OCP 中进行管理。

### 操作步骤

1. 登录 OCP。

   默认进入 **集群** 页面。
 2. 在该页面的 **集群列表** 区域，选择待操作的集群并单击其集群名。
 3. 在 **总览** 页面右上角，单击 **添加 OBServer** 。
 4. 在 **OBServer 信息** 区域，指定待添加 OBServer 的机型、机器选择方式和 IP 地址（可多选）。

   ![11181812](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/3785987361/p355152.png)

   若并非所有 Zone 都有添加 OBServer 的需要，可单击 Zone 行尾的删除符号，删除该 Zone 行。
 5. 完成后，单击 **确定** 。

   您可通过弹出框中的 **查看任务** 按钮，查看添加进度。

   您也可在 **系统管理 > 任务** 中查看该任务的进度。

   当该任务状态为 **完成** ，且集群 **总览** 页的 **OBServer 列表** 中相应 OBServer 的状态都为 **运行中** ，则添加成功。

## 通过 OCP 向指定的 Zone 中添加 OBServer 节点

您可以通过 OCP 向指定的多个 Zone 中添加一个或多个 OBServer 节点。

### 前提条件

- 向 Zone 中添加 OBServer 节点前，请确认当前登录用户已具备集群的管理权限。如果当前用户没有集群管理的权限，请联系管理员为您添加相应权限的角色，具体操作方法请参见 OCP 对应版本的《用户指南》文档中的 **编辑用户** 。
 - 待添加的 OBServer 的硬件架构需要与当前集群保持一致。

### 操作步骤

1. 登录 OCP 。默认进入 **集群** 页面。
 2. 在 **集群** 页面的 **集群列表** 区域，选择待操作的集群并单击其集群名。
 3. 在 **总览** 页面的 **Zone 列表** 区域，选择一个需要添加 OBServer 的 Zone，在对应的 **操作** 列中，单击 **添加 OBServer** 。
 4. 在 **OBServer信息** 区域，选择机型、机器选择方式及待添加的 OBServer 所在的主机 IP 址。

   默认添加一个 OBServer，如果需要添加多个 OBServer，您可以在下方单击 **新增** 按钮。

   ![09161748](https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/8060562361/p327389.png)
 5. 完成后，单击 **确定** 。

 上一篇 下一篇 ![有帮助](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) 咨询热线
