数据库教程FGMT85:国产数据库GBase数据库工程师培训实战教程(南大通用分布式数据库)
数据库教程FGMT85:国产数据库GBase数据库工程师培训实战教程(南大通用分布式数据库)
前言与内容大纲介绍
风哥教程本文面向希望系统掌握南大通用 GBase 数据库的工程师,内容覆盖 GBase 8a MPP 分布式集群的架构原理、规划准备、安装部署、扩容收缩、节点替换、日常运维,以及 GBase 8s 事务型数据库的安装与初始化。本套风哥教程以生产环境可落地为目标,理论部分讲清"为什么这样做",实战部分给出可逐条执行的步骤与命令,所有示例均按 64G 内存、8 颗 CPU 的服务器规格设定,安装目录统一为 /fgedudb,数据库名、实例名统一为 fgedudb,业务用户名统一为 fgedu,示例节点主机名固定为
风哥先说明本套风哥教程的内容组织。全文分为四大块:第一块是前言与大纲介绍,帮助读者建立整体认知;第二块是理论篇,讲解 GBase 产品定位、8a MPP 分布式架构、8s 事务型架构以及集群规划与环境准备的底层原理;第三块是实战篇,按"环境准备—单 VC 安装—扩容—收缩—多 VC—节点替换—日常管理维护—8s 安装"的顺序展开,每一步都给出命令与预期结果;第四块是风哥针对本文总结,提炼关键操作要点与排错思路。
风哥教程本文的大纲对应六大模块:模块一为南大通用 GBase 数据库基础与架构,包含产品介绍、8a 架构与功能特性;模块二为集群规划与环境准备;模块三为 GBase 8a 分布式集群单 VC 模式的安装配置与管理,包含七节点安装、七加六扩容、十三缩六收缩;模块四为多 VC 模式的安装、协调节点与数据节点扩容收缩;模块五为日常管理与维护入门,包含 SQL 基础与开发、备份恢复与数据加载、日常维护与监控;模块六为 GBase 8s 事务型数据库安装过程。读者可以按顺序通读,也可以在实际操作时直接跳到对应实战章节查阅命令。
需要提前说明的是,本套风哥教程中的 IP 地址、密码、目录均为教学示例,生产环境中应按实际网络规划与安全规范替换;命令中的操作系统管理员用户为 fgedu,与数据库业务用户 fgedu 同名仅为教学简化,生产环境建议区分。
学习本套风哥教程建议按"先理论后动手"的顺序:先读理论篇建立组件与概念的整体地图,再对照实战篇逐台敲命令,环境允许时建议准备两台以上虚机复刻安装与扩缩容过程。读者需要具备 Linux 基础操作、s-hell 命令与关系型数据库 SQL 基础,不需要预先了解 GBase 产品特性。风哥在每个实战步骤后都标注了判定标准与常见报错,读者遇到问题时先对照本节自检,再查阅官方产品手册对应章节。
理论篇
一、GBase 产品家族与本套风哥教程的定位
南大通用 GBase 产品线覆盖分析型与事务型两大类。GBase 8a MPP Cluster 是面向大数据量分析场景的分布式关系型数据库,采用 s-hared-Nothing 无共享架构,数据按分片分布在多个数据节点上,查询由协调节点并行下发、各节点并行计算后汇聚结果,适合数仓、报表、历史数据归档等 OLAP 场景。GBase 8s 是面向联机事务处理的事务型数据库,采用经典的共享内存架构,支持高并发短事务、行级锁、日志恢复,适合核心业务系统。本套风哥教程以 8a MPP 集群为主线,最后补充 8s 的安装与初始化,帮助工程师同时掌握分析型与事务型两类国产数据库的部署能力。
8a MPP 的核心价值在于横向扩展:单节点容量不足时,增加数据节点即可线性扩展存储与计算能力;节点故障时,分片副本自动接管,业务不中断。理解这一点,才能理解后续扩容、收缩、节点替换等操作为什么要围绕"分片分布"展开。
二、GBase 8a MPP 架构原理
2.1 三大核心组件
GBase 8a MPP Cluster 在逻辑上由三类进程组件构成,理解组件职责是看懂所有管理命令的前提。
第一类是 gcware,即集群协调组件。gcware 运行在协调节点上,负责集群元数据管理、节点状态仲裁、分布式锁、failover 接管记录与事件日志(eventlog)的存储与分发。它是集群的"大脑",本身不存储业务数据。gcware 通常部署三个节点形成仲裁多数派,当在线的 gcware 节点数小于总数一半时,集群为保护数据安全会停用 gcware 服务,此时任何数据库操作都无法执行,因此协调节点一般采用奇数个部署。
第二类是 gcluster,即协调节点(Coordinator)。gcluster 接收客户端 SQL,完成语法解析、优化器生成执行计划、把计算任务并行下发给数据节点,再汇聚各节点结果返回客户端。gcluster 不存储业务数据,只保存元数据与执行上下文。客户端通过 gccli 连接的就是 gcluster,默认端口 5258。
第三类是 gnode,即数据节点(Data Node)。gnode 负责存储分片数据并执行本地计算,是真正的"存储与计算单元"。每个 gnode 上还运行 syncserver 同步服务,负责主备分片之间的数据同步。
此外,gcrecover 是自动恢复服务,当节点重新上线或分片不一致时,由它根据备份分片自动把数据补齐。
2.2 VC 虚拟集群与 root cluster、free node
VC(Virtual Cluster,虚拟集群)是 8a 对数据节点的逻辑划分单位。一个物理集群可以划分出多个 VC,每个 VC 拥有独立的分片分布(distribution)与独立的数据节点集合,VC 之间数据隔离,可分别启停、分别做资源管理。
集群安装完成后,所有数据节点先进入 root cluster(根集群)。未分配到任何 VC 的数据节点称为 free node(空闲节点)。多 VC 模式下,新安装的数据节点默认先成为 free node,再通过 addnodes 命令加入指定 VC;单 VC 兼容模式下,节点直接进入默认集群。
2.3 distribution 分片分布与 p、d 参数
distribution(分布信息表)描述每一条数据分片存放在哪个节点、主分片在哪个节点、备份分片在哪个节点。创建 distribution 时两个核心参数:p num 表示每个数据节点上存放的主分片数量,d num 表示每个主分片的备份份数,d 可取 0、1、2。p 值乘以数据节点总数不能超过 65535。
分布模式有两种:pattern 1 为负载均衡模式,按 rack(机架逻辑分组)调整分片摆放,使主备分片尽量落在不同 rack,是默认模式;pattern 2 为高可用模式,主分片自动完整备份到相邻节点,与 rack 无关,最多可承受集群内一半节点故障。
每个分片都有主分片(primary)与备份分片(duplicate)。当主分片所在节点故障,备份分片自动提升为主分片继续服务,这就是 8a 的高可用基础。d 为 1 表示一份备份,d 为 2 表示两份备份,备份越多可用性越高,但存储开销越大。
2.4 集群模式与节点状态
集群有三种运行模式。NORMAL 为正常模式,可执行全部 SQL 操作;READONLY 为只读模式,扩容、备份、节点替换期间集群自动进入该模式,只允许查询,DDL、DML、加载操作排队等待模式恢复;RECOVERY 为恢复模式,执行集群级数据恢复时进入,该模式下禁止任何 DDL、DML、DQL 操作。管理员也可以用 gcadmin switchmode 手动切换模式。
节点模组进程状态分为 OPEN、CLOSE、OFFLINE、Failure、Unavailable:OPEN 表示正常;CLOSE 表示进程启动失败或意外关闭,常见原因是端口占用、配置文件权限或参数错误;OFFLINE 表示进程下线,一般为硬件断电、断网;Failure 表示节点被标识为故障,DDL、DML 不再下发到该节点而是记入 eventlog;Unavailable 表示节点被标识为不可用,必须通过节点替换才能恢复。数据一致性状态 DataState 为 0 表示正常,为 1 表示不一致。
2.5 failover 机制
当正在执行 SQL 的 gcluster 协调节点故障时,gcware 中记录的 SQL 执行信息会被其他可用的 gcluster 依次领取并接管继续执行,这就是 failover。接管信息包含 commit id、数据库名、表名、SCN 号、类型、创建时间、原始节点、接管节点与接管次数,可用 gcadmin s-howfailover 查看。理解 failover 有助于排查协调节点故障后任务为何没有丢失。
2.6 查询执行流程与哈希分布
一条 SQL 从客户端发出到返回结果,在 8a 内部经历五个阶段。第一,协调节点 gcluster 接收连接,完成词法分析、语法分析与语义检查。第二,优化器基于统计信息与分布信息生成分布式执行计划,决定哪些算子下推到数据节点、哪些在协调节点汇聚。第三,gcluster 把执行片段并行下发到所有相关 gnode。第四,各 gnode 在本地分片上并行执行扫描、过滤、连接、聚合,中间结果按哈希或广播方式在节点间重分布。第五,gcluster 汇聚各节点结果,做最终排序、聚合并返回客户端。
数据分布采用哈希分片:建表时指定分布列(distributed by),系统对分布列计算哈希值,按分片映射表把行落到对应主分片,再按 d 参数复制备份分片到其他节点。选择分布列的原则是高基数、查询高频过滤与连接使用的列,尽量让关联键落在同一节点,避免跨节点数据重分布带来的网络开销。若分布列选择不当,会出现数据倾斜,个别节点负载远高于其他节点,这是分析型集群最常见的性能问题。
rack 是 VC 内节点的逻辑分组,pattern 1 模式下主备分片尽量落在不同 rack,一个 rack 整体故障时另一个 rack 的备份仍可服务;pattern 2 与 rack 无关,采用相邻节点互备,适合机柜物理分隔的部署。两种模式都不能同时容忍同一分片的主备节点同时故障。
2.7 与传统单机关系型数据库的差异
传统 Oracle、MySQL 单机数据库垂直扩展,靠升级单台服务器的 CPU、内存、磁盘提升性能,容量与吞吐存在物理上限。8a MPP 水平扩展,增加节点即可线性增加存储与计算能力,代价是引入了分片管理、分布式一致性、扩缩容重分布等复杂性。工程师迁移思路也要转变:单机时代关注单实例参数调优,MPP 时代还要关注分布列设计、分片均衡、节点健康度、重分布窗口与备份策略。
三、GBase 8s 事务型架构原理
GBase 8s 采用共享内存(s-hared Memory)架构,所有数据库进程访问同一块共享内存区,不依赖网络即可完成大部分事务处理,因此单节点事务响应快。其存储单位是 dbspace(数据库空间),dbspace 由一个或多个 chunk(块)组成,chunk 对应磁盘上的文件或裸设备;rootdbs 是初始根空间,存放系统表与元数据。
日志体系由物理日志与逻辑日志构成。物理日志记录数据页的前映像,用于快速恢复;逻辑日志记录事务的前滚与回滚信息,用于崩溃恢复与备份恢复。检查点(checkpoint)周期性把共享内存中的脏页刷写到磁盘,并同步日志位置,是实例崩溃后能够一致恢复的关键。
实例通过 oninit 启动、onmode 管理运行模式、onstat 查看状态。关键配置文件有三个:onconfig 是主参数文件,定义 ROOTPATH、SERVERNUM、DBSERVERNAME、s-hM_SIZE、BUFFERPOOL、TAPEDEV、LTAPEDEV 等;sqlhosts 定义监听地址与端口,默认端口 9088;profile 环境变量文件定义 GBASEDBTSERVER、GBASEDBTDIR、ONCONFIG 等环境变量。备份工具为 ontape(简单磁带/文件备份)与 ON-Bar(企业级存储管理)。
按 64G 内存、8 CPU 的规格,8s 的共享内存不宜超过系统内存的一半,建议 s-hM_SIZE 取 20480MB 左右,缓冲池按实例实际负载分配,避免与操作系统、其他服务争抢内存。
8s 的进程模型分为主线程(listener)与若干 VP(虚拟处理器):CPU VP 负责执行 SQL 与事务,IO VP 负责磁盘读写,AIO VP 负责异步 IO,日志 VP 负责逻辑日志写入,恢复 VP 负责崩溃恢复。CPU_VPS 参数决定 CPU VP 数量,按 8 颗 CPU 取 8,使每个 CPU VP 绑定一颗核心,避免上下文切换。
事务隔离级别支持脏读、提交读、可重复读与可串行化,默认提交读。锁粒度分为行锁、页锁与表锁,OLTP 高并发场景优先使用行锁,批量加载与 DDL 期间可能升级为表锁。日志模式有缓冲日志(buffered)、非缓冲日志(unbuffered)与 ANSI 日志,生产环境核心库建议使用非缓冲日志,事务提交即落盘,崩溃时不丢已提交事务。
四、集群规划与环境准备理论
- 点赞
- 收藏
- 关注作者
评论(0)