GreatDB※
GreatDB 是万里数据库(北京万里开源软件有限公司,原 MySQL 中国研发中心)自主研发的国产关系型数据库,主要面向金融、运营商、能源、政企等场景。它有一个重要特点:大部分兼容 MySQL——所以理解 GreatDB,核心就是看它在 MySQL 兼容的基础上多了什么。本笔记围绕这个角度展开。
一、GreatDB 是什么※
1.1 产品家族※
- GreatDB Enterprise(集中式)——单机/主从/组复制形态的数据库,兼容 MySQL 8.0,金融级 OLTP。
- GreatDB Cluster(分布式)——shared-nothing 原生分布式,动态扩展、数据强一致、集群高可用。
- GreatSQL——GreatDB 的开源 MySQL 分支(GreatSQL is a MySQL branch originated from GreatDB),由万里 2021 年主导建设社区,2023 年捐赠给开放原子开源基金会孵化。开源社区版,GPLv2。
1.2 与 MySQL 的关系※
GreatDB 集中式/GreatSQL 基于 Percona Server for MySQL(即 MySQL → Percona → GreatDB 三层),100% 兼容 MySQL 8.0 的语法、协议与存储,应用可以无缝切换、无需改代码。它多出来的能力,正是相对 MySQL 社区版(甚至 MySQL 企业版)的增强,下面按高可用 / 高性能 / 高安全 / 高兼容四块讲。
二、高可用:MGR 底层深度增强(相对 MySQL 社区版)※
GreatDB 对 MGR 组复制做了算法级重构,这是它与 MySQL 社区版 MGR 最大的实现差异:
- 全新流控算法——替代 MySQL 默认流控,事务更平稳,避免高负载下剧烈抖动。
- 事务认证队列清理算法优化——解决 MySQL 原版"每 60 秒性能抖动"问题。
- 节点加入/退出机制优化——避免加/退节点时拖累整体性能。
- recovery 机制优化——修复 recovery 长时间等待、长事务导致无法选主的问题。
- 大事务传输压缩——MGR 内部同步压缩,降低带宽与延迟。
- 单节点磁盘爆满保护——不再阻塞整个集群。
2.1 MGR 新能力(用法差异)※
- 地理标签——多机房下控制选举与数据就近。
- 仲裁节点——低配节点参与多数派表决,降低三节点可用性成本。
- 读写动态 VIP——切换后 VIP 自动跟随新主,连接无需改。
- 快速单主模式——单主下更快启动与切换。
- 智能选主——GTID_FIRST 等更合理选主策略。
三、高性能:引擎与查询增强※
- Rapid 引擎——类 MySQL HeatWave 的内存查询加速,分析性能提升几个数量级(MySQL 社区版仅云上 HeatWave 有)。
- InnoDB 并行查询——轻量 OLAP,TPC-H 平均 15 倍、最高 40+ 倍(社区版仅主键扫描)。
- 并行 LOAD DATA——批量导入提升约 20+ 倍(社区版无)。
- InnoDB 事务无锁化 / 大锁拆分——OLTP 提升约 20%。
- 线程池——MySQL 仅企业版有,GreatDB 自带。
- MyRocks 引擎——GreatDB 自带,MySQL 官方发行版无;写放大敏感、压缩率高的场景。
- 异步删除大表、NUMA 亲和调度、Zstd 页透明压缩、VARCHAR/BLOB/JSON 单列压缩等。
四、高安全:国产合规能力※
- 国密算法——InnoDB 表空间国密加密(SM4 等),MySQL 无国密支持。
- 备份加密——mysqldump 逻辑备份 + CLONE 物理备份加密(社区版无)。
- 二进制日志加密、临时文件加密、强制加密——社区版均无。
- 审计(audit log 入库)、数据脱敏(基于函数/策略)——均为 MySQL 企业版才有。
五、高兼容:Oracle 兼容扩展※
- 支持常见 Oracle 数据类型、函数、SQL 语法、存储程序兼容——纯 MySQL 不具备,方便 Oracle 存量迁移。
- 对 MySQL:100% 兼容,无缝替换。
可移植性注意:Oracle 兼容语法与 GreatDB 专有特性是扩展,MySQL 侧没有对应实现。若要在 MySQL 与 GreatDB 之间来回切换,保持"纯 MySQL 方言"写法才可移植。
六、部署与选用※
- 日常用法与 MySQL 一致:SQL、主从复制、MGR 组复制的基础操作与 MySQL 文档一致,直接套用即可。具体一致性:
- 主从复制:兼容
CHANGE MASTER TO、START SLAVE等全套 MySQL 复制语法与状态变量,搭建/监控/故障处理按 MySQL 主从复制完全指南执行即可(甚至比 MySQL 8.4 更兼容旧版语法)。 - MGR 组复制:参数、
START GROUP_REPLICATION、performance_schema验证语句与 MySQL 相同,按 MGR 组复制笔记搭建即可;差异只在前文提到的增强能力(地理标签/仲裁节点/动态 VIP/快速单主/智能选主)——用这些才需要查 GreatDB 专有文档,不用就完全按 MySQL 来。 - 选 GreatDB 的理由:金融级高可用(MGR 增强)、国密合规、大数据量导入/OLAP、高并发线程池、MyRocks 压缩、Oracle 迁移。
- 继续用 MySQL 的理由:只用基础 CRUD/主从、不需要增强特性,或不想引入非官方分支。
- 迁移成本:纯 MySQL 写法几乎零成本;用了 Oracle 语法/专有特性后迁移成本上升。
参考:万里数据库官网 · GreatSQL 优势特性 · GitHub 仓库。