首批通过分布式安全可靠测评,为关键业务系统打造
使用 systemd 部署 OceanBase 数据库
更新时间:2026-01-28 20:04:38
本文介绍如何使用 systemd 部署及管理单节点 OceanBase 数据库。
注意
本文档操作仅适用于学习或测试场景,请不要应用于生产环境。
前提条件
在执行本文操作前,您需确认以下信息:
您使用的环境是 RPM 平台系统,目前已验证支持的系统如下。
Anolis OS 8.X 版本(内核 Linux 4.19 版本及以上)
CentOS Linux 8.X 版本(内核 Linux 4.19 版本及以上)
Debian 10、11 和 12 版本(内核 Linux 4.19 版本及以上)
openEuler 22.03 和 24.03 版本(内核 Linux 5.10.0 版本及以上)
Ubuntu 18.04、20.04 和 22.04 版本(内核 Linux 4.19 版本及以上)
当前环境中的可用内存需大于 3G。
您环境中已安装 jq 命令行工具,并正确配置了 systemd 作为系统和服务管理器。
您环境中已安装数据库连接工具(MySQL 客户端或 OBClient 客户端)。
您计划部署的 OceanBase 数据库为 V4.2.2 或之后版本。
您使用的用户已具有执行 sudo 命令的权限。
部署 OceanBase 数据库
步骤一:安装 OceanBase 数据库
根据所用环境能否连接外部网络,分为在线安装和离线安装两种安装方法。
添加 OceanBase 镜像源
[admin@test001 ~]$ sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo安装 OceanBase 数据库
[admin@test001 ~]$ sudo yum install oceanbase-ce oceanbase-ce-libs obclient该命令默认部署最新版本,您可通过声明版本号安装指定版本,如使用
yum install oceanbase-ce-4.2.2.0命令安装 OceanBase 数据库 V4.2.2 版本,推荐安装最新版本。
您可从 OceanBase 软件下载中心 下载所需版本的 OceanBase 数据库及对应依赖库(
OceanBase Libs)。下载完成后,将安装包复制到您的机器上。推荐您使用最新版本的安装包。在安装包所在目录下,执行 rpm 命令安装 OceanBase 数据库。
[admin@test001 ~]$ sudo rpm -ivh oceanbase-ce-*.rpm
步骤二:启动 OceanBase 数据库
安装 OceanBase 数据库后,您可参照如下步骤启动 OceanBase 数据库。
(可选)修改配置文件
您可参照该步骤修改配置文件,未修改的情况下将使用配置文件中的默认配置进行部署。
[admin@test001 ~]$ sudo vim /etc/oceanbase.cnf该文件包含的配置项内容如下:
ip=127.0.0.1 mysql_port=2881 rpc_port=2882 obshell_port=2886 root_pwd="" redo_dir=/var/lib/oceanbase/redo data_dir=/var/lib/oceanbase/data datafile_size=2G cpu_count=16 memory_limit=6G system_memory=1G log_disk_size=13G说明
您可在该配置文件中添加其他配置项,详细配置项的介绍可参见 配置项总览。
目前 OBServer 节点的 Zone(默认为
zone1)不支持修改。
配置文件中的配置项介绍如下表:
配置项 是否必选 默认值 说明 ip 可选 127.0.0.1 OBServer 节点的 IP,暂不支持配置为 ipv6 地址。 mysql_port 可选 2881 OceanBase 数据库 SQL 服务协议端口号。 rpc_port 可选 2882 OceanBase 数据库远程访问的协议端口号。 obshell_port 可选 2886 OceanBase 数据库运维端口。 root_pwd 可选 默认为空 OceanBase 集群的超级管理员( root@sys)的密码,建议设置复杂的密码。redo_dir 可选 /var/lib/oceanbase/redo clog、ilog 和 slog 的目录,建议配置为独立的磁盘。 说明
数据盘(默认为
/var/lib/oceanbase/)的可用磁盘空间应当大于 15G。data_dir 可选 /var/lib/oceanbase/data 设置存储 SSTable 等数据的目录,建议配置为独立的磁盘。 说明
数据盘(默认为
/var/lib/oceanbase/)的可用磁盘空间应当大于 15G。datafile_size 可选 0 指定对应节点数据文件(block_file)大小,未配置的情况下以 datafile_disk_percentage配置项为准,详细介绍请参见 datafile_size 和 datafile_disk_percentage。cpu_count 可选 0 OceanBase 数据库可使用的 CPU 总数,如果设置为 0,将自动检测。 memory_limit 可选 0 observer 进程能从环境中获取的最大内存,未配置的情况下以 memory_limit_percentage配置项为准,配置项详细介绍请参考 memory_limit 和 memory_limit_percentage。system_memory 可选 0M 保留的系统内存,该参数值会占用 memory_limit的内存,未配置的情况下 OceanBase 数据库会自适应。log_disk_size 可选 0 用于设置 Redo 日志磁盘的大小,未配置的情况下以 log_disk_percentage配置项为准,详细介绍请参考 log_disk_size 和 log_disk_percentage。修改 OceanBase 安装目录(默认是
/home/admin/oceanbase)下etc目录的属主[admin@test001 ~]$ sudo chown root /home/admin/oceanbase/etc启动 OceanBase 数据库
[admin@test001 ~]$ sudo systemctl start oceanbase查看 OceanBase 数据库的启动状态
[admin@test001 ~]$ sudo systemctl status oceanbase当状态显示为
Service is ready时,表示 OceanBase 数据库已正常启动。
步骤三:连接 OceanBase 数据库
此处以通过 OBClient 连接 OceanBase 数据库为例,命令如下:
[admin@test001 ~]$ obclient -h<IP> -uroot@sys -P<Port> -p<Passwd> -A oceanbase
参数说明:
-h:提供 OceanBase 数据库连接 IP,使用 systemd 启动的 OceanBase 数据库默认 IP 为
127.0.0.1。-u:提供 OceanBase 数据库的连接账户,格式:
用户名@租户名。MySQL 租户的管理员用户名默认是root。-P:提供 OceanBase 数据库连接端口,为
/etc/oceanbase.cnf中mysqlPort的值。-p:提供 OceanBase 数据库连接密码,为
/etc/oceanbase.cnf中rootPwd的值。建议不在连接命令中提供,改为在执行命令后的提示符下输入,密码文本不可见。-A:表示在 OBClient 连接数据库时不自动获取统计信息。
oceanbase:访问的数据库的名称,可以更改为业务数据库名。
管理 OceanBase 数据库
目前仅支持通过 systemd 对 OceanBase 数据库进行启动(start)、停止(stop)以及查看状态(status)操作。
查看 OceanBase 数据库状态
可执行如下命令查看 OceanBase 数据库状态。
[admin@test001 ~]$ sudo systemctl status oceanbase
查看 OceanBase 数据库状态有如下几种情况:
Active展示为active (running),且Status展示为Service is running时,表示 OceanBase 数据库正在启动中。Active展示为active (running),且Status展示为Service is ready时,表示已成功启动 OceanBase 数据库。Active展示为inactive (dead),表示服务已经停止,即 OceanBase 数据库已停止。Active展示为failed,表示服务发生了错误,需查看日志进行排查。
查看 OceanBase 数据库的详细日志
当 OceanBase 数据库状态出现异常时,您可执行如下命令查看 OceanBase 数据库的详细信息。
[admin@test001 ~]$ sudo journalctl -u oceanbase
Systemd 实际上是通过发送请求与 OceanBase 数据库的管控工具 obshell 进行通信,从而来实际控制 OBServer 节点的状态。在日志中,可以看到很多 trace id,可以通过 obshell 的接口和 trace id 结合排错,命令如下:
[admin@test001 ~]$ curl -X GET http://<ip>:<obshell_port>/api/v1/task/dag/<trace id> | jq
如果报错是在 observer start 和 bootstrap 阶段报错,还需要查看 OBServer 节点日志,默认目录为 /home/admin/oceanbase/log。
常见问题
ERROR: current user(uid=0) that starts observer is not the same with the original one(uid=500)
此报错的常见原因是 OceanBase 数据库安装目录(默认是
/home/admin/oceanbase)下etc目录的所属权与当前用户不一致,可执行如下命令解决:chown root /home/admin/oceanbase/etcerrcode=-4290, file="ob_server_log_block_mgr.cpp", line_no=1127, info="::fallocate failed"
此报错的常见原因是 OceanBase 数据库的数据盘目录(默认为
/var/lib/oceanbase/)的磁盘空间不足,可以调大数据目录的磁盘空间。
清除 OceanBase 数据库
您可参照如下步骤清除通过 systemd 启动的 OceanBase 数据库。
停止 OceanBase 数据库
[admin@test001 ~]$ sudo systemctl stop oceanbase卸载 OceanBase 数据库
删除 OceanBase 数据库软件包
在线安装方式下,您可执行如下命令:
[admin@test001 ~]$ sudo yum erase packagepackage需替换为待删除的软件包名,您可通过yum list | grep oceanbase命令查看软件包名。离线安装方式下,您可执行如下命令:
[admin@test001 ~]$ sudo rpm -e packagepackage需替换为待删除的软件包名,您可通过rpm -qa | grep oceanbase命令查看软件包名。(可选)删除 OceanBase 数据库数据
执行第一步后,您环境中的 OceanBase 数据库已被卸载,但是 OceanBase 数据库的数据还存在。若您之后重新部署 OceanBase 数据库,还可以查看和操作该 OceanBase 数据库的数据。
执行本步骤删除 OceanBase 数据库数据后,您部署的 OceanBase 数据库将完全被卸载。
删除 OceanBase 数据库安装目录
[admin@test001 ~]$ sudo rm -rf /home/admin/oceanbase删除 OceanBase 数据库数据目录
[admin@test001 ~]$ sudo rm -rf /var/lib/oceanbase
相关文档
您可登录集群执行
ALTER USER命令修改用户密码,命令详细介绍请参见 ALTER USER。部署 OceanBase 数据库后,更多连接 OceanBase 数据库的详细介绍可参见 连接 OceanBase 数据库。