运维管理15 分钟阅读
GBase 8a MPP Cluster 运维命令 100 条
GBase 8a MPP Cluster 是面向分析型场景的分布式数据库。它的运维对象不仅包括数据库和 SQL,还包括 Coordinator、gnode、gcware、数据分片、副本、DML/DDL Event、数据装载任务和重分布任务。
2026年8月2日阅读—点赞—收藏—
dba100gbase墨力计划
在知识库中专注阅读,并随时返回相关工具与课程
GBase 8a MPP Cluster 是面向分析型场景的分布式数据库。它的运维对象不仅包括数据库和 SQL,还包括 Coordinator、gnode、gcware、数据分片、副本、DML/DDL Event、数据装载任务和重分布任务。
GBase 8a MPP Cluster 是面向分析型场景的分布式数据库。它的运维对象不仅包括数据库和 SQL,还包括 Coordinator、gnode、gcware、数据分片、副本、DML/DDL Event、数据装载任务和重分布任务。
如果只按照普通 MySQL 的思路检查 SHOW PROCESSLIST,往往只能看到当前调度节点的信息,无法覆盖所有 Coordinator 和 gnode。真正的集群巡检还需要结合 gcadmin、gcmonit、gcluster_services 以及 information_schema 中的集群视图。
下面整理了 GBase 8a MPP Cluster DBA 常用的 100 条命令,覆盖 gccli 连接、集群服务、节点状态、分片、数据库对象、会话任务、空间、数据装载、用户权限、恢复模式、日志和操作系统巡检等场景。
本文以 GBase 8a MPP Cluster V9 系列常见用法为主。V8、V9 以及不同 V9 小版本在服务命令、工具参数、系统表字段和多 VC 管理方面可能存在差异,执行前应先确认现场版本。文中的 IP、用户、数据库、表名、目录和 Distribution ID 均为示例。
集群启停、恢复模式切换、分片调整、数据重分布、终止任务、删除对象和覆盖加载等操作风险较高,必须按照现场版本的官方管理员手册执行。
1gccli -h 192.168.1.10 -P 5258 -u dba -p交互输入密码可以避免密码直接出现在 Shell 历史记录中。
1gccli \2 -h 192.168.1.10,192.168.1.11,192.168.1.12 \3 -P 5258 -u dba -p指定多个 IP 后,gccli 可以依次尝试连接,提高客户端连接可用性。
1gccli -h 192.168.1.10 -u dba -p \2 -e "SELECT VERSION();"1gccli -h 192.168.1.10 -u dba -p \2 -D appdb < appdb_init.sql1SELECT VERSION();1SELECT DATABASE();1SELECT2 USER(),3 CURRENT_USER();1SHOW DATABASES;1USE appdb;1SELECT2 NOW(),3 CURRENT_TIMESTAMP;1gcluster_services all info这是 V9 环境常用的节点服务检查入口。
1gcluster_services all start1gcluster_services all stop停服务前应确认节点角色、业务连接和集群整体状态。
1gcluster_services all restart1gcmonit --status1ps -ef | grep '[g]clusterd'1ps -ef | grep '[g]based'1ps -ef | grep '[g]cware'V8 环境中相关进程可能是 corosync。
1ps -ef | grep '[g]c_sync_server'1ss -lntp | grep -E 'gclusterd|gbased|gcware'具体端口应以安装配置为准。
1gcadmin --help1gcadmin --version1gcadmin重点确认节点状态、集群模式、分片和副本是否正常。
1gcadmin showcluster c1gcadmin showcluster d1gcadmin showdmlevent 50用于检查数据操作过程中记录的一致性和执行异常。
1gcadmin showddlevent 501gcadmin showdmlstorageevent 501gcadmin showfailover1gcadmin showlock1CREATE DATABASE appdb;1SHOW TABLES FROM appdb;1SHOW TABLES FROM appdb LIKE '%order%';1DESC appdb.orders;1SHOW CREATE TABLE appdb.orders;1CREATE TABLE appdb.orders2(3 order_id BIGINT NOT NULL,4 customer_id BIGINT NOT NULL,5 order_date DATE,6 amount DECIMAL(18,2)7)8DISTRIBUTED BY ('customer_id');分布键应选择数据较均匀、关联和过滤经常使用的字段。
1CREATE TABLE appdb.region_dict2(3 region_id INT,4 region_name VARCHAR(100)5)6REPLICATED;复制表适合数据量较小、更新不频繁并且经常参与关联的维表。
1SELECT2 dbName,3 tbName,4 isReplicate,5 hash_column6FROM gbase.table_distribution7WHERE dbName = 'appdb'8 AND tbName = 'orders';1SELECT *2FROM information_schema.cluster_tables3WHERE table_schema = 'appdb'4 AND table_name = 'orders';1SELECT *2FROM information_schema.cluster_table_segments3WHERE table_schema = 'appdb'4 AND table_name = 'orders';可以用它检查数据是否在各节点和分片间均匀分布。
1SHOW PROCESSLIST;1SHOW FULL PROCESSLIST;1SHOW DETAIL PROCESSLIST;1SELECT2 coordinator_name,3 id,4 user,5 host,6 command,7 start_time,8 time,9 state,10 SUBSTRING(info, 1, 200) AS info11FROM information_schema.coordinators_task_information12WHERE command = 'query'13ORDER BY time DESC14LIMIT 20;1SELECT2 node_name,3 id,4 user,5 host,6 command,7 start_time,8 time,9 state,10 SUBSTRING(info, 1, 200) AS info11FROM information_schema.gnodes_task_information12WHERE command = 'query'13 AND info IS NOT NULL14ORDER BY time DESC15LIMIT 20;1SELECT2 coordinator_name,3 id,4 user,5 host,6 time,7 state,8 info9FROM information_schema.coordinators_task_information10WHERE command = 'query'11 AND time >= 30012ORDER BY time DESC;1SELECT2 user,3 COUNT(*) AS tasks4FROM information_schema.coordinators_task_information5WHERE command = 'query'6GROUP BY user7ORDER BY tasks DESC;1KILL 12345;执行前应先确认任务 ID、用户、SQL 和业务影响。
1SELECT2 CONNECTION_ID(),3 USER(),4 DATABASE();1gccli -h 192.168.1.10 -u dba -p \2 -e "SHOW FULL PROCESSLIST;"1SHOW VARIABLES;1SHOW VARIABLES LIKE '%parallel%';1SHOW STATUS;1SHOW STATUS LIKE '%meminfo%';1SELECT2 table_schema,3 COUNT(*) AS table_count4FROM information_schema.tables5WHERE table_schema NOT IN (6 'information_schema',7 'gbase'8)9GROUP BY table_schema10ORDER BY table_count DESC;1SELECT2 table_schema,3 SUM(data_length) AS data_bytes,4 SUM(index_length) AS index_bytes5FROM information_schema.tables6WHERE table_schema NOT IN (7 'information_schema',8 'gbase'9)10GROUP BY table_schema11ORDER BY data_bytes DESC;不同版本对相关字段的统计口径可能不同,应结合集群分片视图核对。
1SELECT2 table_schema,3 table_name,4 table_rows,5 data_length,6 index_length7FROM information_schema.tables8WHERE table_schema = 'appdb'9ORDER BY data_length DESC10LIMIT 20;1SELECT2 column_name,3 column_type,4 is_nullable,5 column_default6FROM information_schema.columns7WHERE table_schema = 'appdb'8 AND table_name = 'orders'9ORDER BY ordinal_position;1gcadmin showdistribution1gcadmin showdistribution node1LOAD DATA INFILE2'ftp://loader:password@192.168.1.100//data/orders.csv'3INTO TABLE appdb.orders4FIELDS TERMINATED BY ','5ENCLOSED BY '"'6NULL_VALUE '\N';生产环境不应在脚本和文章中保留真实密码。
1LOAD DATA INFILE2'ftp://loader:password@192.168.1.100//data/orders.csv'3INTO TABLE appdb.orders4FIELDS TERMINATED BY ','5ENCLOSED BY '"'6NULL_VALUE '\N'7DATETIME FORMAT '%Y-%m-%d %H:%i:%s';1LOAD DATA INFILE2'ftp://loader:password@192.168.1.100//data/events.csv'3INTO TABLE appdb.events4FIELDS TERMINATED BY ','5NULL_VALUE '\N'6DATETIME FORMAT '%Y-%m-%d %H:%i:%s.%f';1SELECT2 db_name,3 tb_name,4 ip,5 state,6 start_time,7 progress,8 total_size,9 loaded_size,10 loaded_records,11 skipped_records12FROM information_schema.load_status13ORDER BY db_name, tb_name;1SELECT2 task_id,3 db_name,4 tb_name,5 user,6 host_ip,7 start_time,8 end_time,9 elapsed_time,10 total_size,11 loaded_records,12 skipped_records13FROM information_schema.load_result14WHERE start_time >= '2026-07-27'15ORDER BY start_time DESC;1SELECT2 task_id,3 db_name,4 tb_name,5 loaded_records,6 skipped_records7FROM information_schema.load_result8WHERE skipped_records > 09ORDER BY start_time DESC;1rmt:SELECT *2FROM appdb.orders3WHERE order_date >= '2026-07-01'4INTO OUTFILE '/data/export/orders.csv'5FIELDS TERMINATED BY ','6ENCLOSED BY '"'7NULL_VALUE '\N';文件路径属于执行节点,执行前应检查目录权限和磁盘空间。
1gccli -h 192.168.1.10 -u report_user -p \2 -D appdb \3 -e "SELECT * FROM orders LIMIT 1000" \4 > orders.txt1gccli -h 192.168.1.10 -u loader -p \2 -D appdb < load_orders.sql \3 > load_orders.log 2>&11grep -niE 'error|failed|exception' load_orders.log1SELECT2 user,3 host4FROM gbase.user5ORDER BY user, host;系统权限表结构可能随版本变化,查询前可先 DESC gbase.user。
1CREATE USER 'appuser'@'%'2IDENTIFIED BY 'Replace_With_Strong_Password';1SET PASSWORD FOR 'appuser'@'%'2= PASSWORD('Replace_With_New_Strong_Password');具体密码语法应以当前版本的安全策略和官方手册为准。
1SHOW GRANTS FOR 'appuser'@'%';1GRANT SELECT ON appdb.*2TO 'report_user'@'%';1GRANT SELECT, INSERT, UPDATE, DELETE2ON appdb.*3TO 'appuser'@'%';1REVOKE INSERT, UPDATE, DELETE2ON appdb.*3FROM 'appuser'@'%';1DROP USER 'appuser'@'%';1SHOW PROCEDURE STATUS2WHERE Db = 'appdb';1SHOW FUNCTION STATUS2WHERE Db = 'appdb';1gcadmin getdistribution 1 distribution_1.xml1 为示例 Distribution ID,应先通过 showdistribution 确认。
1gcadmin rebalance --help不同版本的重分布参数差异较大,必须先查看当前安装版本帮助。
1gcadmin --help | grep -i rebalanceGBase 8a 不同小版本的重分布参数和状态查询方式存在差异,应先确认当前安装版本实际提供的子命令,再按对应版本管理员手册执行。
1gcadmin showvc多 VC 功能和子命令只适用于支持相应能力的版本。
1gcadmin输出中应重点确认集群处于 NORMAL、RECOVERY 或其他维护状态。
1gcadmin switchmode recovery该命令只应在官方恢复流程要求时执行,并且通常只在一个部署 gcware 的节点上执行一次。
1gcadmin switchmode normal切换前必须确认恢复任务、节点状态和数据一致性已经满足要求。
1INITNODEDATAMAP;该命令用于安装初始化阶段,不是日常巡检命令,已有生产集群不要重复执行。
1gcadmin showdmlevent发现 Event 后,应结合表、节点、时间和同步服务日志判断是否需要恢复处理。
1gcadmin showddlevent1tail -200 "$GCLUSTER_BASE/log/gcluster/system.log"实际安装目录应根据现场环境替换。
1tail -200 "$GCLUSTER_BASE/log/gcluster/express.log"1tail -200 "$GCLUSTER_BASE/log/gcluster/gclusterd.log"1tail -200 "$GCLUSTER_BASE/log/gcluster/gclusterd-audit.log"1tail -200 "$GNODE_BASE/log/gbase/express.log"1tail -200 "$GNODE_BASE/log/gbase/syncserver.log"1grep -RniE 'error|fatal|failed|exception' \2 "$GCLUSTER_BASE/log" "$GNODE_BASE/log" | tail -2001uptime2free -m3top1df -h2df -i3iostat -x 1 5应重点检查 Coordinator、gnode 数据目录、日志目录和装载文件目录。
1gcadmin2gcadmin showcluster c3gcadmin showcluster d4gcadmin showdistribution node5gcadmin showdmlevent 206gcadmin showddlevent 207gcadmin showdmlstorageevent 208gcadmin showfailover9gcadmin showlock这些命令可以快速检查节点、分片、一致性事件、倒换记录和集群锁,但正式巡检还要结合会话任务、表空间、数据倾斜、装载任务、日志和操作系统资源综合判断。
GBase 8a 的日常运维不能只停留在 SQL 层。SHOW PROCESSLIST 只能提供局部信息,完整排查需要同时查看 Coordinator、gnode、分片、副本和一致性 Event。
出现 SQL 卡顿时,应先判断任务卡在 Coordinator 还是 gnode;出现空间问题时,要检查各分片段是否均匀;出现数据一致性告警时,要结合 showdmlevent、showddlevent、同步服务和恢复日志定位。对于重分布、恢复模式和节点变更,应严格按照当前版本管理员手册执行。