OceanBase 常用 CLI 命令与工具详解
OceanBase CE 常用 CLI 命令与工具详解:obclient 连接 sys/业务租户、OBD 集群管理(list/start/status/display/scale_out)、observer 进程运维、sys 租户管理 SQL,附真实回显。
OceanBase 常用 CLI 命令与工具详解
目标:详解 OceanBase CE 的命令行工具与运维入口,覆盖
obclient(MySQL 协议客户端,连接 sys 租户与业务租户)、OBD(obd cluster list/start/status/display/stop/scale_out等集群管理)、observer进程运维(启动/停止/日志)、以及 sys 租户下的管理 SQL(SHOW PARAMETERS、ALTER SYSTEM、租户/资源管理)。回显采自真实部署(OB CE 5.0.1.0,OBD 4.6.0,obclient 2.2.14)。
一、工具总览
| 工具 | 作用 | 连接/使用方式 |
|---|---|---|
obclient | MySQL 兼容 CLI 客户端 | obclient -h<ip> -P2881 -u"user@tenant#cluster" -p |
OBD(obd) | 部署/启停/扩容/日志运维工具 | obd cluster <cmd> <cluster> |
observer | 数据库服务进程(bin) | 命令行 -z/-p/-P/-d 启动,直接由 OBD 托管 |
obshell | observer 附属运维工具 | 手动起步时使用 |
obproxy | 访问代理(可选组件) | MySQL 协议,默认 2883 |
版本实测:
$ obd --version
OceanBase Deploy: 4.6.0
REVISION: fdae0807c058820e32de5b61f449268d34ea9f5a
$ obclient --version
/u01/obclient/bin/obclient Ver 2.2.14 Distrib 10.4.18-MariaDB, for Linux (x86_64)
二、obclient 用法
2.1 连接 sys 租户
sys 租户的登录账号为 root@sys(面向集群全局管理):
obclient -h127.0.0.1 -P2881 -uroot@sys -A -c
-A 关闭缓存提示、-c 允许 SQL 注释。连接后执行版本验证(实测回显):
mysql> select version();
+--------------------+
| version() |
+--------------------+
| 5.7.25-OceanBase_CE-v5.0.1.0 |
+--------------------+
2.2 连接业务租户
业务租户登录形式为 user@tenant#cluster:
obclient -h172.16.10.11 -P2881 -uapp_user@app_tenant#obprod -p
租户内建库建表:
mysql> create database testdb;
mysql> use testdb;
mysql> create table t_user (id int primary key, name varchar(50));
mysql> insert into t_user values (1,'alice'),(2,'bob');
mysql> select * from t_user;
+----+-------+
| id | name |
+----+-------+
| 1 | alice |
| 2 | bob |
+----+-------+
2.3 非交互执行(脚本/自动化)
obclient -h127.0.0.1 -P2881 -uroot@sys -e "show databases;"
obclient -h127.0.0.1 -P2881 -uroot@sys -e "show parameters like 'memory_limit';"
exec 连续执行多条时用分号分隔,即可用于巡检脚本(配合 --skip-column-names)。
三、OBD 集群管理命令
clusters 相关全集(obd cluster --help 实测命令清单):autodeploy、check4ocp、chst、component、deploy、destroy、display、edit-config、export-to-ocp、init4env、list、prune-config、redeploy、reinstall、reload、restart、scale_in、scale_out、start、stop、takeover、tenant、upgrade。
3.1 集群列表与状态
obd cluster list
实测回显:
+----------------------------------------------------+
| Cluster List |
+-------+--------------------------+-----------------+
| Name | Configuration Path | Status (Cached) |
+-------+--------------------------+-----------------+
| obtest| /root/.obd/cluster/obtest| running |
+-------+--------------------------+-----------------+
Trace ID: 6b7068f4-c216-11f1-b35b-4626a1345c00
查看详细状态(节点、zone、版本、端口、状态):
obd cluster display obtest
obd cluster status obtest # status 别名,查看进程级健康
display 输出每节点:host、Status: active、zone、版本 5.0.1.0、mysql/rpc 端口、数据目录。
3.2 启停与生命周期
obd cluster start obtest
obd cluster stop obtest
obd cluster restart obtest # 含 stop + start
obd cluster reload obtest # 仅更新配置不重启进程(动态参数)
obd cluster destroy obtest # 销毁并清数据(谨慎)
start 内含完整 bootstrap:会依次拉起每节点 observer 并做健康检查直到 active。
3.3 配置与运维
obd cluster edit-config obtest # 交互式编辑部署 yaml
obd cluster list # 全部集群
obd cluster scale_out obprod -c ob-scale-out.yaml # 扩容
obd cluster scale_in obprod -n obs4 # 缩容
obd component list obs4 --version # 组件版本
obd cluster tenant create ... # 租户管理
日志排查:obd display-trace <trace-id>(在命令末尾的 Trace ID),obd cluster log 查看集群日志。
3.4 初始部署命令速览
obd cluster init4env # 初始化节点环境
obd cluster deploy obtest -c ob-mini-single.yaml # 部署
obd cluster start obtest
obd cluster display obtest
四、observer 进程运维
4.1 启动参数
./bin/observer -z zone1 -n obtest -c 1 -p 2881 -P 2882 -d /data/ob -i lo \
-o 'memory_limit=8G,system_memory=2G,datafile_size=8G,log_disk_size=10G,cpu_count=4,production_mode=false'
| 参数 | 含义 |
|---|---|
-z | 所属 zone |
-n | 集群名(cluster name) |
-c | 集群 ID(cluster_id) |
-p | MySQL 协议端口(默认 2881) |
-P | RPC 端口(默认 2882,observer 间通信) |
-d | 数据目录(含 store/clog/slog) |
-i | 网卡/设备名(如 lo、eth0) |
-o | 其他参数 k=v,... |
4.2 查看运行状态与日志
ps -ef | grep observer
ss -lnpt | grep 2881 # SQL 端口监听
tail -f /home/admin/oceanbase/log/observer.log # 主日志
tail -f /home/admin/oceanbase/log/rootservice.log # 根服务日志
tail -f /home/admin/oceanbase/log/election.log # 选主日志
启动日志标志性输出:
[2026-10-07 06:02:01] INFO [SERVER] inner_main: observer starts(observer_version="OceanBase_CE 5.0.1.0")
[2026-10-07 06:02:02] INFO [SERVER] init: [server_start 1/18] observer init begin.
... [server_start 18/18]
4.3 停止
# 推荐通过 OBD 停止(有健康检查与状态管理)
obd cluster stop obtest
# 手动 kill(配合 cat run/observer.pid)
kill -9 $(cat /home/admin/oceanbase/run/observer.pid)
五、sys 租户管理 SQL
连接 root@sys 后高频管理语句:
5.1 参数与配置
mysql> SHOW PARAMETERS LIKE 'memory_limit';
mysql> SHOW PARAMETERS LIKE '%tcp%';
mysql> SELECT name,value,scope,edit_level FROM oceanbase.__all_virtual_parameter_stat WHERE name='cpu_count';
mysql> ALTER SYSTEM SET enable_sql_audit = false;
5.2 节点与 zone
mysql> SELECT zone, svr_ip, svr_port, status FROM oceanbase.__all_server;
mysql> ALTER SYSTEM ADD ZONE 'zone1' REGION 'hz';
mysql> ALTER SYSTEM STOP SERVER '172.16.10.11:2882';
mysql> ALTER SYSTEM FORCE STOP SERVER '172.16.10.11:2882';
5.3 租户与资源
-- 资源单元(unit)与资源池(resource pool)
mysql> CREATE RESOURCE UNIT u1 MAX_CPU 4, MEMORY_SIZE '8G', MIN_CPU 4, MAX_DISK_SIZE '64G';
mysql> CREATE RESOURCE POOL pool1 UNIT 'u1', UNIT_NUM 1, ZONE_LIST ('zone1','zone2','zone3');
-- 租户
mysql> CREATE TENANT app_tenant RESOURCE_POOL_LIST=('pool1'), PRIMARY_ZONE='zone1', LOCALITY='F@zone1,F@zone2,F@zone3';
mysql> SHOW TENANT;
mysql> ALTER TENANT app_tenant LOCALITY='F@zone1,F@zone2,F@zone3,F@zone4';
mysql> DROP TENANT app_tenant FORCE;
5.4 数据合并与副本
mysql> ALTER SYSTEM MAJOR FREEZE TENANT='app_tenant'; -- 触发合并
mysql> ALTER SYSTEM SWITCH REPLICA ROLE PRIMARY ZONE='zone2'; -- 主副本切换
mysql> SELECT * FROM oceanbase.__all_ls_replica WHERE tenant_id=1002; -- 日志流副本
六、常规排障命令速查
| 目标 | 命令 |
|---|---|
| 集群状态 | obd cluster display <名> |
| 查参数 | SHOW PARAMETERS LIKE '%xxx%' |
| 版本 | select version(); / observer -V |
| 监听端口 | ss -lnpt | grep -E '2881|2882' |
| 主日志 | tail -f /home/admin/oceanbase/log/observer.log |
| 节点列表 | SELECT * FROM oceanbase.__all_server; |
| 系统表 | __all_sys_parameter、__all_server、__all_tenant |
附:工具安装
# 仅装 obclient
yum install -y obclient # 或 apt install -y obclient
# 仅装 OBD
yum install -y ob-deployer # 或 pip3 install ob-deployer