oceanbase-部署
一、环境检查
1.更改限制
sudo vim /etc/security/limits.confroot soft nofile 655350
root hard nofile 655350
* soft nofile 655350
* hard nofile 655350
* soft stack unlimited
* hard stack unlimited
* soft nproc 655360
* hard nproc 655360
* soft core unlimited
* hard core unlimitedulimit -a
- core file size 表示核心文件的最大阈值(以块为单位),对应 limits.conf 配置文件中的 core 参数,需查看值是否为 unlimited。
- open files 表示最大打开文件描述符数,对应 limits.conf 配置文件中的 nofile 参数,需查看值是否为 655350。
- stack size 表示堆栈大小(以千字节为单位),对应 limits.conf 配置文件中的 stack 参数,需查看值是否为 unlimited。
- max user processes 表示最大用户进程数,对应 limits.conf 配置文件中的 nproc 参数,需查看值是否为 655360。
2.更改系统配置
sudo vim /etc/sysctl.conffor 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 = 16777216net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
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 = 0vm.swappiness = 0
vm.min_free_kbytes = 2097152
vm.overcommit_memory = 0fs.file-max = 6573688
fs.pipe-user-pages-soft = 0修改进程可以拥有的虚拟内存区域数量
vm.max_map_count = 655360此处为 OceanBase 数据库的 data 目录
kernel.core_pattern = /data/core-%e-%p-%t
3.加载配置
sysctl -p
ARM 环境部署建议
- bios/uefi 及内核启动参数开启 NUMA 支持。
- 关闭 NUMA Balancing,避免平衡过程中性能发生抖动,命令如下。
sysctl kernel.numa_balancing=0
- 禁用内存回收和重新分配功能,命令如下。
sysctl vm.zone_reclaim_mode=0
4.关闭大页
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/enabled
5.配置免密
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<server_ip>
6.配置sudo权限
#!/usr/bin/bashSERVERS=("<user>@<server_ip1>" "<user>@<server_ip2>" "<user>@<server_ip3>")
PASSWORD="******"
keygen() {
sudo yum -y install expect
expect -c "spawn ssh-keygen -t rsaexpect {*(~/.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 -1spawn ssh-copy-id $1expect {*(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[@]}
docopy $host
done
}
ssh_copy_id_to_all
二、下载和安装OBD与OCP
1.安装obd并启动
- 这种方式下载的是el7的安装包,详细见链接
- 推荐使用自己下载安装包的方式安装obd,详见文档
bash -c "$(curl -s https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/download-center/opensource/oceanbase-all-in-one/installer.sh)"
source ~/.oceanbase-all-in-one/bin/env.sh
2.ocp安装
3.报错与解决
- 报错:安装ocp时候报错缺少clockdiff
OBD-4360: 10.139.96.139: clockdiff not exists. Please install clockdiff manually
- 解决:安装clockdiff
apt-get install iputils-clockdiff
- 故障:安装途中obd退出,导致安装中断
- 解决:需要清理集群,详见文档
# 列出集群
obd cluster list
# 清理集群
obd cluster destroy cluster_name
三、利用 OCP 安装 OB SERVER
1.添加主机
1.1 添加完主机后会安装OCP Agent,安装的过程较慢,需要等待一段时间
1.2 报错与解决
- 添加主机失败,点击查看任务获取如下详细报错,这是
2025-08-27 10:48:46.900 ERROR 25753 --- [manual-subtask-executor2,2f9779ea2159d5fd,abdd57148a0cff4b] c.o.o.c.t.e.c.w.subtask.SubtaskExecutor : An unknown error has occurred. Cause: Execute clock diff failed.. Error message: 10.139.96.141. Contact the administrator.
- 解决
检查clockdiff命令是否成功
# 不是必现的,有时候成功,有时候失败
clockdiff 192.168.1.1
..................................................
host=192.168.1.1 rtt=0(0)ms/0ms delta=0ms/0ms Wed Aug 27 11:15:32 2025
clockdiff 192.168.1.1
..................................................
clockdiff: 10.139.96.139 is down
这个是clockdiff的bug
需要下载最新版本的clockdiff,当然,还有一种方法,多重试几次,也能成功,因为不是必现的
git clone https://github.com/iputils/iputils.git
sudo apt install meson ninja-build libcap-dev build-essential xsltproc -y
cd iputils
./configure && meson build
cd builddir && meson install
sudo mv /usr/bin/clockdiff /usr/bin/clockdiff.bak
sudo mv /usr/local/bin/clockdiff /usr/bin
# 给clockdiff赋权,
# cap_net_raw:允许程序创建原始套接字(raw sockets),用于直接发送和接收网络层的数据包(如 ICMP、UDP/TCP 头部自定义等)。
# cap_sys_nice:允许程序调整进程优先级和 CPU 调度策略(如使用 nice、setpriority、实时调度策略 SCHED_FIFO、SCHED_RR)。
# +ep: e = effective(有效能力):程序运行时生效的权限。p = permitted(许可能力):程序允许使用的权限集合。
sudo setcap cap_net_raw,cap_sys_nice+ep /usr/bin/clockdiff
- 报错
# 问题1
/tmp/6c9e609b975b4c24/install_package.sh: line 35: rpm2cpio: command not found cpio: premature end of archive
# 问题2
退出码:1,错误信息:sudo: alien: command not found
- 解决
sudo apt install rpm2cpio alien
2.安装odp(obproxy)
- 多副本observer的安装前提条件是有odp
3.创建集群
3.1 点击创建集群
3.2 上传版本包
4.2.5的版本是tp版本,比较稳定,4.3.5的版本是ap版本,支持列存副本以及自动分区,el7位内核版本<5.10的使用,el8为内核版本>=5.10的使用,内核版本用uname -r确定,如果ocp默认的软件包不满足要求,可以下载软件包并上传,软件包详见链接
- 特别注意,软件包上传后要点击下上传,不能直接叉掉
- ob:通常指 OceanBase,阿里巴巴开源的分布式关系数据库系统。
- 4.2.5:版本号,表示主版本号 4,次版本号 2,修订号 5。
- ce:通常表示 Community Edition,即社区版,开源免费版本。
- bp5:一般指 Bug Patch 5,即第5个补丁包,包含针对该版本的若干bug修复或小改动。