大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。
社群交流
为了给大家提供一些技术交流的平台,目前已成立的技术交流群:
- Oracle 数据库交流群
- 国产数据库交流群
- Linux 技术交流群
- ChatGPT 4o 免费体验群
需要进群(均已超过 200 人,需要邀请)可以添加号主微信:Lucifer-0622,备注对应的群名即可。
目录
前言
一直听说 KingbaseES 有一款共享集群软件:KES RAC,对标 Oracle RAC,今天我就来一探究竟!
KingbaseES RAC
KingbaseES RAC 是电科金仓推出的、完全自主研发的国产共享存储数据库集群,具备稳定、高可用、高性能、高扩展特性,用于构建采用共享存储架构的对等多写数据库集群,该软件通过缓存交换技术保持各个节点的一致性。
KingbaseES RAC 共享存储集群方案可以提供性能扩展和可用性,同时保持低存储成本和中等维护成本,适用于大部分业务的需求。
下表从性能、可用性和成本角度详细描述了共享存储集群方案和 KingbaseES 的其他方案的差异:

物理架构:

逻辑架构:KingbaseES 提供了数据库的连接驱动,实现了客户端的负载均衡,并且支持连接级,在每个节点上提供了Clusterware 软件,管理集群中的成员,进行故障检测,处理数据库的调度问题,新增的 KingbaseES RAC 数据库提供跨节点一致的读写服务,集群的文件系统支持各节点对共享存储的一致性访问。当前的 KingbaseES RAC 还不支持 Oracle 的 ASM 设备管理方案,是依赖于本身的可用可靠方案来实现的。

运行架构:KingbaseES RAC 集群进程支撑维护全局一致性,提供节点管理、封锁、缓存交换等功能。集群文件系统提供锁管理进程,进行跨节点并发控制,提供 I/O 进程完成数据存取。Clusterware 故障检测处理进程提供故障检测以及自动处理,成员管理进程提供全局一致的成员列表。

数据架构:

KES RAC 使用的关键技术包括:
- 分布式缓冲区
- 全局事务
- 成员管理、复制、故障检测、通信等集群相关 CBB
其中分布式缓冲区协调了集群中多个数据库实例的本地缓冲区,为上层模块提供了语义、行为与单实例相同的全局缓冲区接口,这一接口对于依赖其功能的上层模块而言,是完全透明的。是关键能力中扩展性、应用开发能力兼容的重要支撑。
KES RAC 的分布式缓冲区实现参考了多核 CPU 的缓存一致性技术,二者的架构类似:在多核 CPU 架构中,每个核心存在私有缓存,核心间通过总线通信并协同访问共享的主存。同样地,KES RAC 每个节点都拥有本地缓冲区,各节点通过网络通信并访问共享的数据。而两者面临的核心挑战也相同,即如何确保缓存间的一致性。
CPU 实现缓存一致的过程中经历几个关键步骤:CPU 核心的私有 cache 会侦听总线上的消息,并根据消息的类型做出相应的操作,同时在需要同步缓存时将修改写回到主存。
这一实现可以概括为三个关键点:
- 缓存变更消息传递方式
- 缓存同步方式
- 缓存一致性协议
KES RAC 目前选择了基于网络的缓冲区同步方式,对比磁盘同步延迟更低,这种方式比较新颖。
KingbaseES Clusterware
金仓集群资源管理软件(Kingbase Clusterware)可提供集群成员管理、故障检测、处置调度等功能。可用于构建共享存储集群冷备方案,在单机已经满足性能需求的情况下,低成本的增加 KingbaseES 数据库的可用性。同时,也是金仓KingbaseES RAC 集群数据库软件所依赖的集群管理组件。

功能特点:
- 全局资源统一管理。
- 支持共享存储的高可用多活。
- 支持应用分库将压力分散到不同数据库实例。
- 去中心化,提供集群系统的高吞吐、高压力、高负载的承载能力。
Kingbase Clusterware 作为全局资源管理的系统,可以解决大部分分布式系统中出现的问题,如脑裂、集群节点的增减等问题。作为去中心化的系统,避免了中心节点由于集群过大带来的过多负载压力的问题,在大集群应用的情况能够很好的提供集群系统的高吞吐、高压力、高负载的承载。
Kingbase Clusterware 主要提供集群管理服务功能,在部署时,需要将 Clusterware 部署在集群中的每个节点上。
在正式介绍之前建议先了解一些专业术语:
- Pacemaker:资源管理器,是 Clusterware 重要组成部分,其负责集群中各种资源的管理工作。
- Corosync:执行高可用应用程序的通信子系统。
- Qdevice:管理本地主机上的仲裁设备提供程序。
- crmsh:本地资源管理器,通过 crmsh 可以很好的管理各类资源。
为了实现多节点数据共享的功能,需要提供多节点共享的存储设备。
基于共享存储,Corosync-qdevice 进程会进行选举,实现分区 quorum 的判定。在选举中赢得选举的分区,Corosync 之间会达成共识,实现集群的通信功能。这样当我们通过 crmsh 配置 Pacemaker 管理的资源时,配置信息会通过 Corosync 广播到整个集群。
除了配置的广播,Corosync 还会实现运行中各种状态和数据的通信,是 Clusterware 的通信子系统。同时由于 corosync-qdevice 也会通过 corosync 实现各节点配置读取和通信,因此在启动时,需要先启动 corosync 服务。在 Corosync 服务(包括 qdevice)启动后,需要拉起 Pacemaker 服务。
Pacemaker 主要负责管理外部资源,包括 VIP、Filesystem 以及分库资源。通过 crmsh 可以有效的操作 Pacemaker 按照各种规则和约束去管理各类资源。实际上,crmsh 是管理员(DBA)最常用的 Clusterware 工具,是管理员配置和管理 Pacemaker 以及 Pacemaker 管理的资源的重要手段。
写在最后
本文主要先介绍一下 KES RAC 的一些基础架构以及概念,下一篇演示 KES RAC 的部署流程。
如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!
往期精彩文章
达梦数据库安装最详细教程
一招教你学会达梦数据库的免密登录
一文讲透达梦数据库的大小写敏感
效率翻倍!达梦数据库 disql 使用技巧全攻略
达梦数据库参数配置与一键优化指南
达梦 AWR 报告快速上手指南
金仓数据库 KingbaseES V9 单机安装指南
KingbaseES KSQL 免密登录的几种方式
KingbaseES 控制文件冗余与恢复秘籍
GBase 8a MPP 集群部署最佳实践
GBase 8a GDCA 认证课后练习题大全(题库)
南大通用 GBASE 8s V8.8 数据库最全安装指南
GBase 8s GDCA 认证课后练习题大全(题库)
GBase 8s 数据库巡检报告及一键巡检脚本
YashanDB 一键生成 AWR 报告
YashanDB 数据库安装部署
YashanDB 共享集群(YAC)入门指南与技术详解




