GreatDB

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 TOSTART SLAVE 等全套 MySQL 复制语法与状态变量,搭建/监控/故障处理按 MySQL 主从复制完全指南执行即可(甚至比 MySQL 8.4 更兼容旧版语法)。
    • MGR 组复制:参数、START GROUP_REPLICATIONperformance_schema 验证语句与 MySQL 相同,按 MGR 组复制笔记搭建即可;差异只在前文提到的增强能力(地理标签/仲裁节点/动态 VIP/快速单主/智能选主)——用这些才需要查 GreatDB 专有文档,不用就完全按 MySQL 来。
  • 选 GreatDB 的理由:金融级高可用(MGR 增强)、国密合规、大数据量导入/OLAP、高并发线程池、MyRocks 压缩、Oracle 迁移。
  • 继续用 MySQL 的理由:只用基础 CRUD/主从、不需要增强特性,或不想引入非官方分支。
  • 迁移成本:纯 MySQL 写法几乎零成本;用了 Oracle 语法/专有特性后迁移成本上升。

参考:万里数据库官网 · GreatSQL 优势特性 · GitHub 仓库

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录