oceanbase-部署

  • 注:使用 obd 安装的 ocp,这个 ocp 的 metadb(observer)可以用 ocp 接管,但是 obproxy 不能用 ocp 接管,所以 ocp 上的 obproxy 需要自己单独做监控告警

一、环境检查

特别注意:

  • 日志盘一般要求性能要更高一些,日志盘写入慢会影响DML事务响应延迟
  • 如果机器故障且时间大于server_permanent_offline_time,是需要全量重建这台机器上原有的副本,如果磁盘损坏,可以直接在ocp上替换节点,很方便
  • 部署集群时候需要特别设置的参数
    • memory_limit : 分配给OBserver的内存大小
    • devname :网卡名称
    • datafile_size:初始化数据文件占用磁盘大小
    • log_disk_size:Redo 日志磁盘的大小,一般是内存的3倍

1.更改限制

sudo vim /etc/security/limits.conf

root 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 unlimited

ulimit -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.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 = 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 = 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

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/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

二、下载和安装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安装

在这里插入图片描述

  • 特别注意,obproxy 的这个负载均衡要进行配置,不然会出现单点情况,不配置的情况下默认使用第一个机器,当第一个机器挂掉后ocp web 界面会无法访问,通过日志查看原因发现是系统一直请求的是第一台机器的地址,不会请求其他机器的地址
    在这里插入图片描述

在这里插入图片描述

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.添加主机

  • 问题:如果已经配置了sudo免密添加主机还是报sudo无免密,查看ocp日志中有如下报错,这是sudo 配置中启用了 requiretty,导致非交互式终端(如脚本或远程自动化工具)无法使用 sudo。
err=sudo: sorry, you must have a tty to run sudo
  • 解决
vi /etc/sudoers
# 注释掉下面这行
Defaults    requiretty

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修复或小改动。

4.使用ocp接管metadb集群

4.1 添加主机

  • 注意机房和地域要和meta集群的机房和地域一致,可以登陆metadb集群进行查看,不然接管的时候会报错 IDC 与 observer 的 IDC 不一致
select * from dba_ob_zones;

在这里插入图片描述

在这里插入图片描述

4.2 接管集群

  • 接管有直连和proxy两种方式,注意使用proxy的时候需要把集群名写对,不然会报错:请检查该集群sys租户root用户凭据是否正确,sys租户白名单设置是否正确,以及网络是否连通
# 查看集群名
obd cluster list

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值