---
title: "部署前配置 | OceanBase 文档中心"
description: 部署前配置 部署 OceanBase 集群前，您需要进行系统环境和配置检查。 查看资源 如果您是企业用户，建议您在部署 OceanBase 集群时，所有的机器使用相同的软硬件配置。如果您部署的是单机版 OceanBase 数据库，您可以跳过此步骤。 OceanBase 数据库支持 Red Hat Enterprise…
---
切换语言

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

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

# 部署前配置

更新时间：2026-06-12 17:29:27

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.0.0/zh-CN/400.installation-and-deployment/200.local-deployment/200.environment-and-configuration-checks.md)  

部署 OceanBase 集群前，您需要进行系统环境和配置检查。

## 查看资源

如果您是企业用户，建议您在部署 OceanBase 集群时，所有的机器使用相同的软硬件配置。如果您部署的是单机版 OceanBase 数据库，您可以跳过此步骤。

OceanBase 数据库支持 Red Hat Enterprise Linux Server 7.X、CentOS 7.X 和 Anolis OS 8.X 等操作系统。详细信息，参考 [软硬件要求](https://www.oceanbase.com/docs/community-observer-cn-10000000000900489)。

> **说明**
>
>  
>
> 本文中的配置文件指使用 OBD 部署 OceanBase 数据库时需要配置的文件。更多配置文件信息，参考 [配置文件示例](https://github.com/oceanbase/obdeploy/tree/master/example)。

## 查看操作系统

### Red Hat Enterprise Linux Server 7.X

运行以下命令，查看操作系统信息：

```bash
cat /etc/redhat-release

```

返回结果如下：

```bash
 Red Hat Enterprise Linux Server release 7.2 (Maipo)

```

### CentOS 7.X

运行以下命令，查看操作系统信息：

```

返回结果如下：

```bash
CentOS Linux release 7.2.1511 (Core)

```

### Anolis OS 8.X

运行以下命令，查看操作系统信息：

```bash
cat /etc/os-release

```

返回结果如下：

```bash
NAME="Anolis OS"
VERSION="8.2"
ID="anolis"
ID_LIKE="rhel fedora centos"
VERSION_ID="8.2"
PLATFORM_ID="platform:an8"
PRETTY_NAME="Anolis OS 8.2"
ANSI_COLOR="0;31"
HOME_URL="https://openanolis.cn/"

```

### Unbutu

运行以下命令，查看操作系统信息：

```

返回结果如下：

```bash
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

```

### Debian9

运行以下命令，查看操作系统信息：

```

返回结果如下：

```bash
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

```

## 查看内核

运行以下命令，查看内核信息：

```bash
uname -r

```

OceanBase 数据库要求操作系统为 3.10.0 及以上。

## 查看内存

运行以下命令，查看内存：

```bash
free -g

```

如果可用内存小于配置文件中的 `memory_limit` 值，请清理缓存或者修改配置 `memory_limit`，将 `memory_limit` 修改为小于可用内存的值。

执行以下命令，清理缓存：

```bash
sudo sysctl -w vm.drop_caches=3
# 或
sudo echo 3 > /proc/sys/vm/drop_caches

```

## 查看磁盘

运行以下命令，查看磁盘：

```bash
df -h

```

确保配置文件中的 `data_dir`、`redo_dir` 和 `home_path` 对应的磁盘已经完成挂载。`data_dir` 和 `redo_dir` 对应目录为空，`data_dir` 对应目录的磁盘已经使用率必须低于 4%。

## 查看网卡名称

您需要为配置文件中的 `devname` 配置项指定网卡。示例配置文件如下：

```bash
# Please set devname as the network adaptor's name whose ip is  in the setting of severs.
# if set severs as "127.0.0.1", please set devname as "lo"
# if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
devname: eth0

```

执行以下命令，查看网卡名称：

```bash
ifconfig

```

> **注意**
>
>  
>
> 要执行 `ifconfig` 命令，您必须安装 `net-tools` 依赖。

## 设置无密码 SSH 登录

### 名词解释

- 中控机器

  安装 OBD 的机器，用于管理 OceanBase 集群，存储 OceanBase 集群安装包和集群配置信息。
 - 目标机器

  安装 OceanBase 数据库的机器。

### 操作步骤

按以下步骤设置无密码 SSH 登录：

#### 说明

此处需要为所用用户配置免密登录。若计划使用 admin 用户部署 OceanBase 数据库，则需要为目标机器的 admin 用户配置免密。建议使用 admin 用户部署 OceanBase 数据库。

1. 在中控机器上运行以下命令查看密钥是否存在：

   ```bash
   [admin@test001 ~]$ ls ~/.ssh/id_rsa.pub

   ```

   若结果显示密钥已经存在，则无需生成新的密钥。
 2. （可选）在中控机器上运行以下命令生成 SSH 公钥和私钥：

   ```bash
   [admin@test001 ~]$ ssh-keygen -t rsa

   ```
 3. 将中控机的公钥复制到目标机器的 authorized_keys 文件中：

   ```bash
   [admin@test001 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server_ip>

   ```

### （附录）脚本参考

推荐您使用以下脚本，执行以下脚本需要拥有 sudo 权限。

```bash
#!/usr/bin/bash

SERVERS=("<user>@<server_ip1>" "<user>@<server_ip2>" "<user>@<server_ip3>")
PASSWORD="******"
keygen() {
sudo yum -y install expect
expect -c "
   spawn ssh-keygen -t rsa
   expect {
      *(~/.ssh/id_rsa):* { send -- \r;exp_continue}
      *(y/n)* { send -- y\r;exp_continue}
      *Enter* { send -- \r;exp_continue}
      *(y/n)* { send -- y\r;exp_continue}
      *Enter* { send -- \r;exp_continue}
      eof {exit 0}
   }
   expect eof
"
}
copy(){
expect -c "
   set timeout -1
   spawn ssh-copy-id $1
   expect {
      *(yes/no)* { send -- yes\r; exp_continue }
      *password:* { send -- $PASSWORD\r; exp_continue}
      eof {exit 0}
   }
   expect eof
"
}
ssh_copy_id_to_all(){
keygen ;
for host in ${SERVERS[@]}
do
      copy $host
done
}
ssh_copy_id_to_all

```

> **注意**
>
>  
>
> 您必须将脚本前两行的 **SERVERS** 列表和 **PASSWORD** 替换成您自己的实际机器列表和密码。

## 配置时钟源

如果您使用集群安装 OceanBase，则需要保证集群内各机器的时间同步。否则集群无法启动，服务在运行时也会出现异常。如果您已配置 NTP 时钟同步，则无需重新配置。

OceanBase 集群中的服务器时间必须保持一致，否则会导致 OceanBase 集群无法启动，运行时也会出现故障。物理机与时钟服务器的误差在 50ms 以下可认为时钟是同步状态，OceanBase 集群最大容忍误差不能超过 100ms。当超过 100ms 时，会出现无主情况。恢复时钟同步后。重启 OceanBase 集群, 可以恢复正常。

#### 说明

- 本文基于 x86 架构的 CentOS Linux 7.9 镜像环境提供操作指导，其余环境可能略有不同，请以实际环境为准。
 - 若 OCP 未部署在 OceanBase 集群节点上，也需为 OCP 节点与 OceanBase 集群节点配置时钟同步，以避免使用过程中因时钟偏差引发 OCP 操作异常。

### 前提条件

配置 NTP 时钟源前，确保您拥有所有机器的 root 用户权限。

### 操作步骤

按以下步骤配置 NTP 时钟同步。

1. 在每台机器上执行以下命令安装 NTP。

   ```bash
   yum install ntp ntpdate -y

   ```
 2. 运行以下命令查看服务器的 NTP 连接。

   当物理机与时钟服务器的时间误差在 50ms 以内时，系统即认为时钟是同步的。

   ```bash
   [root@centos-01 /root]#ntpq -4p
   remote refid st t when poll reach delay offset jitter
   ==============================================================================
   *time6.aliyun.co xxx.xxx.xxx.xxx 2 u 712 1024 377 21.951 4.253 4.208

   ```
 3. （可选）开启 NTP 服务端服务。

   如果您已经有了 NTP 服务端服务器，则可跳过此步骤。本文档使用目标机器 `xxx.xxx.xxx.xxx` 作为 NTP 服务端服务器。

      1. 编辑配置文件。

        以 root 用户登录 NTP 服务端服务器，运行以下命令编辑配置文件：

        ```bash
        vi /etc/ntp.conf

        ```

        在配置文件中添加以下内容：

        ```bash
        server <your_ntp_server_ip>

        ```

        保存并关闭配置文件。
      2. 运行以下命令重启 NTP 服务端服务：

        ```bash
        service ntpd restart

        ```
      3. 运行以下命令查看 NTP 服务端服务是否启动成功：

        ```bash
        ps -ef | grep -i ntpd

        ```
      4. 运行以下命令设置 NTP 服务开机自启动：

        ```bash
        chkconfig ntpd on

        ```
 4. 开启 NTP 客户端服务。

   > **注意**
   >
   >  
   >
   > NTP 服务端服务启动后，您需要等待 5 分钟再开启 NTP 客户端服务。否则系统会提示 "no server suitable for synchronization found"。

      1. 使用 root 用户登录 OBServer 节点服务器。
      2. 运行以下命令停止 NTP 服务：

        ```bash
        service ntpd stop

        ```
      3. 运行以下命令同步 NTP 服务端时间：

        ```bash
        ntpdate xxx.xxx.xxx.xxx

        ```
      4. 编辑配置文件。

        运行以下命令打开配置文件：

        ```

        ```
      5. 运行以下命令，启动 NTP 服务：

        ```bash
        /etc/init.d/ntpd start

        ```
 5. 运行以下命令验证配置是否成功。

   运行命令：

   ```bash
   ntpstat

   ```

   返回以下结果：

   ```bash
   synchronised to NTP server (xxx.xxx.xxx.xxx) at stratum 3
   time correct to within 2 ms
   polling server every 64 s

   ```

   运行命令：

   ```bash
   timedatectl

   ```

   返回以下结果：

   ```bash
         Local time: Thu 2021-04-22 11:02:32 CST
     Universal time: Thu 2021-04-22 03:02:32 UTC
           RTC time: Thu 2021-04-22 11:02:32
          Time zone: Asia/Shanghai (CST, +0800)
        NTP enabled: yes
   NTP synchronized: yes
    RTC in local TZ: yes
         DST active: n/a

   ```

   说明 NTP 服务生效。

## 规划磁盘

OceanBase 数据库的服务器依赖数据盘、事务日志盘和 OceanBase 数据库的安装盘。如果您是个人用户, 您可以将所有数据放到一块盘上并跳过此步骤。如果您是企业用户，您必须将数据分别挂载至三块磁盘。

如果您的机器上没有三块磁盘，或者您使用的是 RAID 磁盘阵列, 您需要对磁盘或者磁盘阵列的逻辑卷进行分区。建议您采用以下方案分区：

- 数据盘

  数据盘的配置参数为 `data_dir`。数据盘用来存储基线数据。在您首次启动 OceanBase 数据库时，`${data_dir}/sstable` 将自动创建。数据盘的大小由 `datafile_disk_percentage` 参数决定。`datafile_disk_percentage` 的默认值为 `95`。`data_dir` 创建后无法调整大小。您可以通过加减机器为 OceanBase 数据库进行扩容和缩容。目前，OceanBase 数据库不支持单机的磁盘级扩容和缩容。
 - 事务日志盘

  事务日志盘的配置参数为 `redo_dir`。建议您将事务日志盘的大小设置为 OceanBase 数据库内存的 3 倍到 4 倍及以上。事务日志盘包含多个固定大小的文件。这些文件位于安装目录 `${redo_dir}/{clog,ilog,slog}` 下。您可以根据您的需要自动创建和清除事务日志。事务日志达到磁盘总量的 80% 时，将触发自动清除。但是，只有事务日志对应的内存数据已经合并至基线数据中时，事务日志才能被删除。在相同数据量的情况下，事务日志的大小约为内存数据大小的三倍。因此事务日志盘所需空间上限与两次合并后的数据总量成正比。经验公式：事务日志文件大小 = 增量数据内存上限的 3 到 4 倍。
 - OceanBase 数据库安装盘

  OceanBase 数据库安装盘的配置参数为 `home_path`。建议您为 OceanBase 数据库安装盘预留至少 200 G 空间，以保存 7 天及以上的日志。OceanBase 数据库的 RPM 包安装目录位于 `${home_path}` 下。其中，基线数据文件和事务日志文件会通过软链接分别指向独立的数据盘和事务日志盘。OceanBase 数据库的运行日志位于 `${home_path}/log` 下。运行日志会不断增长，并且 OceanBase 数据库无法自动删除运行日志。因此您需要定时删除运行日志。

磁盘划分后, 执行以下命令检查磁盘划分情况：

```

返回以下结果：

```bash
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         31G     0   31G   0% /dev
tmpfs            31G     0   31G   0% /dev/shm
tmpfs            31G  516K   31G   1% /run
tmpfs            31G     0   31G   0% /sys/fs/cgroup
/dev/vda1       493G  171G  302G  37% /
tmpfs           6.2G     0  6.2G   0% /run/user/0
/dev/vdd1     984G    77M  934G  1%  /data
/dev/vdc1     196G     61M   186G  1%  /redo
/dev/vdb1     492G    73M   467G  1%  /home/admin/oceanbase

```

结果说明

- `/data` 为数据盘，大小为 1 TB。
 - `/redo` 存放 redo 日志。
 - `/home/admin/oceanbase` 存放 OceanBase 数据库的二进制文件和运行日志。

## 配置 limits.conf

您可以通过配置 `limits.conf` 限制您的进程数量。如果您是个人用户，您可以跳过此步骤。如果您是企业用户，您必须配置 `limits.conf`。

您可以使用以下两种方法修改资源限制：

- 通过启动时在会话级别修改。
 - 通过配置文件 `/etc/security/limits.conf` 在全局级别修改。

OceanBase 数据库的进程涉及的限制包括线程最大栈空间大小（Stack）、最大文件句柄数（Open Files）和 core 文件大小 （Core File Size）。

### 更改配置

> **说明**
>
>  
>
> 您必须在每台机器上执行此操作。

将会话级别的最大栈空间大小设置为 `unlimited`，最大文件句柄数设置为 `655350`，Core 文件大小设置为 `unlimited`。

执行以下命令，打开 `/etc/security/limits.conf` 配置文件：

```bash
sudo vim /etc/security/limits.conf

```

在 `/etc/security/limits.conf` 配置文件中添加以下内容：

```shell
root soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack 20480
* hard stack 20480
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimited

```

#### 说明

您需查看 `/etc/security/limits.d/20-nproc.conf` 文件中是否存在 nproc 的配置，若存在需同步修改该文件中 nproc 的值。

### 查看配置

退出当前会话，重新登录。执行以下命令，查看配置是否生效。

```shell
ulimit -a

```

输出如下。

```shell
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 252876
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 655350
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 20480
cpu time               (seconds, -t) unlimited
max user processes              (-u) 655360
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

```

从结果中可以看出：

- core file size 表示核心文件的最大阈值（以块为单位），对应 `limits.conf` 配置文件中的 core 参数，需查看值是否为 unlimited。
 - open files 表示最大打开文件描述符数，对应 `limits.conf` 配置文件中的 nofile 参数，需查看值是否为 655350。
 - stack size 表示堆栈大小（以千字节为单位），对应 `limits.conf` 配置文件中的 stack 参数，需查看值是否为 20480。
 - max user processes 表示最大用户进程数，对应 `limits.conf` 配置文件中的 nproc 参数，需查看值是否为 655360。

## 配置 sysctl.conf

为保证 OceanBase 数据库正常运行，在安装 OceanBase 数据库之前，您需要修改所有机器的 `sysctl.conf` 配置，以提高 Linux 系统的性能。如果您是个人用户，您可以跳过此步骤。如果您是企业用户，您必须配置 `sysctl.conf`。

### 更改配置

执行以下命令，打开 `/etc/sysctl.conf` 配置文件：

```bash
sudo vim /etc/sysctl.conf

```

在 `/etc/sysctl.conf` 配置文件中添加以下内容：

```bash
# for oceanbase
## 修改内核异步 I/O 限制
fs.aio-max-nr = 1048576

## 网络优化
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 0
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_slow_start_after_idle = 0

vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0

fs.file-max = 6573688
fs.pipe-user-pages-soft = 0

# 修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360

# 此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t

```

其中，`kernel.core_pattern` 中的 `/data` 为 OceanBase 数据库的 `data` 目录。

#### 注意

`max_map_count` 配置不合理的情况下，可能会导致严重的内存泄露。

### 加载配置

更改配置完成后，执行以下命令，加载配置，使配置生效。

```bash
sudo sysctl -p

```

### ARM 环境部署建议

- bios/uefi 及内核启动参数开启 NUMA 支持。
 - 关闭 NUMA Balancing，避免平衡过程中性能发生抖动，命令如下。

  ```shell
  sysctl kernel.numa_balancing=0

  ```
 - 禁用内存回收和重新分配功能，命令如下。

  ```shell
  sysctl vm.zone_reclaim_mode=0

  ```

## 关闭防火墙和 SELinux

如果您是个人用户，您可以跳过此步骤。如果您是企业用户，建议您关闭防火墙和 SELinux。

### 关闭防火墙

依次执行以下命令，关闭防火墙：

```bash
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld

```

### 关闭 SELinux

执行以下命令，打开 `/etc/selinux/config` 配置文件：

```bash
sudo vim /etc/selinux/config

```

在 `/etc/selinux/config` 配置文件中修改对应配置项为以下内容：

```bash
SELINUX=disabled

```

执行以下命令或重启服务器，使更改生效：

```bash
setenforce 0

```

执行以下命令，查看更改是否生效：

```bash
sestatus

```

## 创建用户

如果您是个人用户，您可以直接使用 root 账号并跳过此步骤。如果您是企业用户，建议您在机器上创建普通用户，以确保安全。您可以根据实际需要，创建您的常用账户。

按照以下步骤创建用户。此处以创建 admin 用户为例进行说明。

1. 执行以下命令，创建账户 admin。

   ```shell
   [root@test001 ~]# useradd -U admin -d /home/admin -s /bin/bash
   [root@test001 ~]# chown -R admin:admin /home/admin

   ```
 2. 执行以下命令，为账户 admin 设置密码。

   ```shell
   [root@test001 ~]# passwd admin

   ```
 3. （可选）为账户 admin 设置 sudo 权限。

   执行以下命令，打开 `/etc/sudoers` 文件：

   ```shell
   [root@test001 ~]# vim /etc/sudoers

   ```

   在 `/etc/sudoers` 文件末尾添加如下内容：

   ```shell
   ## Same thing without a password
   # %wheel        ALL=(ALL)       NOPASSWD: ALL
   admin       ALL=(ALL)       NOPASSWD: ALL

   ```
 4. 执行如下命令查看集群相关文件目录权限。

   此处以 `data` 目录为例：

   ```shell
   [root@test001 data]# ls -al

   ```

   返回如下结果：

   ```shell
   drwxr-xr-x 2 admin admin 4096 2 月 9 18:43 .
   drwxr-xr-x 2 admin admin 4096 2 月 9 18:43 log1

   ```

   若查看目录权限后，发现 `admin` 用户无相关文件的权限，可执行如下命令修改文件所属用户：

   ```shell
   [root@test001 ~]# chown -R admin:admin /data
   [root@test001 ~]# chown -R admin:admin /redo

   ```

   此处 `/data`、`/redo` 为示例挂载目录，您需根据您真实的挂载目录进行替换。

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