GBase 8a MPP Cluster V953 虚拟集群安装与配置指南
一、概述
GBase 8a 是一款面向分析型应用领域的列存储关系型数据库管理系统,具备高效的统计与分析能力,能够管理 TB 级至 PB 级数据。作为南大通用公司自主研发的分析型数据库产品,GBase 8a 以列为基本存储单位和运算对象,结合列数据压缩处理、并行处理、快速智能索引等新型数据处理技术,在查询、统计、分析以及批量加载性能上具备突出的优势。
1.1 产品特性
- 列式存储:按列存储数据,大幅提升分析查询性能
- 高压缩比:支持多种压缩算法,压缩比可达1:10以上
- 智能索引:基于列的智能索引技术,快速定位数据
- 并行处理:支持任务级、算子级并行处理
- 高可用性:支持数据多副本、节点故障自动切换
- 在线扩容:支持在线动态扩容,不影响业务运行
1.2 应用场景
- 数据仓库/数据集市
- 商业智能(BI)分析
- 大数据统计分析
- 实时报表查询
- 物联网数据分析
1.3 虚拟集群(Virtual Cluster, VC)简介
GBase 8a 支持在同一物理集群上创建多个逻辑隔离的虚拟集群(VC)。每个 VC 拥有独立的数据分布、数据库、用户和权限体系,实现资源与数据的完全隔离。
典型应用场景:
- 开发、测试、生产环境分离
- 不同业务部门/租户的数据隔离
- 敏感数据与普通数据分区管理
⚠️ 注意:VC 之间无法跨 VC 查询表,库表结构、用户权限均相互独立。
二、集群核心概念与组件
2.1 节点类型详解
2.1.1 管理节点 (Gcware Node)
定义:指运行 gcware 服务的节点。
功能:组成 GCware 集群(分布式管理集群),负责集群的元数据管理、一致性协调和节点状态监控,是集群的“大脑”和“协调中心”。
核心职责:
- 维护集群全局元数据(如表结构、分片信息)
- 管理节点心跳和状态监控
- 协调分布式事务一致性
- 处理节点加入、退出、故障检测
- 集群配置信息的存储与分发
高可用部署原则:
GCware 集群采用基于多数派(超过1/2)的选举协议(Paxos/Raft变种)。因此,必须部署奇数个节点(推荐3、5、7个)。部署3台是满足高可用的最小配置(允许1台故障),部署5台可允许2台故障。
部署建议:
- 生产环境:至少3台
- 大规模集群:5台或7台
- 与Gcluster节点同机部署
2.1.2 调度节点 (Gcluster Node)
定义:指运行 gclusterd 服务的节点。
功能:组成 GCluster 集群(分布式调度集群),对外提供数据库连接接口,接收 SQL 请求,进行解析、优化并生成分布式执行计划,然后调度数据节点执行。
核心职责:
- SQL解析、语义检查
- 查询优化(RBO/CBO)
- 生成分布式执行计划
- 任务调度与分发
- 结果集汇总与返回
- 连接管理与会话控制
高可用机制:
采用 Failover(故障转移) 机制。任一 Gcluster 节点故障,其连接和正在执行的任务可由其他正常节点自动接管。客户端连接可通过连接池或负载均衡器实现自动切换。
部署建议:
- 为避免单点故障并提供连接负载均衡,需部署多台
- 具体数量参考业务连接压力和数据节点规模
- 官方建议通常为奇数个(如3、5、7、9、11)
- 在实际部署中,Gcluster 常与 Gcware 部署在同一物理服务器上,形成 Coordinator 节点
2.1.3 计算节点 (Data Node / GNode)
定义:指运行 gbased 服务的节点。
功能:组成 Data Cluster(数据集群),负责数据的本地存储、压缩、索引和计算,是真正的数据承载与计算单元。
核心职责:
- 数据存储与管理(列式存储)
- 执行本地计算任务
- 数据压缩与解压缩
- 智能索引维护
- 通过
gc_sync_server进程保障数据副本一致性
高可用机制:
基于数据分片(Segment)的主副本复制机制。每个数据分片有1个主副本和N个备副本(通常为1个)。当主分片所在节点故障时,查询和计算会自动切换到备份分片副本所在的节点。数据同步由独立的 gc_sync_server 进程负责。
数据分布策略:
- 随机分布:数据随机分布在各个节点
- 哈希分布:根据指定列哈希值分布数据
- 复制表:每个节点都有一份完整数据(用于小表关联)
2.1.4 节点角色组合
| 组合类型 | 包含服务 | 适用场景 | 说明 |
|---|---|---|---|
| Coordinator Node(协调节点) | gcware + gclusterd + 监控进程 | 生产环境标准配置 | 同时承担元数据管理和SQL调度功能,是最常见的部署方式 |
| 纯数据节点 | gbased + gc_sync_server + 监控进程 | 数据节点专用服务器 | 只负责数据存储与计算,不参与集群管理 |
| 管理节点专用 | gcware + 监控进程 | 大规模集群分离部署 | 元数据服务独立部署,减轻协调节点压力 |
| 调度节点专用 | gclusterd + 监控进程 | 高并发SQL场景 | 调度服务独立部署,提升SQL处理能力 |
2.2 核心进程详解
GBase 8a MPP Cluster 的核心进程分为协调节点进程、数据节点进程以及保障高可用的监控进程。以下详细说明各进程的功能、配置及维护方式。
2.2.1 Coordinator 节点进程
Coordinator 节点(协调节点)通常混合部署管理组件(GCware)和调度组件(GCluster),负责集群的元数据管理、SQL 解析与任务调度。
| 进程名称 | 所属组件 | 功能说明 | 配置文件路径 | 默认日志路径 |
|---|---|---|---|---|
| gcware | GCware | 集群“元数据管理核心”。负责元数据存储、节点心跳检测、一致性协调及故障选举。需部署奇数个节点以实现高可用。 | $GCWARE_BASE/config/gcware.conf | $GCWARE_BASE/log/gcware.log 等 |
| gclusterd | GCluster | 调度中心。负责接收客户端 SQL 请求,进行解析、优化,生成分布式执行计划并下发给数据节点。 | $GCLUSTER_BASE/config/gbase_8a_gcluster.cnf | $GCLUSTER_BASE/log/gcluster/ |
| gcrecover | 集群恢复服务(与GCluster协同) | 恢复代理。监控分布式事务一致性,当检测到事务异常时,协助进行数据恢复操作。其日志记录在gclusterd日志中。 | (内置于gclusterd管理) | $GCLUSTER_BASE/log/gcluster/(与gclusterd日志混合) |
注:
$GCWARE_BASE和$GCLUSTER_BASE默认为/opt/gbase- 生产环境中,建议将 gcware 和 gclusterd 部署在同一组节点上,形成 Coordinator 节点
2.2.2 Data Node 节点进程
Data Node 节点(数据节点)是数据的实际存储和计算单元,负责执行具体的查询任务和数据处理。
| 进程名称 | 所属组件 | 功能说明 | 配置文件路径 | 默认日志路径 |
|---|---|---|---|---|
| gbased | GNode | 数据引擎。负责数据的列式存储、压缩、索引维护及本地计算任务执行。 | $GBASE_BASE/config/gbased.cnf | $GBASE_BASE/log/gbase/ |
| gc_sync_server | SyncServer | 同步服务。负责数据分片在主备节点之间的实时同步,保障数据冗余和高可用。 | $GBASE_BASE/config/syncserver.conf | $GBASE_BASE/log/syncserver/ |
注:
$GBASE_BASE(或$GNODE_BASE)默认为/opt/gbase,是数据节点的安装根目录- 请勿将数据节点的路径与环境变量
$GCLUSTER_BASE混淆
2.2.3 监控进程
为确保集群服务的高可用性,GBase 8a 提供了分层级的监控工具。监控体系采用“分层守护”机制:一级监控负责守护业务服务,二级监控负责守护一级监控脚本。
1. 监控工具功能与层级
| 监控脚本 | 守护对象 | 功能说明 |
|---|---|---|
| gcmonit.sh | gclusterd, gbased, gcrecover, gc_sync_server | 核心监控脚本。实时监控业务服务进程,若发现进程异常退出,会自动尝试重启。 |
| gcmmonit | gcmonit.sh | 守护进程。专门监控 gcmonit.sh 本身,防止监控脚本意外停止。 |
| gcware_monit.sh | gcware | 管理节点监控脚本。专门负责监控 gcware 服务的运行状态。 |
| gcware_mmonit | gcware_monit.sh | 守护进程。专门监控 gcware_monit.sh,确保 gcware 监控层的高可用。 |
2. 配置文件与日志
| 监控脚本 | 配置文件路径 | 默认日志路径 | 说明 |
|---|---|---|---|
| gcmonit.sh | $GCLUSTER_BASE/config/gcmonit.conf | $GCLUSTER_BASE/log/gcluster/ | 可配置检测间隔、重启次数等参数 |
| gcmmonit | $GCLUSTER_BASE/config/gcmmonit.conf | $GCLUSTER_BASE/log/gcluster/ | 守护 gcmonit.sh |
| gcware_monit.sh | $GCWARE_BASE/config/gcware_monit.conf | $GCWARE_BASE/log/ | 监控 gcware 服务 |
| gcware_mmonit | $GCWARE_BASE/config/gcware_mmonit.conf | $GCWARE_BASE/log/ | 守护 gcware_monit.sh |
注意:修改配置文件后,必须重启对应的监控服务方可生效。
3. 常用运维命令
监控脚本支持 start(启动)、stop(停止)、restart(重启)、status(状态查询)四个标准操作。请注意参数不带 -- 前缀。
-
启动/停止/重启监控
# 启动监控 $ gcmonit.sh start $ gcware_monit.sh start # 停止监控 $ gcmonit.sh stop $ gcware_monit.sh stop # 重启监控 $ gcmonit.sh restart $ gcware_monit.sh restart -
查看监控状态 执行
status命令可查看所有被监控进程的实时运行状态及 PID。查看 gcluster/gnode 监控状态:
$ gcmonit.sh status查看 gcware 监控状态:
$ gcware_monit.sh status
2.3 集群架构图
┌─────────────────────────────────────────────────────────────┐
│ 客户端/应用 │
└─────────────────┬───────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 负载均衡器/连接池 │
└─────────┬───────────────┬────────────────┬──────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Coordinator 1 │ │ Coordinator 2 │ │ Coordinator 3 │
│ gcware+gclusterd│ │ gcware+gclusterd│ │ gcware+gclusterd│
│ IP:19 │ │ IP:20 │ │ IP:21 │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
│ │ │
└───────────────────┼───────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 数据节点集群 │
├───────────────┬───────────────┬───────────────┬─────────────┤
│ Data Node 1 │ Data Node 2 │ Data Node 3 │ Data Node 4 │
│ gbased │ gbased │ gbased │ gbased │
│ IP:19 │ IP:20 │ IP:21 │ IP:22 │
│ Segment 1 │ Segment 2 │ Segment 3 │ 备用节点 │
│ (Primary) │ (Primary) │ (Primary) │ │
└───────────────┴───────────────┴───────────────┴─────────────┘
架构说明:
- Coordinator节点:运行
gcware+gclusterd服务,对外提供SQL接入,对内管理元数据和调度任务 - 数据节点:运行
gbased+gc_sync_server服务,负责数据存储、计算和副本同步 - 负载均衡器:可选组件,用于将客户端连接分发到多个Coordinator节点,实现高可用和负载均衡
- 网络要求:所有节点之间建议万兆网络互联,保障数据交换效率
三、环境准备
3.1 节点规划与设计
根据您的原始规划,优化后的详细节点规划表如下:
| 序号 | 主机名 | IP地址 | 角色 | 操作系统 | 安装目录 | 虚拟集群(VC) | 硬件配置建议 | 备注 |
|---|---|---|---|---|---|---|---|---|
| 1 | node04 | 192.168.126.19 | Coordinator + Data Node (主安装节点) | RedHat 7.9 | /opt/gbase | vc1 | CPU:16C+, 内存:64G+, 磁盘:2T+ | 同时运行gcluster和gcware服务,并作为数据节点 |
| 2 | node05 | 192.168.126.20 | Coordinator + Data Node | RedHat 7.9 | /opt/gbase | vc2 | CPU:16C+, 内存:64G+, 磁盘:2T+ | 同上 |
| 3 | node06 | 192.168.126.21 | Coordinator + Data Node (备用) | RedHat 7.9 | /opt/gbase | Free Node | CPU:16C+, 内存:64G+, 磁盘:2T+ | 构成3节点的Coordinator集群,满足高可用 |
| 4 | node07 | 192.168.126.22 | Data Node (待扩容) | RedHat 7.9 | /opt/gbase | Free Node | CPU:16C+, 内存:64G+, 磁盘:2T+ | 预留的数据节点,可用于未来扩容或创建新VC |
关键概念说明:
- Coordinator Node:指同时部署了 gcluster (调度) 和 gcware (管理) 服务的节点
- Data Node:指运行 gbased 服务的数据节点
- Free Node:指已加入根集群但尚未分配给任何虚拟集群(VC)的数据节点,可用于VC创建或扩容
- VC (Virtual Cluster):虚拟集群,在一个物理集群上划分的逻辑子集群,资源隔离
3.2 系统与硬件要求
3.2.1 硬件最低要求
| 组件 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| CPU | 2核 | 16核及以上 | 频率越高越好,支持多核并行 |
| 内存 | 4GB | 64GB及以上 | 取决于数据量和并发 |
| 磁盘 | 100GB | 2TB及以上 | SSD优先,RAID10或RAID5 |
| 网络 | 千兆 | 万兆 | 节点间通信关键 |
3.2.2 操作系统要求
| 项目 | 要求 |
|---|---|
| 操作系统 | RedHat 7.X / CentOS 7.X / 麒麟等 |
| 文件系统 | ext4 / xfs |
| 磁盘分区 | 独立数据盘,挂载到/opt/gbase |
3.2.3 软件依赖
| 软件包 | 版本要求 | 用途 |
|---|---|---|
| python | 2.7+ / 3.6+ | 安装脚本依赖 |
| bc | 最新版 | 计算工具 |
| bzip2 | 最新版 | 解压工具 |
| libcgroup-tools | 最新版 | 资源管理(可选) |
| ntp/chrony | 最新版 | 时间同步 |
3.3 具体配置步骤
以下步骤需在所有节点上以 root 用户执行。
3.3.1 关闭防火墙与SELinux
防火墙配置:
# 停止防火墙服务
systemctl stop firewalld
# 禁用防火墙开机自启
systemctl disable firewalld
# 确认防火墙状态
systemctl status firewalld
# 期望输出: Active: inactive (dead)
SELinux配置:
# 临时关闭(立即生效)
setenforce 0
# 永久关闭(需重启生效)
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
# 验证配置
grep -E "^SELINUX=" /etc/selinux/config
# 期望输出: SELINUX=disabled
3.3.2 配置主机名与网络
设置主机名(如已设置可略过):
# 在node04上执行
hostnamectl set-hostname node04
# 在node05上执行
hostnamectl set-hostname node05
# 在node06上执行
hostnamectl set-hostname node06
# 在node07上执行
hostnamectl set-hostname node07
配置IP映射(/etc/hosts):
确保所有节点包含集群内所有IP和主机名的映射。
cat >> /etc/hosts << EOF
192.168.126.19 node04
192.168.126.20 node05
192.168.126.21 node06
192.168.126.22 node07
EOF
网络连通性测试:
# 从node04测试到其他节点
ping -c 3 node05
ping -c 3 node06
ping -c 3 node07
重启网络服务(如修改了IP或主机名):
systemctl restart network
3.3.3 配置SSH互信(免密登录)
生成密钥(在所有节点执行):
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
分发公钥(在主节点 node04 上执行):
# 将本节点公钥拷贝到所有节点(包括自己)
ssh-copy-id node04
ssh-copy-id node05
ssh-copy-id node06
ssh-copy-id node07
# 测试免密登录
ssh node05 "hostname"
ssh node06 "hostname"
ssh node07 "hostname"
# 应能直接返回主机名,无需输入密码
可选:配置SSH超时防止断开:
# 编辑SSH客户端配置
cat >> ~/.ssh/config << EOF
Host *
ServerAliveInterval 60
ServerAliveCountMax 3
EOF
3.3.4 安装必需软件包
# 安装基础工具
yum install -y python3 bc bzip2 net-tools telnet wget
# 安装资源管理工具(可选)
yum install -y libcgroup-tools
# 安装时间同步工具
yum install -y chrony
重要依赖检查:
安装前需检查 gcinstall 目录下的 dependRpms 文件,安装其中列出的所有依赖包。
# 在主节点解压软件包后查看
cat /opt/gcinstall/dependRpms
# 使用 yum 逐一安装所有列出的包
yum install -y $(cat /opt/gcinstall/dependRpms)
3.3.5 创建DBA用户与目录
创建用户和组:
groupadd gbase
useradd -g gbase -m -s /bin/bash gbase
# 设置密码,建议所有节点密码一致
echo "gbase" | passwd --stdin gbase
# 查看用户信息
id gbase
# uid=1000(gbase) gid=1000(gbase) groups=1000(gbase)
创建安装目录并授权:
mkdir -p /opt/gbase
chown -R gbase:gbase /opt/gbase
# 验证权限
ls -ld /opt/gbase
# drwxr-xr-x 2 gbase gbase 6 Feb 20 10:00 /opt/gbase
设置/tmp目录权限(部分环境需要):
chmod -R 777 /tmp
3.3.6 其他重要检查
确保root密码一致:
所有节点root密码需相同,以便安装脚本使用。
检查并开启SSH服务:
systemctl enable sshd
systemctl start sshd
systemctl status sshd
# 期望输出: Active: active (running)
时钟同步配置:
# 安装chrony
yum install -y chrony
# 启动并设置开机自启
systemctl enable chronyd --now
# 查看时间同步状态
chronyc sources -v
# 手动同步
chronyc -a makestep
# 检查各节点时间
date
检查crontab服务(为后续日志归档准备):
systemctl status crond
systemctl enable crond
systemctl start crond
检查系统限制:
# 修改limits.conf(建议)
cat >> /etc/security/limits.conf << EOF
gbase soft nofile 65536
gbase hard nofile 65536
gbase soft nproc 65536
gbase hard nproc 65536
EOF
检查磁盘挂载:
# 查看磁盘使用情况
df -h
# 确保/opt/gbase目录所在分区有足够空间
# 建议单独挂载数据盘
四、安装GBase 8a MPP Cluster
4.1 软件包解压与系统环境设置
4.1.1 软件包准备
操作节点:主安装节点(如 node04)
执行用户:root
步骤:
- 上传安装包至主节点(如 /opt 目录):
scp GBase8a_MPP_Cluster-License-9.5.3.28.35_patch.2-redhat7-x86_64.tar.bz2 root@node04:/opt/
- 解压软件包:
cd /opt
tar xfj GBase8a_MPP_Cluster-License-9.5.3.28.35_patch.2-redhat7-x86_64.tar.bz2
ls -ld /opt/gcinstall
4.1.2 复制环境设置脚本
在所有节点执行:
scp /opt/gcinstall/SetSysEnv.py root@node04:/opt/
scp /opt/gcinstall/SetSysEnv.py root@node05:/opt/
scp /opt/gcinstall/SetSysEnv.py root@node06:/opt/
scp /opt/gcinstall/SetSysEnv.py root@node07:/opt/
4.1.3 执行环境设置脚本
在每个节点执行:
cd /opt
python SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup
预期输出:
Set System Env Start...
Set System Env Successfully.
4.2 修改主节点的安装配置文件
4.2.1 进入安装目录
操作节点:主安装节点(node04)
执行用户:gbase
su - gbase
cd /opt/gcinstall
4.2.2 编辑demo.options
# 安装目录
installPrefix=/opt/gbase
# Coordinator节点IP列表
coordinateHost=192.168.126.19,192.168.126.20,192.168.126.21
# 节点ID
coordinateHostNodeID=19,20,21
# 数据节点IP列表
dataHost=192.168.126.19,192.168.126.20,192.168.126.21,192.168.126.22
# Gcware管理节点IP列表
gcwareHost=192.168.126.19,192.168.126.20,192.168.126.21
gcwareHostNodeID=19,20,21
# DBA用户信息
dbaUser=gbase
dbaGroup=gbase
dbaPwd='gbase'
# root用户密码(所有节点必须一致)
rootPwd='root1234'
4.3 执行安装脚本
操作节点:主安装节点(node04)
执行用户:gbase
cd /opt/gcinstall
./gcinstall.py --silent=demo.options --license_file=/home/gbase/20260127-04.lic
4.4 安装后检查
4.4.1 检查集群状态
[gbase@node04 ~]$ gcadmin
4.4.2 安装成功验证清单
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| 集群状态 | [gbase@node04 ~]$ gcadmin | CLUSTER STATE: ACTIVE |
| 所有进程运行 | [gbase@node04 ~]$ gcmonit --status | 所有 status = OK |
| 客户端可连接 | [gbase@node04 ~]$ gccli -u root -p | 成功进入 SQL 提示符 |
| 日志无 ERROR | [gbase@node04 ~]$ grep -r "ERROR" /opt/gbase/log/ | wc -l | 返回 0 |
4.4.3 查看生成配置文件
cat /opt/gcinstall/gcChangeInfo.xml
4.5 创建虚拟集群(VC)与分布信息
4.5.1 创建第一个VC
[gbase@node04 gcinstall]$ gcadmin createvc e create_vc1.xml
vi create_vc1.xml
<?xml version="1.0" encoding="utf-8"?>
<vc>
<name>vc1</name>
<description>Virtual Cluster 1</description>
<nodes>
<node ip="192.168.126.19"/>
<node ip="192.168.126.20"/>
</nodes>
</vc>
[gbase@node04 gcinstall]$ gcadmin createvc create_vc1.xml
4.5.2 创建第二个VC
<?xml version="1.0" encoding="utf-8"?>
<vc>
<name>vc2</name>
<description>Virtual Cluster 2</description>
<nodes>
<node ip="192.168.126.21"/>
<node ip="192.168.126.22"/>
</nodes>
</vc>
[gbase@node04 gcinstall]$ gcadmin createvc create_vc2.xml
4.5.3 创建分布信息
为vc1创建分布:
[gbase@node04 gcinstall]$ vi gcChangeInfo_vc1.xml
<?xml version="1.0" encoding="utf-8"?>
<servers>
<rack>
<node ip="192.168.126.19"/>
</rack>
<rack>
<node ip="192.168.126.20"/>
</rack>
</servers>
[gbase@node04 gcinstall]$ gcadmin distribution gcChangeInfo_vc1.xml p 1 d 0 dba_os_password gbase vc vc1
4.5.4 分布创建参数详解
| 参数 | 含义 | 示例 | 说明 |
|---|---|---|---|
p N | 主分片数量 | p 2 | 通常等于 VC 中 Data Node 数量 |
d M | 备份分片数量 | d 0 或 d 1 | d=0 表示无备份(仅限测试) |
dba_os_password | gbase 系统用户密码 | dba_os_password gbase | 用于远程执行脚本 |
db_user / db_pwd | 数据库管理员账号 | db_user root db_pwd Admin2O11O531 | 初始安装默认凭证 |
❗ 注意:生产环境强烈建议设置
d ≥ 1以保障高可用。
4.5.5 查看分布信息
[gbase@node04 ~]$ gcadmin showdistribution vc vc1
[gbase@node04 ~]$ gcadmin showdistribution vc vc2
4.5.6 查看整体集群状态
[gbase@node04 ~]$ gcadmin
4.6 数据库初始化
[gbase@node04 ~]$ gccli -u root -p
Enter password: Admin2O11O531
初始化vc1:
use vc vc1;
initnodedatamap;
show nodedatamap;
初始化vc2:
use vc vc2;
initnodedatamap;
show nodedatamap;
4.7 创建库表验证
4.7.1 在vc1中创建库表
use vc vc1;
create database test;
use test;
create table T(id int ,name varchar(20));
insert into T values(1, '张三');
insert into T values(2, '李四');
select * from T;
4.7.2 在vc2中创建库表
use vc vc2;
create database test;
use test;
create table T(id int ,name varchar(20));
insert into T values(1, '王五');
insert into T values(2, '赵六');
select * from T;
4.7.3 验证数据隔离
-- vc1 只能看到张三、李四
use vc vc1; select * from test.T;
-- vc2 只能看到王五、赵六
use vc vc2; select * from test.T;
数据隔离成功,说明虚拟集群配置正确。
五、常见问题与解决方案
5.1 crontab权限问题
错误现象:
Error: gcinstall.py(line 4292) -- check crontab privilege failed nodes: 192.168.126.19
解决方法:
# 编辑白名单
sudo vi /etc/cron.allow
# 添加
gbase
# 重启服务
sudo systemctl restart crond.service
5.2 SSH主机密钥问题
解决方法:
cd /etc/ssh
mkdir bak
mv ssh_host_* bak/
systemctl restart sshd
5.3 Cgroup警告
解决方法:
输入 y 继续安装,或安装缺失包:
yum install libcgroup-tools -y
六、集群卸载
6.1 卸载前准备
# 停止服务
gcware_services all stop
gcluster_services all stop
6.2 执行卸载
cd /opt/gcinstall
cp demo.options demo_uninstall.options
# 编辑 demo_uninstall.options(清空 exist* 字段)
./unInstall.py --silent=demo_uninstall.options
6.3 验证卸载
ls -la /opt/gbase # 应为空
ps -ef | grep gbase # 应无输出
七、性能优化建议
7.1 操作系统优化(略)
7.2 数据库参数优化
7.2.1 GNode 内存分配建议
gbase_memory_pool_size ≈ (总物理内存 - 16GB) × 0.7
| 服务器内存 | 推荐 gbase_memory_pool_size |
|---|---|
| 64 GB | 32G |
| 128 GB | 75G |
| 256 GB+ | 160G |
配置示例(/opt/gbase/etc/gbased.cnf):
[gbased]
gbase_memory_pool_size = 75G
gbase_buffer_distribution = 8G
gbase_buffer_sort = 4G
gbase_parallel_degree = 16
⚠️ 注意:所有内存参数之和不应超过
gbase_memory_pool_size。
八、日常运维命令速查
8.1 集群状态查看
| 命令 | 说明 |
|---|---|
gcadmin | 查看集群概要状态 |
gcadmin showcluster | 查看详细集群状态 |
gcadmin showdistribution | 查看数据分布 |
gcadmin showvc | 查看虚拟集群信息 |
gcmonit --status | 查看进程监控状态 |
8.2 服务启停
| 命令 | 说明 |
|---|---|
gcluster_services all start | 启动所有gcluster和gnode服务 |
gcware_services all start | 启动所有gcware服务 |
gcmonit --start | 启动监控进程 |
8.3 虚拟集群管理
| 命令 | 说明 |
|---|---|
gcadmin createvc | 创建虚拟集群 |
gcadmin dropvc | 删除虚拟集群 |
gcadmin distribution | 创建分布信息 |
九、附录
9.1 端口说明
| 端口 | 服务 | 是否需对外暴露 | 说明 |
|---|---|---|---|
| 5258 | gclusterd | ✅ 是 | 应用连接端口 |
| 5918 | gbased | ❌ 否 | 节点间通信 |
| 5919 | syncserver | ❌ 否 | 主备同步 |
| 5259/5260 | gcware | ❌ 否 | 管理节点内部通信 |
9.2 目录结构
/opt/gbase/
├── bin/
├── etc/
├── log/
│ ├── gbase/
│ ├── gcluster/
│ ├── gcware/
│ └── syncserver/
└── userdata/
9.3 常用SQL
SELECT current_vc(); -- 查看当前 VC
SHOW VCS; -- 列出所有 VC
SHOW NODES FROM VC vc1; -- 查看 VC 节点
SHOW DISTRIBUTION TABLE t; -- 查看表分布
9.4 故障自检流程
gcadmin→ 集群是否 ACTIVEgcmonit --status→ 进程是否 OKgccli -u root -p→ 能否连接grep "ERROR" /opt/gbase/log/...→ 查日志ping / telnet→ 网络与端口