首批通过分布式安全可靠测评,为关键业务系统打造
使用命令行部署单副本 OceanBase 集群
更新时间:2026-04-10 11:58:00
OceanBase 支持单副本部署,并且单副本 OceanBase 集群还可以扩容(增加节点),所以也称为集群。
本节主要介绍通过使用命令行部署单副本 OceanBase 集群。
前提条件
在安装 OceanBase 数据库之前,需要确认以下信息:
- OBServer 服务器已完成相关配置。详细信息,请参见 服务器配置 和 使用 oatcli 初始化 OBServer 服务器。
- OBServer 服务器已创建
admin用户。 - 已获取 OceanBase 数据库 RPM 包。详细信息,请参见 准备安装包。
操作步骤
步骤一:安装 RPM 包
安装 OceanBase 数据库 RPM 包。
其中
$rpm_dir表示存放 RPM 包的目录,$rpm_name表示 RPM 包的名称。[root@xxx /]# cd $rpm_dir [root@xxx $rpm_dir]# rpm -ivh $rpm_name说明
OceanBase 数据库软件会安装在目录
/home/admin/oceanbase下。示例如下:
[root@xxx /home/admin/rpm]# rpm -ivh oceanbase-4.2.0.0-100000052023073123.el7.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:oceanbase-4.2.0.0-100000052023073################################# [100%]安装 OceanBase 客户端。
OceanBase 实例兼容 Oracle 或 MySQL,如果是 Oracle 租户,Java 程序连接需要使用 OceanBase 提供的 Java 驱动文件(oceanbase-client-*.jar)。如果要在命令行下访问 Oracle 租户,还需要安装客户端 OBClient。
OBClient 是 OceanBase 命令行客户端,可以访问 OceanBase 的 MySQL 租户和 ORACLE 租户。
示例如下:
[root@xxx $rpm_dir]# rpm -ivh obclient-1.2.6-20210510164331.el7.alios7.x86_64.rpm ##核查是否安装成功## [root@xxx $rpm_dir]# which obclient /usr/bin/obclient
步骤二:配置目录
清理 OceanBase 目录 (第一次部署不用)。
当要清理之前的 OceanBase 环境,或者 OceanBase 安装部署过程中出现问题导致环境变乱或者产生文件影响下一次安装时,选择直接清理旧的 OceanBase 目录。其中
$cluster_name为集群名。[root@xxx admin]# su - admin -bash-4.2$ kill -9 `pidof observer` -bash-4.2$ rm -rf /data/1/$cluster_name -bash-4.2$ rm -rf /data/log1/$cluster_name -bash-4.2$ rm -rf /home/admin/oceanbase/store/$cluster_name /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config* -bash-4.2$ ps -ef|grep observer示例如下:
[root@xxx admin]# su - admin -bash-4.2$ kill -9 `pidof observer` -bash-4.2$ rm -rf /data/1/obdemo -bash-4.2$ rm -rf /data/log1/obdemo -bash-4.2$ rm -rf /home/admin/oceanbase/store/obdemo /home/admin/oceanbase/log/* /home/admin/oceanbase/etc/*config* -bash-4.2$ ps -ef|grep observer初始化 OceanBase 目录。
OceanBase 的数据目录通常建议在独立的磁盘上,然后通过软链接方式链接到软件 Home 目录下面。其中
$cluster_name为集群名。说明
OceanBase 数据库从 V4.3.0 版本开始,支持将
slog从数据(data)盘中独立出来,即slog与数据文件无需在同一个磁盘上。支持配置所使用的磁盘,将slog与clog共用一块 SSD 固态硬盘。更多有关 OceanBase 数据库安装目录的信息,请参见 OBServer 节点安装目录结构。[root@xxx admin]# su - admin -bash-4.2$ mkdir -p /data/1/$cluster_name/{etc3,sstable,slog} -bash-4.2$ mkdir -p /data/log1/$cluster_name/{clog,etc2} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/$cluster_name -bash-4.2$ for t in {etc3,sstable,slog};do ln -s /data/1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done -bash-4.2$ for t in {clog,etc2};do ln -s /data/log1/$cluster_name/$t /home/admin/oceanbase/store/$cluster_name/$t; done示例如下:
[root@xxx admin]# su - admin -bash-4.2$ mkdir -p /data/1/obdemo/{etc3,sstable,slog} -bash-4.2$ mkdir -p /data/log1/obdemo/{clog,etc2} -bash-4.2$ mkdir -p /home/admin/oceanbase/store/obdemo -bash-4.2$ for t in {etc3,sstable,slog};do ln -s /data/1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done -bash-4.2$ for t in {clog,etc2};do ln -s /data/log1/obdemo/$t /home/admin/oceanbase/store/obdemo/$t; done说明
obdemo是以集群名称创建的目录,可自定义,在启动进程时会用到。检查结果:
-bash-4.2$ cd /home/admin/oceanbase -bash-4.2$ tree store/ store/ `-- obdemo |-- clog -> /data/log1/obdemo/clog |-- etc2 -> /data/log1/obdemo/etc2 |-- etc3 -> /data/1/obdemo/etc3 |-- slog -> /data/1/obdemo/slog `-- sstable -> /data/1/obdemo/sstable 6 directories, 0 files
步骤三:初始化 OceanBase 集群
说明
示例 IP 做了脱敏处理,这不是安装需求。在部署时应根据自己机器真实 IP 填写。
启动 observer 进程。
注意
必须在
admin用户下启动 observer 进程。OceanBase 数据库支持指定的节点 IP 为 IPv4 或者 IPv6 地址启动 observer 进程。
使用 IPv4 启动 observer 进程:
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer {-I $ip | -i $devname} -P $rpc_port -p $sql_port -z $zone_name -d /home/admin/oceanbase/store/$cluster_name -r '$ip:2882:2881' -c $cluster_id -n $cluster_name -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/$cluster_name/etc3;/data/log1/$cluster_name/etc2"使用 IPv6 启动 observer 进程:
cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -6 {-I $ip | -i $devname} -P $rpc_port -p $sql_port -z $zone_name -d /home/admin/oceanbase/store/$cluster_name -r '[$ip]:2882:2881' -c $cluster_id -n $cluster_name -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/$cluster_name/etc3;/data/log1/$cluster_name/etc2"参数解释:
参数 说明 -6使用 IPv6 启动 observer 进程时,需指定 -6。-I|-i-I:指定待启动的节点 IP。在多机部署场景下,不能指定 127.0.0.1 作为目标 IP。建议使用指定 IP(例如:-I 10.10.10.1)来启动节点。-i:指定网卡名,可通过ifconfig命令查看。
说明
支持通过同时指定 IP 和网卡名(例如:
-I 10.10.10.1 -i eth0)来启动节点,但不建议这么用。-p指定服务端口号,一般指定为 2881。-P指定 RPC 端口号,一般指定为 2882。-n指定集群名称。可自定义,不同集群名称不要重复即可。 -z指定启动的 observer 进程所属的 Zone。 -d指定集群主目录,初始化目录时创建的目录。除集群名字 $cluster_name外,其他不要变动。-c指定集群 ID。为一组数字,可以自定义,不同集群不要重复即可。 -l指定日志级别。 -r指定 RS 列表,格式是 $ip:2882:2881,分号分割,表示 Root Service 信息。注意
使用 IPv6 启动 observer 进程时,IP 地址需要使用
[]包裹。-o指定集群启动参数(配置项)列表,为可选项。可以为多个配置项指定值,多个配置项的值之间使用英文逗号进行分隔。请根据实际需要,选择适当的启动参数并为每个参数指定合适的值,以优化集群的性能和资源利用率。以下是一些常用的集群启动配置项: - cpu_count:用于设置系统 CPU 总数。
- system_memory:用于设置系统预留给租户 ID 为
500的租户的内存容量,即指定 OceanBase 数据库内部保留内存。在机器内存较少的情况下可以考虑将该值调小,需要注意的是,在性能测试时可能会出现内存不足的问题。 - memory_limit:用于设置可用的总内存大小。
- datafile_size:用于设置数据文件占用磁盘可用空间的大小。即指定 OceanBase 数据库数据文件
sstable的大小(一次性初始化),根据/data/1/可用空间评估,建议不少于100G。 - datafile_disk_percentage:磁盘数据文件占用磁盘总空间的百分比。
- datafile_next:用于设置磁盘数据文件自动扩容的步长。
- datafile_maxsize:用于设置磁盘数据文件自动扩容的最大空间。
- config_additional_dir:用于设置本地存储配置文件的多个目录,为了冗余存储多份配置文件。
- log_disk_size:用于设置 Redo 日志磁盘的大小。
- log_disk_percentage:用于设置 Redo 日志占用其所在磁盘总空间的百分比。
- syslog_level:用于设置系统日志级别。
- syslog_io_bandwidth_limit:用于设置系统日志所能占用的磁盘 IO 带宽上限,超过带宽上限容量的系统日志将被丢弃。
- max_syslog_file_count:用于设置在回收日志文件之前可以容纳的日志文件数量。
- enable_syslog_recycle:用于设置是否打开记录启动前的旧日志的开关。与
max_syslog_file_count配合使用,决定回收逻辑是否考虑旧的日志文件。
datafile_size、datafile_disk_percentage、datafile_next和datafile_maxsize配合使用可以达到磁盘数据文件的自动扩容的目的,详细信息请参见 配置磁盘数据文件的动态扩容。更多集群配置信息,请参见 配置项总览-集群级配置项。使用 IPv4 启动 observer 进程示例如下:
[root@xxx /home/admin]# su - admin -bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '10.10.10.1:2882:2881' -c 10001 -n obdemo -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"可以通过下面命令查看 observer 进程是否启动成功:
netstat -ntlp命令,如果监听到了2881与2882端口,则说明进程启动成功。ps -ef|grep observer命令可以返回 observer 进程信息。
示例如下:
-bash-4.2$ netstat -ntlp (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:2881 0.0.0.0:* LISTEN 11111/observer tcp 0 0 0.0.0.0:2882 0.0.0.0:* LISTEN 11111/observer ... ... ... ... ... ... -bash-4.2$ ps -ef|grep observer admin 11111 0 43 17:58 ? 00:00:14 /home/admin/oceanbase/bin/observer -I 10.10.10.1 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r 10.10.10.1:2882:2881 -c 10001 -n obdemo -o system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2使用 IPv6 启动 observer 进程示例如下:
[root@xxx /home/admin]# su - admin-bash-4.2$ cd /home/admin/oceanbase && /home/admin/oceanbase/bin/observer -6 -I xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8 -P 2882 -p 2881 -z zone1 -d /home/admin/oceanbase/store/obdemo -r '[xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8]:2882:2881' -c 10001 -n obdemo -o "system_memory=30G,datafile_size=500G,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2"集群 bootstrap 操作。
通过 OBClient 客户端连接已启动的 observer 进程,密码为空。
[root@xxx /home/admin]# obclient -h127.0.0.1 -uroot -P2881 -p******设置 SQL 最大执行时间。
obclient [(none)]> SET SESSION ob_query_timeout=1000000000;指定 Root Service 机器列表并启动集群。
使用 IPv4 地址指定 Root Service 机器列表并启动集群。
obclient [(none)]> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '10.10.10.1:2882';使用 IPv6 地址指定 Root Service 机器列表并启动集群。
obclient [(none)]> ALTER SYSTEM BOOTSTRAP ZONE 'zone1' SERVER '[xxxx:xxxx:xxxx:xxxx:xxx:xxxx:xxxx:ebd8]:2882';
注意
如果这一步失败报错了,其原因很可能是 observer 进程启动参数有不对、OBServer 节点相关目录权限不对、日志目录空间不足一定比例(跟数据目录合用了大目录,空间被数据目录占用了)节点内存资源不足等等。请先排查这些问题点后,然后清理 OceanBase 目录从头开始。
验证集群初始化成功。
在完成集群的 bootstrap 初始化操作后,通过执行
SHOW DATABASES;命令进行验证,若查询结果显示数据库列表中存在oceanbase数据库,即可确认集群初始化成功。修改密码。
sys租户的root用户密码默认为空,初始化成功后请修改密码。ALTER USER root IDENTIFIED BY '******';
后续操作
集群创建成功后,可根据业务需要创建用户租户。
使用命令行创建用户租户的详细信息,请参见 创建租户。