Apache Cloudberry 常用 CLI 命令与工具详解
详解 Apache Cloudberry 2.1.0 常用命令行工具,覆盖 psql、gpstart/gpstop/gpstate、gpconfig、gpinitsystem、gprecoverseg 的真实用法与回显。
Apache Cloudberry 常用 CLI 命令与工具详解
目标:把 Apache Cloudberry 2.1.0 日常运维最常用的命令行工具讲清楚——
psql/createdb怎么连库建库、gpstart/gpstop怎么启停、gpstate怎么看状态、gpconfig怎么管参数、gpinitsystem/gprecoverseg/gpinitstandby怎么初始化与恢复。每条命令都配有实测--help回显与操作结果。本文回显取自 Apache Cloudberry 2.1.0-incubating(PostgreSQL 14.4 内核)单机集群实测。
一、环境信息
| 项目 | 实测值 / 说明 |
|---|---|
| 数据库版本 | Apache Cloudberry 2.1.0-incubating,内核 PostgreSQL 14.4 |
| 客户端版本 | psql (Apache Cloudberry) 14.4、createdb (Apache Cloudberry) 14.4 |
| 集群规模 | 1 Coordinator(5432)+ 2 Primary(6000/6001)+ 2 Mirror(7000/7001) |
| 工具目录 | /usr/local/cloudberry-db/bin(共 81 个可执行文件) |
| 环境文件 | /usr/local/cloudberry-db/cloudberry-env.sh |
| 环境变量 | GPHOME=/usr/local/cloudberry-db、COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1 |
| 运行用户 | gpadmin |
说明:Cloudberry 的工具分两类——一类是 PostgreSQL 原生客户端(
psql、createdb、pg_dump等,语义与 PG 一致),一类是gp前缀的 MPP 管理工具(gpstart、gpstop、gpstate、gpconfig、gpinitsystem等),后者负责整个集群而非单实例。
二、工具概览
实测 /usr/local/cloudberry-db/bin 下的管理类工具如下(节选):
createdb gpactivatestandby gpaddmirrors gpcheckcat gpcheckperf gpconfig \
gpdeletesystem gpdemo gpexpand gpfdist gpinitstandby gpinitsystem gpload \
gplogfilter gpmemreport gpmovemirrors gppkg gprecoverseg gpshrink \
gpssh gpssh-exkeys gpstart gpstate gpstop gpsync psql pg_dump pg_dumpall
下表按用途归类最常用的工具。
| 工具 | 用途 | 作用对象 |
|---|---|---|
psql | 交互式 SQL 客户端 | 单连接 |
createdb | 创建数据库 | Coordinator |
gpstart | 启动整个集群 | 全集群 |
gpstop | 停止/重启/重载集群 | 全集群 |
gpstate | 查看集群与 Segment 状态 | 全集群 |
gpconfig | 统一查看/修改集群参数 | 全集群 |
gpinitsystem | 初始化集群 | 全集群 |
gpinitstandby | 初始化备 Coordinator | Coordinator + 备节点 |
gprecoverseg | 恢复失效的 Primary/Mirror | 指定 Segment |
gpcheckperf | 硬件/网络性能校验 | 各节点 |
gpssh | 批量在各节点执行命令 | 各节点 |
gpfdist | 外部表并行加载服务 | 加载节点 |
解读:gpinitsystem/gpstart/gpstop/gpstate/gpconfig 是「初始化 + 启停 + 查状态 + 管参数」的运维四件套;gprecoverseg/gpinitstandby 用于高可用;gpcheckperf/gpssh 用于部署前校验。
三、前置条件
使用任何 gp* 工具前,都必须以 gpadmin 登录并 source 环境文件。
sudo -iu gpadmin
source /usr/local/cloudberry-db/cloudberry-env.sh
export COORDINATOR_DATA_DIRECTORY=/data/coordinator/gpseg-1
echo "$GPHOME"
which gpstart gpstate gpconfig
实测回显:
/usr/local/cloudberry-db
/usr/local/cloudberry-db/bin/gpstart
/usr/local/cloudberry-db/bin/gpstate
/usr/local/cloudberry-db/bin/gpconfig
解读:source cloudberry-env.sh 把 bin/ 加入 PATH 并设置 GPHOME;COORDINATOR_DATA_DIRECTORY 让工具自动定位 Coordinator 实例,省去 -d 参数。
四、各工具详解
本节逐个工具给出真实 --help 回显与典型用法。
4.1 psql:交互式 SQL 客户端
psql 是连接 Coordinator 执行 SQL 的标准客户端。查看版本与帮助:
psql --version
psql -d postgres -c "SELECT current_user, version();"
实测回显:
psql (Apache Cloudberry) 14.4
current_user | version
--------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
gpadmin | PostgreSQL 14.4 (Apache Cloudberry 2.1.0-incubating build bdf90c5518f) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.4.0-1ubuntu1~22.04.2) 11.4.0, 64-bit compiled on Apr 27 2026 11:21:44
(1 row)
解读:连接 Coordinator 后执行任何 SQL;-c 直接执行一条语句并返回,-d 指定数据库。远程连接用 psql -h <CoordinatorIP> -p 5432 -U gpadmin -d postgres。
💡 技术拓展:Cloudberry 的 SQL 客户端选择——
客户端 形态 特点 适用场景 psql(本文)命令行 轻量、脚本化、随包自带 运维/自动化/排障 DBeaver 图形化 跨库、可视化建模 数据分析、日常查询 JDBC/ODBC 驱动 编程接口 应用集成(PG 协议兼容) 应用开发 Cloudberry 兼容 PostgreSQL 协议,凡支持 PG 的客户端/驱动都可用;本文用官方自带
psql。
4.2 createdb:创建数据库
createdb --version
createdb cbdbtest
psql -d postgres -c "\l cbdbtest"
实测回显:
createdb (Apache Cloudberry) 14.4
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+---------+----------+-------------+-------------+-------------------
cbdbtest | gpadmin | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(1 row)
解读:createdb <dbname> 在 Coordinator 上创建数据库;\l <dbname> 查看其编码与属主。数据库本身不跨 Segment 分布,但其中的表会按分布键分布到各 Segment。
4.3 gpstart:启动集群
gpstart 一次拉起 Coordinator 与所有 Segment。查看帮助:
gpstart --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gpstart
Starts a Apache Cloudberry system.
SYNOPSIS
gpstart [-d <coordinator_data_directory>] [-B <parallel_processes>]
[-R] [-m | -c] [-y] [-a] [-t <timeout_seconds>]
[-l logfile_directory] [--skip-heap-checksum-validation]
[-v | -q]
gpstart -? | -h | --help
gpstart --version
逐项解读:-a 不询问直接启动;-B <n> 并行启动进程数;-t <秒> 超时;-m/-c 仅启动 Mirror/仅启动 Coordinator;-R 重试启动失败实例。典型用法:
gpstart -a
实测回显(输出节选(实测首尾)):
20261013:18:41:51:010822 gpstart:cdw:gpadmin-[INFO]:- Successful segment starts = 4
20261013:18:41:51:010822 gpstart:cdw:gpadmin-[INFO]:- Failed segment starts = 0
20261013:18:41:51:010822 gpstart:cdw:gpadmin-[INFO]:-Successfully started 4 of 4 segment instances
20261013:18:41:51:010822 gpstart:cdw:gpadmin-[INFO]:-Database successfully started
解读:Successfully started 4 of 4 segment instances 表示 2 Primary + 2 Mirror 全部启动。
4.4 gpstop:停止/重启/重载集群
gpstop --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gpstop
Stops or restarts a Apache Cloudberry system.
SYNOPSIS
gpstop [-d <coordinator_data_directory>] [-B <parallel_processes>]
[-M smart | fast | immediate] [-t <timeout_seconds>]
[-r] [-y] [-a] [-l <logfile_directory>] [-v | -q]
gpstop -u [-d <coordinator_data_directory>] [-l <logfile_directory>]
逐项解读:-M smart|fast|immediate 停机模式;-r 停止后立即重启;-u 仅重载配置不停止;-a 不询问;--host <段主机> 只停某台主机的实例。典型用法:
gpstop -a # 停止整个集群
gpstop -u # 重载 postgresql.conf 配置
gpstop -a -r # 停止并立即重启
实测回显(gpstop -a 关键行):
20261013:18:41:50:010044 gpstop:cdw:gpadmin-[INFO]:- Segments stopped successfully = 4
20261013:18:41:50:010044 gpstop:cdw:gpadmin-[INFO]:- Segments with errors during stop = 0
20261013:18:41:50:010044 gpstop:cdw:gpadmin-[INFO]:-Successfully shutdown 4 of 4 segment instances
20261013:18:41:50:010044 gpstop:cdw:gpadmin-[INFO]:-Database successfully shutdown with no errors reported
解读:Successfully shutdown 4 of 4 segment instances 表示全部实例已停。
4.5 gpstate:查看集群状态
gpstate --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gpstate
Shows the status of a running Apache Cloudberry system.
SYNOPSIS
gpstate [-d <coordinator_data_directory>] [-B <parallel_processes>]
[-s | -b | -Q | -e] [-m | -c] [-p] [-i] [-f]
[-v | -q] [-l <log_directory>]
逐项解读:-b 简要状态;-s 详细状态;-e 查看有问题的 Segment;-Q 队列状态;-f 显示 standby 状态;-i/-p 分别显示该段 IP/端口映射。常用组合:
gpstate -b
实测回显(输出节选(实测首尾)):
20261013:18:42:43:011247 gpstate:cdw:gpadmin-[INFO]:-Cloudberry instance status summary
20261013:18:42:43:011247 gpstate:cdw:gpadmin-[INFO]:- Coordinator instance = Active
20261013:18:42:43:011247 gpstate:cdw:gpadmin-[INFO]:- Coordinator standby = No coordinator standby configured
20261013:18:42:43:011247 gpstate:cdw:gpadmin-[INFO]:- Total segment instance count from metadata = 4
gpstate -e
实测回显:
20261013:18:52:24:011726 gpstate:cdw:gpadmin-[INFO]:-Segment Mirroring Status Report
20261013:18:52:24:011726 gpstate:cdw:gpadmin-[INFO]:-All segments are running normally
解读:-b 给出「Coordinator Active + Segment 计数」概览;-e 用于排查 Mirror 问题,输出 All segments are running normally 表示无异常。
4.6 gpconfig:统一管理集群参数
gpconfig --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gpconfig
Sets server configuration parameters on all segments within
a Apache Cloudberry system.
SYNOPSIS
gpconfig -c <param_name> -v <value>
[-m <coordinator_value> | --masteronly | --coordinatoronly]
| -r <param_name> [--masteronly | --coordinatoronly]
| -l
逐项解读:-c <参数> -v <值> 修改;-m <值> 单独指定 Coordinator 值;-r <参数> 恢复默认;-l 列出所有参数及取值;-s <参数> 查看值。典型用法:
gpconfig -s max_connections
gpconfig -c gp_vmem_protect_limit -v 4096
实测回显(gpconfig -s max_connections):
Values on all segments are consistent
GUC : max_connections
Coordinator value: 250
Segment value: 750
解读:-s 同时打印 Coordinator 与 Segment 取值;修改后需 gpstop -u 重载或 gpstop -a && gpstart -a 重启生效。
4.7 gpinitsystem:初始化集群
gpinitsystem --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gpinitsystem
Initializes a Apache Cloudberry system by using configuration
parameters specified in a configuration file (gp_init_config).
SYNOPSIS
gpinitsystem -c <gpinitsystem_config>
[-h <hostfile_gpinitsystem>]
[-B <parallel_processes>]
[-p <postgresql_conf_param_file>]
逐项解读:-c 指定初始化配置文件;-h 指定主机文件(若配置里未写 MACHINE_LIST_FILE);-B 并行进程数;-p 追加的参数文件。首次初始化:
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -a
实测回显(输出节选(实测首尾)):
20261013:18:41:05:004994 gpinitsystem:cdw:gpadmin-[INFO]:-Successfully started 2 of 2 segment instances
20261013:18:41:12:004994 gpinitsystem:cdw:gpadmin-[WARN]:-Failed to start Cloudberry instance; please review gpinitsystem log to determine failure.
20261013:18:41:12:004994 gpinitsystem:cdw:gpadmin-[INFO]:-Apache Cloudberry instance successfully created
解读:-a 免交互确认;出现 Apache Cloudberry instance successfully created 即初始化成功;末尾 WARN 为 Mirror 注册告警,用 gpstop -a && gpstart -a 修复(详见《Apache Cloudberry 配置参数详解》同类排障思路,或本文 4.4/4.3)。
4.8 gpinitstandby:初始化备 Coordinator
gpinitstandby --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gpinitstandby
Adds and/or initializes a standby coordinator host for a Apache Cloudberry system.
SYNOPSIS
gpinitstandby { -s <standby_hostname> [-P <port>] | -r | -n }
逐项解读:-s <主机名> 指定备 Coordinator 主机并初始化;-P <端口> 指定端口;-r 移除已配置的 standby;-n 不启动。典型用法(需已配置到备节点的免密 SSH):
gpinitstandby -s scdw
解读:单机集群实测未配置 standby,gpstate -b 显示 No coordinator standby configured;生产环境建议配置备 Coordinator 以避免单点。
4.9 gprecoverseg:恢复失效的 Segment
gprecoverseg --help
实测回显(输出节选(实测首尾)):
COMMAND NAME: gprecoverseg
Recovers a primary or mirror segment instance that has
been marked as down (if mirroring is enabled).
Synopsis
gprecoverseg [-p <new_recover_host>[,...]]
|-i <recover_config_file>
逐项解读:-p <主机> 指定新主机;-i <文件> 指定恢复配置文件;-a 免交互;-F 全量恢复;-s 分步模式。典型用法(某 Segment 被标记 down 后):
gprecoverseg -a # 增量恢复所有 down 的 Segment
解读:恢复完成后可用 gpstate -e 确认 All segments are running normally。
4.10 数据分布与执行计划查看
除上述管理工具,日常最常做的两件事是「看数据落在哪个 Segment」和「看并行执行计划」。
psql -d cbdbtest <<'SQL'
CREATE TABLE t_user (user_id int, user_name text, login_count int) DISTRIBUTED BY (user_id);
INSERT INTO t_user VALUES (1, 'alice', 10), (2, 'bob', 5), (3, 'carol', 7);
SELECT gp_segment_id, count(*) AS cnt FROM t_user GROUP BY gp_segment_id ORDER BY gp_segment_id;
EXPLAIN SELECT count(*) FROM t_user;
SQL
实测回显:
CREATE TABLE
INSERT 0 3
gp_segment_id | cnt
---------------+-----
0 | 2
1 | 1
(2 rows)
QUERY PLAN
------------------------------------------------------------------------------------
Aggregate (cost=0.00..431.00 rows=1 width=8)
-> Gather Motion 2:1 (slice1; segments: 2) (cost=0.00..431.00 rows=1 width=1)
-> Seq Scan on t_user (cost=0.00..431.00 rows=1 width=1)
Optimizer: GPORCA
(4 rows)
解读:SELECT gp_segment_id, count(*) 显示数据按 hash 分布到 content=0(2 行)与 content=1(1 行);EXPLAIN 中的 Gather Motion 2:1 (segments: 2) 表示 Coordinator 从 2 个 Segment 汇聚结果,证明并行执行生效,Optimizer: GPORCA 表示使用 GPORCA 优化器。
五、注意事项
- 以 gpadmin 操作:所有
gp*工具应以gpadmin执行,并用绝对路径或先 source 环境文件,避免PATH缺失导致command not found。 - 免密 SSH 是前提:
gpstart/gpstop/gpstate/gpinitsystem通过 SSH 在各主机下发命令,必须先配好gpadmin免密 SSH(gpssh-exkeys)。 - 重启 vs 重载:
gpstop -u只重载可动态生效的参数;涉及shared_buffers/max_connections等需重启的参数必须gpstop -a && gpstart -a。 - 高危操作:
gpdeletesystem(删除集群)、gprecoverseg -F(全量恢复)会重写数据目录,生产执行前务必备份。
六、常见问题
Q1:执行 gpstart 报 Coordinator instance process running,如何正确重启?
现象:集群已在运行时执行 gpstart -a 报错退出。定位:gpstart 只负责启动,检测到 Coordinator 进程存在即拒绝。解法:先停后启:
gpstop -a && gpstart -a
实测回显(gpstart 关键行):
20261013:18:41:51:010822 gpstart:cdw:gpadmin-[INFO]:-Successfully started 4 of 4 segment instances
Q2:gpstate -b 显示 No coordinator standby configured,是否异常?
现象:gpstate -b 输出 Coordinator standby = No coordinator standby configured。定位:单机/未配置备节点时属正常,非故障。解法:生产环境配置备 Coordinator 提升可用性:
gpinitstandby -s scdw
Q3:gprecoverseg 恢复后仍显示 Segment down,怎么确认?
现象:执行 gprecoverseg -a 后不确定是否生效。定位:用 gpstate -e 复核 Mirror 状态。解法:
gpstate -e
实测回显:
20261013:18:52:24:011726 gpstate:cdw:gpadmin-[INFO]:-All segments are running normally
解读:输出 All segments are running normally 即恢复成功;否则查 gpstate -s 与 FTS 日志。
七、参考链接
- Apache Cloudberry 官网:https://cloudberry.apache.org/
- Apache Cloudberry 系统工具参考:https://cloudberry.apache.org/docs/next/sys-utilities/
- Apache Cloudberry 文档(gpstart):https://cloudberry.apache.org/docs/next/sys-utilities/gpstart
- Apache Cloudberry 文档(gpstate):https://cloudberry.apache.org/docs/next/sys-utilities/gpstate
- Apache Cloudberry 文档(gpinitsystem):https://cloudberry.apache.org/docs/next/sys-utilities/gpinitsystem