首批通过分布式安全可靠测评,为关键业务系统打造
部署前配置
更新时间:2026-06-12 17:29:27
部署 OceanBase 集群前,您需要进行系统环境和配置检查。
查看资源
如果您是企业用户,建议您在部署 OceanBase 集群时,所有的机器使用相同的软硬件配置。如果您部署的是单机版 OceanBase 数据库,您可以跳过此步骤。
OceanBase 数据库支持 Red Hat Enterprise Linux Server 7.X、CentOS 7.X 和 Anolis OS 8.X 等操作系统。详细信息,参考 软硬件要求。
说明
本文中的配置文件指使用 OBD 部署 OceanBase 数据库时需要配置的文件。更多配置文件信息,参考 配置文件示例。
查看操作系统
Red Hat Enterprise Linux Server 7.X
运行以下命令,查看操作系统信息:
cat /etc/redhat-release
返回结果如下:
Red Hat Enterprise Linux Server release 7.2 (Maipo)
CentOS 7.X
运行以下命令,查看操作系统信息:
cat /etc/redhat-release
返回结果如下:
CentOS Linux release 7.2.1511 (Core)
Anolis OS 8.X
运行以下命令,查看操作系统信息:
cat /etc/os-release
返回结果如下:
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
运行以下命令,查看操作系统信息:
cat /etc/os-release
返回结果如下:
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
运行以下命令,查看操作系统信息:
cat /etc/os-release
返回结果如下:
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/"
查看内核
运行以下命令,查看内核信息:
uname -r
OceanBase 数据库要求操作系统为 3.10.0 及以上。
查看内存
运行以下命令,查看内存:
free -g
如果可用内存小于配置文件中的 memory_limit 值,请清理缓存或者修改配置 memory_limit,将 memory_limit 修改为小于可用内存的值。
执行以下命令,清理缓存:
sudo sysctl -w vm.drop_caches=3
# 或
sudo echo 3 > /proc/sys/vm/drop_caches
查看磁盘
运行以下命令,查看磁盘:
df -h
确保配置文件中的 data_dir、redo_dir 和 home_path 对应的磁盘已经完成挂载。data_dir 和 redo_dir 对应目录为空,data_dir 对应目录的磁盘已经使用率必须低于 4%。
查看网卡名称
您需要为配置文件中的 devname 配置项指定网卡。示例配置文件如下:
# 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
执行以下命令,查看网卡名称:
ifconfig
注意
要执行
ifconfig命令,您必须安装net-tools依赖。
设置无密码 SSH 登录
名词解释
中控机器
安装 OBD 的机器,用于管理 OceanBase 集群,存储 OceanBase 集群安装包和集群配置信息。
目标机器
安装 OceanBase 数据库的机器。
操作步骤
按以下步骤设置无密码 SSH 登录:
说明
此处需要为所用用户配置免密登录。若计划使用 admin 用户部署 OceanBase 数据库,则需要为目标机器的 admin 用户配置免密。建议使用 admin 用户部署 OceanBase 数据库。
在中控机器上运行以下命令查看密钥是否存在:
[admin@test001 ~]$ ls ~/.ssh/id_rsa.pub若结果显示密钥已经存在,则无需生成新的密钥。
(可选)在中控机器上运行以下命令生成 SSH 公钥和私钥:
[admin@test001 ~]$ ssh-keygen -t rsa将中控机的公钥复制到目标机器的 authorized_keys 文件中:
[admin@test001 ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server_ip>
(附录)脚本参考
推荐您使用以下脚本,执行以下脚本需要拥有 sudo 权限。
#!/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 时钟同步。
在每台机器上执行以下命令安装 NTP。
yum install ntp ntpdate -y运行以下命令查看服务器的 NTP 连接。
当物理机与时钟服务器的时间误差在 50ms 以内时,系统即认为时钟是同步的。
[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(可选)开启 NTP 服务端服务。
如果您已经有了 NTP 服务端服务器,则可跳过此步骤。本文档使用目标机器
xxx.xxx.xxx.xxx作为 NTP 服务端服务器。编辑配置文件。
以 root 用户登录 NTP 服务端服务器,运行以下命令编辑配置文件:
vi /etc/ntp.conf在配置文件中添加以下内容:
server <your_ntp_server_ip>保存并关闭配置文件。
运行以下命令重启 NTP 服务端服务:
service ntpd restart运行以下命令查看 NTP 服务端服务是否启动成功:
ps -ef | grep -i ntpd运行以下命令设置 NTP 服务开机自启动:
chkconfig ntpd on
开启 NTP 客户端服务。
注意
NTP 服务端服务启动后,您需要等待 5 分钟再开启 NTP 客户端服务。否则系统会提示 "no server suitable for synchronization found"。
使用 root 用户登录 OBServer 节点服务器。
运行以下命令停止 NTP 服务:
service ntpd stop运行以下命令同步 NTP 服务端时间:
ntpdate xxx.xxx.xxx.xxx编辑配置文件。
运行以下命令打开配置文件:
vi /etc/ntp.conf在配置文件中添加以下内容:
server <your_ntp_server_ip>运行以下命令,启动 NTP 服务:
/etc/init.d/ntpd start
运行以下命令验证配置是否成功。
运行命令:
ntpstat返回以下结果:
synchronised to NTP server (xxx.xxx.xxx.xxx) at stratum 3 time correct to within 2 ms polling server every 64 s运行命令:
timedatectl返回以下结果:
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 数据库无法自动删除运行日志。因此您需要定时删除运行日志。
磁盘划分后, 执行以下命令检查磁盘划分情况:
df -h
返回以下结果:
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 配置文件:
sudo vim /etc/security/limits.conf
在 /etc/security/limits.conf 配置文件中添加以下内容:
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 的值。
查看配置
退出当前会话,重新登录。执行以下命令,查看配置是否生效。
ulimit -a
输出如下。
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 配置文件:
sudo vim /etc/sysctl.conf
在 /etc/sysctl.conf 配置文件中添加以下内容:
# 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 配置不合理的情况下,可能会导致严重的内存泄露。
加载配置
更改配置完成后,执行以下命令,加载配置,使配置生效。
sudo sysctl -p
ARM 环境部署建议
bios/uefi 及内核启动参数开启 NUMA 支持。
关闭 NUMA Balancing,避免平衡过程中性能发生抖动,命令如下。
sysctl kernel.numa_balancing=0禁用内存回收和重新分配功能,命令如下。
sysctl vm.zone_reclaim_mode=0
关闭防火墙和 SELinux
如果您是个人用户,您可以跳过此步骤。如果您是企业用户,建议您关闭防火墙和 SELinux。
说明
您必须在每台机器上执行此操作。
关闭防火墙
依次执行以下命令,关闭防火墙:
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
关闭 SELinux
执行以下命令,打开 /etc/selinux/config 配置文件:
sudo vim /etc/selinux/config
在 /etc/selinux/config 配置文件中修改对应配置项为以下内容:
SELINUX=disabled
执行以下命令或重启服务器,使更改生效:
setenforce 0
执行以下命令,查看更改是否生效:
sestatus
创建用户
如果您是个人用户,您可以直接使用 root 账号并跳过此步骤。如果您是企业用户,建议您在机器上创建普通用户,以确保安全。您可以根据实际需要,创建您的常用账户。
说明
您必须在每台机器上执行此操作。
按照以下步骤创建用户。此处以创建 admin 用户为例进行说明。
执行以下命令,创建账户 admin。
[root@test001 ~]# useradd -U admin -d /home/admin -s /bin/bash [root@test001 ~]# chown -R admin:admin /home/admin执行以下命令,为账户 admin 设置密码。
[root@test001 ~]# passwd admin(可选)为账户 admin 设置 sudo 权限。
执行以下命令,打开
/etc/sudoers文件:[root@test001 ~]# vim /etc/sudoers在
/etc/sudoers文件末尾添加如下内容:## Same thing without a password # %wheel ALL=(ALL) NOPASSWD: ALL admin ALL=(ALL) NOPASSWD: ALL执行如下命令查看集群相关文件目录权限。
此处以
data目录为例:[root@test001 data]# ls -al返回如下结果:
drwxr-xr-x 2 admin admin 4096 2 月 9 18:43 . drwxr-xr-x 2 admin admin 4096 2 月 9 18:43 log1若查看目录权限后,发现
admin用户无相关文件的权限,可执行如下命令修改文件所属用户:[root@test001 ~]# chown -R admin:admin /data [root@test001 ~]# chown -R admin:admin /redo此处
/data、/redo为示例挂载目录,您需根据您真实的挂载目录进行替换。