一、前言
本人电脑原本已经通过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地址 | 节点角色 |
|---|---|---|
| 8ah1 | 192.168.56.101 | 协调节点+数据节点 |
| 8ah2 | 192.168.56.102 | 协调节点+数据节点 |
| 8ah3 | 192.168.56.103 | 协调节点+数据节点 |
统一账号密码(以本人真实环境为准)
- 系统root密码:
111111 - 系统gbase用户密码:
gbase@123 - 数据库root密码:默认空密码(无密码)
- 安装目录:
/opt/gcinstall
三、所需软件与镜像完整下载教程
1、VirtualBox 虚拟机下载安装
本次选择 VirtualBox 的核心原因:轻量、免费、与VMware共存无冲突、适合多节点集群学习。
官网下载地址:https://www.virtualbox.org/
下载选择:Windows hosts最新版
安装注意(非常关键)
- 不要安装在C盘,自定义安装路径到
G:\VirtualBox - 安装完成后打开 VirtualBox
- 点击顶部菜单管理(F)→ 全局设定 → 常规
- 修改「默认虚拟电脑文件夹」为:
G:\VirtualBox_VMs
目的:所有新虚拟机全部存G盘,杜绝C盘爆满
配置集群专属仅主机网卡
- 打开 VirtualBox 主界面,点击顶部菜单管理(F)
- 在下拉菜单里选择主机网络管理器(H)
- 在弹出的窗口点击创建,生成一张新的仅主机网卡(默认名如
VirtualBox Host-Only Ethernet Adapter) - 选中刚创建的网卡,点击属性或编辑
- 在适配器选项卡的 IPv4 地址栏填:
192.168.56.1 - 子网掩码填:
255.255.255.0 - 切到DHCP服务器选项卡,取消勾选「启用服务器」,保存
原因:集群三台机器要用静态IP,若DHCP开启会自动分配IP,和手填的 192.168.56.101~103 冲突,导致网络不通。
- 配置完成后,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)
- 管理(F)→ 导入虚拟电脑
- 选择下载好的
GBase8a.ova - 关键修改(解决后续服务启动报错)
- 虚拟机名称:
8ah1 - 内存:调整为 2560MB(2.5G以上)
- CPU:2核
- 存储路径:G:\VirtualBox_VMs\8ah1
- MAC地址策略:重新生成所有网卡MAC
- 虚拟机名称:
- 等待导入完成
网卡绑定
设置 → 网络 → 网卡1
- 连接方式:仅主机适配器
- 选择刚刚创建的
192.168.56.1网卡
五、完整克隆三台集群节点(8ah1、8ah2、8ah3)
重要规则:
- 必须关机状态克隆
- 必须完整克隆,不能链接克隆
- 必须重新生成MAC地址,否则集群IP冲突
克隆步骤
- 右键 8ah1 → 克隆
- 新名称:8ah2,路径G盘独立目录
- MAC:全部重新生成
- 克隆类型:完整克隆
- 同理克隆出 8ah3
三台克隆完成后,每台虚拟机内存均为2.5G以上,满足GBase8a集群硬性启动要求。
最终得到三台完全独立、环境一致、内存达标的GBase8a集群节点虚拟机。
六、三台虚拟机统一系统环境配置
三台机器全部执行,保证集群环境一致
1、修改主机名
hostnamectl set-hostname 8ah1 hostnamectl set-hostname 8ah2 hostnamectl set-hostname 8ah32、统一hosts解析
所有节点执行:
vi/etc/hosts写入:
192.168.56.101 8ah1 192.168.56.102 8ah2 192.168.56.103 8ah33、配置静态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 setenforce05、系统内核与文件句柄优化(三台机器全部执行)
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--stdingbaseuseradd新建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/gcinstall2、修改集群安装配置文件 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 |
| dbaPwd | gbase 系统用户密码 |
| rootPwd | root 系统密码,本文 111111 |
| #dbPort | 数据库端口 5258(默认,可注释) |
| ##sshPort | ssh 端口 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 showdistributionnode4、数据库加载分片映射(关键必执行)
登录命令(数据库root默认空密码,直接回车登录)
gccli-uroot-h192.168.56.101-P5258-p密码处直接回车(默认无密码)
initnodedatamap;九、集群部署成功最终验证标准
gcadmin集群状态 ACTIVE、NORMAL、所有服务 OPEN- 无 free node,分片规则正常生成
- 三节点互相免密互通、网络正常
- 数据库可正常空密码登录、集群分片架构完整可用
十、结语
本次搭建全程采用VMware单机环境保留 + VirtualBox全新集群环境的双环境学习方案,既保护了自己长期使用的单机练习环境,又成功搭建了标准三节点GBase8a MPP集群。
文章记录的内存2.5G硬性要求、新建gbase用户密码校验报错解决、数据库空密码、机架报错、分片顺序错误都是亲手搭建才会遇到的实操坑点,极具参考价值。
本文适合所有想从零入门 GBase8a 国产数据库、练习集群运维的读者,零基础可直接复刻成功。