news 2026/10/16 6:40:26

【超详细实战】GBase8a MPP Cluster 3节点集群从零安装部署(保姆级避坑完整版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【超详细实战】GBase8a MPP Cluster 3节点集群从零安装部署(保姆级避坑完整版)

一、前言

本人电脑原本已经通过VMware Workstation搭建了一套GBase8a 单机版数据库环境,日常用于基础 SQL 练习、简单数据库测试,该环境已经稳定可用、积累了自己的练习数据,为了不破坏、不覆盖、不丢失原有单机环境,我决定全新搭建一套独立虚拟环境,专门用来学习GBase8a MPP 集群版。

因此本次集群部署全程采用VirtualBox + 官方OVA镜像全新环境,与原有VMware单机环境完全隔离、互不干扰,一台电脑同时保留「单机学习环境 + 三节点集群学习环境」,非常适合从零学习国产分布式GBase8a集群、熟悉分片机制、集群架构。

本文完全基于本人真实电脑实操全过程,从 VirtualBox 软件下载、安装配置、GBase8a OVA镜像导入、三台虚拟机完整克隆、系统环境初始化、集群完整部署、分片配置、全程踩坑排错,一步不漏完整记录。新手零基础跟着本文操作,即可成功搭建可用的GBase8a MPP三节点集群。

二、个人电脑整体环境说明

原有旧环境(保留不改动)

  • 虚拟机软件:VMware Workstation
  • 数据库版本:GBase8a 单机版
  • 用途:日常基础SQL练习、单库单表测试
  • 状态:保留使用,本次部署完全不触碰此环境

本次全新部署环境(集群版)

  • 虚拟机软件:VirtualBox(全新独立环境,与VMware互不冲突)
  • 数据库版本:GBase8a MPP Cluster 集群版
  • 集群架构:三节点对等部署,每节点同时承担协调+数据角色
  • 用途:学习分布式分片、集群容灾、MPP架构

宿主机硬件

  • 系统:Windows 10 / 11
  • 内存:12G
  • 磁盘:固态G盘(所有虚拟机全部存放G盘,不占用C盘)

⚠️ 超级重要硬性条件(本次实操核心坑)

GBase8a集群节点内存必须 ≥2.5GB
如果虚拟机内存设置为2G,安装过程不会报错、能安装成功,但最后启动gcluster/gbase服务必定报错、数据库起不来。

本人亲测:2G内存启动服务失败、2.5G及以上内存集群服务完全正常。

本次集群IP规划

虚拟机名称IP地址节点角色
8ah1192.168.56.101协调节点+数据节点
8ah2192.168.56.102协调节点+数据节点
8ah3192.168.56.103协调节点+数据节点

统一账号密码(以本人真实环境为准)

  • 系统root密码:111111
  • 系统gbase用户密码:gbase@123
  • 数据库root密码:默认空密码(无密码)
  • 安装目录:/opt/gcinstall

三、所需软件与镜像完整下载教程

1、VirtualBox 虚拟机下载安装

本次选择 VirtualBox 的核心原因:轻量、免费、与VMware共存无冲突、适合多节点集群学习。

官网下载地址:https://www.virtualbox.org/
下载选择:Windows hosts最新版

安装注意(非常关键)
  1. 不要安装在C盘,自定义安装路径到G:\VirtualBox
  2. 安装完成后打开 VirtualBox
  3. 点击顶部菜单管理(F)→ 全局设定 → 常规
  4. 修改「默认虚拟电脑文件夹」为:G:\VirtualBox_VMs

目的:所有新虚拟机全部存G盘,杜绝C盘爆满

配置集群专属仅主机网卡
  1. 打开 VirtualBox 主界面,点击顶部菜单管理(F)
  2. 在下拉菜单里选择主机网络管理器(H)
  3. 在弹出的窗口点击创建,生成一张新的仅主机网卡(默认名如VirtualBox Host-Only Ethernet Adapter)
  4. 选中刚创建的网卡,点击属性或编辑
  5. 在适配器选项卡的 IPv4 地址栏填:192.168.56.1
  6. 子网掩码填:255.255.255.0
  7. 切到DHCP服务器选项卡,取消勾选「启用服务器」,保存

原因:集群三台机器要用静态IP,若DHCP开启会自动分配IP,和手填的 192.168.56.101~103 冲突,导致网络不通。

  1. 配置完成后,Windows 本机命令行执行ipconfig,能看到192.168.56.1这张网卡即成功。

2、GBase8a MPP OVA集群镜像下载

OVA镜像为官方预置好CentOS7环境、依赖、安装包的模板镜像,免去新手繁琐的系统初始化,是学习集群最优方案。

官方社区地址:https://www.gbase.cn/community/
参考部署教程:https://blog.csdn.net/wiserhowe/article/details/118608321

镜像大小约3.7G,下载后存放至G盘备用。

四、导入OVA模板虚拟机(创建第一台节点 8ah1)

  1. 管理(F)→ 导入虚拟电脑
  2. 选择下载好的GBase8a.ova
  3. 关键修改(解决后续服务启动报错)
    • 虚拟机名称:8ah1
    • 内存:调整为 2560MB(2.5G以上)
    • CPU:2核
    • 存储路径:G:\VirtualBox_VMs\8ah1
    • MAC地址策略:重新生成所有网卡MAC
  4. 等待导入完成

网卡绑定

设置 → 网络 → 网卡1

  • 连接方式:仅主机适配器
  • 选择刚刚创建的192.168.56.1网卡

五、完整克隆三台集群节点(8ah1、8ah2、8ah3)

重要规则:

  1. 必须关机状态克隆
  2. 必须完整克隆,不能链接克隆
  3. 必须重新生成MAC地址,否则集群IP冲突

克隆步骤

  1. 右键 8ah1 → 克隆
  2. 新名称:8ah2,路径G盘独立目录
  3. MAC:全部重新生成
  4. 克隆类型:完整克隆
  5. 同理克隆出 8ah3

三台克隆完成后,每台虚拟机内存均为2.5G以上,满足GBase8a集群硬性启动要求。

最终得到三台完全独立、环境一致、内存达标的GBase8a集群节点虚拟机。

六、三台虚拟机统一系统环境配置

三台机器全部执行,保证集群环境一致

1、修改主机名

hostnamectl set-hostname 8ah1 hostnamectl set-hostname 8ah2 hostnamectl set-hostname 8ah3

2、统一hosts解析

所有节点执行:

vi/etc/hosts

写入:

192.168.56.101 8ah1 192.168.56.102 8ah2 192.168.56.103 8ah3

3、配置静态IP(三台机器分别操作)

先用命令查看本机网卡名(一般是enp0s3或ens33):

ipaddr

看到enp0s3:这样的名字就是你的网卡名,记下来(下面假设为enp0s3,请以你实际看到的为准)。

修改网卡配置文件
vi/etc/sysconfig/network-scripts/ifcfg-enp0s3

改成如下内容(以 8ah1 为例,IP按各自节点替换):

TYPE=Ethernet BOOTPROTO=static NAME=enp0s3 DEVICE=enp0s3 ONBOOT=yes IPADDR=192.168.56.101 NETMASK=255.255.255.0 GATEWAY=192.168.56.1 DNS1=192.168.56.1

保存后重启网络:

systemctl restart network

各节点 IP 对照:8ah1=192.168.56.101、8ah2=192.168.56.102、8ah3=192.168.56.103,网关统一为192.168.56.1(Host-Only网卡IP)。

配置完成后的连通性验证

三台都配好后,任意一台执行(三台都要互相ping通):

ping-c4192.168.56.101ping-c4192.168.56.102ping-c4192.168.56.103

全部能通,代表静态IP配置成功。

4、关闭防火墙 & SELinux

systemctl stop firewalld systemctl disable firewalld setenforce0

5、系统内核与文件句柄优化(三台机器全部执行)

5.1 验证 swappiness 默认值

先查看当前值:

sysctlvm.swappiness

或

cat/proc/sys/vm/swappiness

输出1即为正常。

说明:GBase8a 官方建议该值为 1(即尽量避免使用swap、防止数据库性能下降)。本环境默认值就是 1,只需确认即可,无需修改。

5.2 调高最大文件句柄数(ulimit)

用 vi 打开配置文件:

vi/etc/security/limits.conf

在文件末尾追加下面4行(*表示对所有用户生效):

* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535

保存退出。需要重新登录终端(断开重连)才会生效。
验证是否生效:

ulimit-n

输出65535即代表生效。

作用:数据库会打开大量文件句柄,默认值太小会导致"too many open files"报错。

5.3 永久关闭透明大页(Transparent Hugepage)—— 修改 GRUB 引导参数(最彻底)

说明:GBase8a 对内存分配敏感,关闭透明大页可减少内存碎片、提升稳定性。用 GRUB 引导参数方式,在系统启动阶段就永久关闭,重启不会恢复。

步骤1:编辑 GRUB 默认参数文件

vi/etc/default/grub

找到GRUB_CMDLINE_LINUX="..."这一行,在引号末尾追加参数transparent_hugepage=never,改成类似:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root ... transparent_hugepage=never"

说明:保留原来所有参数不动,只在最后加一个transparent_hugepage=never,用空格分隔。

步骤2:重新生成 GRUB 引导配置

grub2-mkconfig-o/boot/grub2/grub.cfg

说明:这条命令把刚才的修改写入实际启动配置,必须执行,否则修改不生效。
(若系统为 UEFI 启动,目标路径改为/boot/efi/EFI/centos/grub.cfg)

步骤3:重启生效并验证

reboot

重启后执行:

cat/sys/kernel/mm/transparent_hugepage/enabled

输出never即为永久关闭成功(重启后依然生效)。

6、新建gbase用户、解决passwd密码校验报错(本人真实踩坑)

问题现象

先执行useradd gbase创建用户,紧接着使用交互式命令passwd gbase设置密码gbase@123时,CentOS密码复杂度策略校验不通过,直接报错,无法完成密码设置。

报错原因

CentOS7默认密码策略,交互式passwd命令对密码复杂度校验严格,gbase@123无法通过交互式校验。

解决方案

先创建gbase用户,再采用非交互式方式设置密码,绕过密码复杂度校验:

useraddgbaseecho"gbase@123"|passwd--stdingbase

useradd新建gbase用户,echo | passwd --stdin方式直接写入密码,不再触发交互式密码复杂度校验,顺利完成密码配置。

7、三台节点免密互通配置

切换gbase用户配置免密:

su- gbase ssh-keygen-trsa ssh-copy-id gbase@192.168.56.101 ssh-copy-id gbase@192.168.56.102 ssh-copy-id gbase@192.168.56.103

测试免密登录无需输入密码即为成功。

七、GBase8a MPP 三节点集群正式安装

1、进入安装目录

su- gbasecd/opt/gcinstall

2、修改集群安装配置文件 demo.options

videmo.options

完整配置内容:

installPrefix= /opt coordinateHost = 192.168.56.101,192.168.56.102,192.168.56.103 dataHost = 192.168.56.101,192.168.56.102,192.168.56.103 gcwareHost = 192.168.56.101,192.168.56.102,192.168.56.103 dbaUser = gbase dbaGroup = gbase dbaPwd = 'gbase@123' rootPwd = '111111' #dbPort = 5258 ##sshPort = 22

参数说明:

参数含义
installPrefix安装根目录,本文为 /opt
coordinateHost协调节点(gcluster)所在主机列表
dataHost数据节点(gnode)所在主机列表
gcwareHost集群管理服务(gcware)所在主机列表
dbaUser / dbaGroup安装运行账号 gbase
dbaPwdgbase 系统用户密码
rootPwdroot 系统密码,本文 111111
#dbPort数据库端口 5258(默认,可注释)
##sshPortssh 端口 22(默认,可注释)

说明:本环境三台节点同时是协调节点、数据节点、gcware节点(角色对等),所以三个 Host 列表填的是同一组 IP,正好印证三节点对等架构。

3、执行集群安装

python gcinstall.py demo.options

等待自动校验、分发文件、部署服务,出现 install success 即集群安装完成。

4、查看集群初始状态

gcadmin

刚安装完成状态:3 free data node(节点就绪,无分片规则)

八、配置标准教学版分片(p2d1 pattern1 官方课件标准)

重点顺序(全网新手90%搞错)
先生成分片distribution → 再执行initnodedatamap

1、修改机架配置文件 gcChangeInfo.xml

默认一节点一机架,会直接报错,必须三节点合并为一个机架:

<?xml version="1.0" encoding="utf-8"?><servers><rack><nodeip="192.168.56.101"/><nodeip="192.168.56.102"/><nodeip="192.168.56.103"/></rack></servers>

2、创建分片规则(课件标准 p2 d1 pattern1)

gcadmin distribution gcChangeInfo.xml p2d1pattern1

参数含义:

  • p 2:每节点2个主分片
  • d 1:每个主分片带1个副本
  • pattern1:机架级高可用,主副本跨节点容灾

提示 successful 代表分片创建成功。

3、查看全局分片分布

gcadmin showdistributionnode

4、数据库加载分片映射(关键必执行)

登录命令(数据库root默认空密码,直接回车登录)

gccli-uroot-h192.168.56.101-P5258-p

密码处直接回车(默认无密码)

initnodedatamap;

九、集群部署成功最终验证标准

  1. gcadmin集群状态 ACTIVE、NORMAL、所有服务 OPEN
  2. 无 free node,分片规则正常生成
  3. 三节点互相免密互通、网络正常
  4. 数据库可正常空密码登录、集群分片架构完整可用

十、结语

本次搭建全程采用VMware单机环境保留 + VirtualBox全新集群环境的双环境学习方案,既保护了自己长期使用的单机练习环境,又成功搭建了标准三节点GBase8a MPP集群。

文章记录的内存2.5G硬性要求、新建gbase用户密码校验报错解决、数据库空密码、机架报错、分片顺序错误都是亲手搭建才会遇到的实操坑点,极具参考价值。

本文适合所有想从零入门 GBase8a 国产数据库、练习集群运维的读者,零基础可直接复刻成功。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 6:38:49

VISSIM二次开发:Python通过COM接口动态修改公交停靠时间

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 6:38:23

Dubbo注解开发原理:@DubboService与Spring整合机制深度拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 6:38:02

抖音视频优化:5 个实操方法落地抖音关键词 SEO 优化

不少运营抖音账号的朋友&#xff0c;拍了很多视频&#xff0c;播放量却一直平平&#xff0c;花了不少时间精力&#xff0c;却很难吸引到目标客户。其实做好抖音优化&#xff0c;不用盲目追热点&#xff0c;掌握几个简单可落地的办法&#xff0c;就能提升作品在搜索渠道的曝光机…

作者头像 李华
网站建设 2026/10/16 6:35:43

基于Java的全功能直播平台构建指南

引言现在, 互联网那个发展得特别快, 所以直播这个东西就成了大家每天生活里面离不开的一部分了。不管是搞教育、找乐子, 还是卖东西那个电商领域来说, 直播都显示出了很大的潜力和挺大的价值。Java这个编程语言, 它是那种已经成熟了的, 而且到处都在用的语言, 靠着它那挺强的能…

作者头像 李华
网站建设 2026/10/16 6:35:25

Python内存泄漏真相:循环引用才是元凶

一、先说结论&#xff1a;内存泄漏不一定是代码写错了最近在维护一个 Python 服务时&#xff0c;发现进程内存占用一路飙升&#xff0c;从最初的 300MB 涨到 2GB 多&#xff0c;重启之后过两天又涨回去。一开始我怀疑是某个第三方库没释放资源&#xff0c;排查了半天才发现&…

作者头像 李华