§ Changes in GreatSQL 8.4.4-5 (2026-06-30)
§ 版本信息
发布时间:2026年06月30日
版本号:8.4.4-5, Revision 39b389cdf3b
下载链接:RPM包 (opens new window)、TAR包 (opens new window)、源码包 (opens new window)
§ 改进提升
GreatSQL 8.4.4-5版本在高可用、高性能、高兼容、高安全四个方面进行了多项特性增强,使得 GreatSQL 可在普通硬件上满足金融级应用场景,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。
GreatSQL 8.4.4-5版本中新增大事务binlog独立落盘优化,提升并行复制回放效率,新增向量数据类型及相似度查询支持,恢复旧版主从复制语法兼容,优化MGR多项机制,增强MGR VIP插件安全性,并修复了多个可能导致crash或数据不一致的bug。
§ 高可用
- 新增兼容特性,恢复
CHANGE MASTER TO、START SLAVE等全套旧版主从复制语法与配套状态变量、报错信息,兼容存量运维脚本。新旧复制指令并行可用,底层复制逻辑无改动,升级无需改造监控自动化工具。解决从低版本升级至8.4后旧复制管理语句执行报错问题,大幅降低数据库大版本升级改造工作量。
本特性为内核复制兼容增强层,不改动底层复制同步核心逻辑,仅在SQL解析、结果输出、错误提示外层做双向映射适配:
- 完整恢复以前高频使用的
Master/Slave复制管理SQL语法,新旧语法均可正常执行; SHOW SLAVE STATUS、SHOW MASTER STATUS输出结果兼容旧字段名、字段顺序;- 同步保留
Slave_*系列全局状态变量,与新版Replica_*变量数据实时双向同步; - 旧语法执行报错时,返回历史兼容错误码与Master/Slave风格提示文本;
- 新旧语法完全隔离互不干扰,底层复用同一套复制执行逻辑,性能无损耗、数据一致性不受影响。
复制管理语句新旧对应
| 旧版Master/Slave语法 | 新版Source/Replica标准语法 |
|---|---|
CHANGE MASTER TO | CHANGE REPLICATION SOURCE TO |
START SLAVE | START REPLICA |
STOP SLAVE | STOP REPLICA |
RESET SLAVE | RESET REPLICA |
SHOW SLAVE STATUS | SHOW REPLICA STATUS |
SHOW SLAVE HOSTS | SHOW REPLICAS |
RESET MASTER | RESET BINARY LOGS AND GTIDS |
SHOW MASTER STATUS | SHOW BINARY LOG STATUS |
SHOW MASTER LOGS | SHOW BINARY LOGS |
PURGE MASTER LOGS | PURGE BINARY LOGS |
CHANGE MASTER TO 参数映射
旧 MASTER_* 选项会自动映射为内部 SOURCE_* 参数,完整兼容:MASTER_HOST/MASTER_USER/MASTER_PASSWORD/MASTER_PORT/MASTER_AUTO_POSITION/MASTER_LOG_FILE/MASTER_LOG_POS/MASTER_CONNECT_RETRY/MASTER_RETRY_COUNT/MASTER_DELAY/SSL全套参数/压缩参数/心跳参数/公钥参数等。
详情参考:恢复部分主从复制兼容接口。
- 针对 GreatDB HA 插件改用 UDF 函数替代原来的端口通信逻辑,调用 UDF 时需要 SUPER 权限及相关 MGR 权限,同时可按需支持 SSL 加密,兼顾 HA 插件的功能及通信安全。详情参考:MGR节点内置VIP。
- 修改
performance_schema.replication_group_member_stats系统表,新增SECOND_BEHIND_GROUP字段,用于记录 MGR 节点间复制延迟时间状态。 - 主从复制中针对大批量 DML 操作时如果发生
1032 / duplicate-key错误,在以前缺乏精确定位能力,调研目标是增强错误日志能力以输出不一致数据行,降低运维排查成本。 - 在 MGR 节点重启自动加入失败的场景下,由于
super_read_only未保持开启导致节点仍可写入数据,从而引发数据不一致与后续无法加入复制组的问题,因此需要在加入失败时也强制保持super_read_only=ON以避免异常写入。 - 在 MGR 自动重加组及手动启动流程中,XCom 线程已退出后仍继续处于
Wait for view modification超时等待已无实际意义,因此可优化为在确认 XCom 退出后提前结束START GROUP_REPLICATION或auto-rejoin流程,以减少无效等待并提升重入效率与错误返回及时性。
更多信息详见文档:高可用。
§ 高性能
- 新增大事务 binlog 独立落盘特性,通过重构 binlog cache 文件结构、直接 rename 落盘等核心改造,避免大事务提交时 binlog 二次写入的高I/O开销。该特性可降低 30%~70% 的大事务提交延迟,提升 10%~40% 的高并发TPS,保障系统稳定性。详情参考:大事务 binlog 独立落盘。
- 优化了主从/组复制中从节点的并行复制回放机制,将冲突事务的等待逻辑从协调线程下沉至 worker 线程,通过新增 need_wait 标记、worker 等待与唤醒机制,配合设置参数
replica_parallel_wait_mode=WAIT_ON_WORKER_THREAD,有效减少调度阻塞,提升备节点并行回放吞吐能力,降低复制延迟,增强集群高可用稳定性。详情参考:并行复制回放优化。 - 新增SQL Digest维度的执行计划变更异常捕获功能,可持续采集并缓存执行计划基线信息,通过差分比对识别执行计划变化及存疑SQL,解决数据库重启/升级后执行计划漂移不可见等问题。该功能基于插件化架构,采用内存缓存+异步持久化设计,保障主链路性能不受影响,同时支持异常容错、权限管控,可通过参数开关控制采集与持久化行为,兼容现有Digest体系及MySQL协议,仅部分引擎/特殊SQL存在使用限制。详情参考:执行计划变更异常捕获。
- 新增
VECTOR向量原生数据类型,配套字符串互转、维度查询、余弦/欧氏/内积三类距离计算SQL函数,支持 Turbo 引擎向量化并行加速向量相似度查询;完全兼容binlog、xtrabackup备份,JDBC/ODBC/Python驱动配套适配版本有明确要求,同时明确向量字段使用约束与 Turbo 自动降级机制,支撑AI向量检索类业务场景。详情参考:Turbo 引擎向量相似度查询。
§ 其他
- 在
mysqlbinlog的输出中,加上参数-vvv后,可以补充展示每个事务的实际影响行数affected rows,增强 binlog 解析的可观测性与运维统计能力。
§ 缺陷修复
- 修复
Turbo引擎类型映射时,对于不支持的类型,会抛出异常,但未被捕获导致 coredump 问题。 - 修复
Turbo查询 Kill 时可能无响应的问题。 - 修复
Rapid和Turbo引擎中处理负的Time值的时候,忽略负号导致的查询错误问题。 - 修复新节点加入 MGR 的过程中,当主节点有较大压力负载的情况下,可能长时间处于
Recovery状态的问题。 - 修复多节点 MGR 场景中,当发生网络故障并恢复后,个别节点无法恢复的问题。
- 修复在 MGR 中进行 Relay Log 批量落盘后可能存在
RECEIVED_TRANSACTION_SET断点的问题。 - 修复在 MGR 中节点因故存在延迟,使用
BEFORE读写级别时,启动新事务进行查询、修改时,新事务的第一条执行语句会阻塞;此时,若用户手动执行STOP GROUP_REPLICATION停止该节点的组复制,会导致事务语句以及STOP GROUP_REPLICATION操作可能都被阻塞的问题。 - 修复 Clone 执行增量备份任务时如果同时有大量事务执行,可能失败甚至数据丢失的问题。
- 修复视图语句使用(+)语法可能导致报错甚至coredump问题。
- 修复服务端开启空串模式(
EMPTYSTRING_EQUAL_NULL)后执行mysqldump提示设置''模式失败问题。 - 修复在游标使用
BULK INTO写入嵌套表或关联数组时可能发生异常的问题。
§ 注意事项
§ 升级/降级到 GreatSQL 8.4.4-5
§ 升级到 GreatSQL 8.4.4-5
如果是 GreatSQL 5.7 系列版本,可以直接在原来的
datadir基础上,修改basedir后,原地(in-place)启动 GreatSQL 8.0.32-27 版本后,先原地升级到 GreatSQL 8.0.32-27 版本。再继续在该datadir基础上升级,即修改basedir指向 GreatSQL 8.4.4-5 新版本,再次进行原地升级。需要注意的是,从 5.7 版本升级到 8.0 版本,再升级到 8.4 版本后,数据库中的账号仍采用mysql_native_password密码验证插件。当最终升级到 8.4 版本后,需要修改 my.cnf 配置文件,加上mysql_native_password=1,以保证原有的账号能正常登录。如果是 GreatSQL 8.0/8.4 系列版本,并且没有使用 Rapid 引擎,则可以直接在原来的**
datadir** 基础上,修改**basedir** 后,原地(in-place)启动 GreatSQL 8.4.4-5 后会完成自动升级。如果是 GreatSQL 8.0/8.4 系列版本且已启用 Rapid 引擎,这种情况下无法原地升级,需要卸载所有 Rapid 引擎表,删除 Rapid 数据文件,才可以在原来的
datadir基础上,修改basedir后,原地(in-place)启动 GreatSQL 8.4.4-5 后进行自动升级。新版本实例启动后,对所有 Rapid 引擎表执行ALTER TABLE SECONDARY_LOAD完成全量数据导入,再执行SELECT START_SECONDARY_ENGINE_INCREMENT_LOAD_TASK()启动增量导入任务,完成 Rapid 引擎表升级工作。下面是一个升级参考过程:1. 查询并记录所有Rapid引擎表
可以执行下面的SQL,查询当前有哪些表使用了Rapid引擎:
greatsql> SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS FROM information_schema.TABLES WHERE CREATE_OPTIONS LIKE '%Rapid%'; +--------------+----------------+------------+ | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | +--------------+----------------+------------+ | tpch100g | customer | 14854987 | | tpch100g | lineitem | 582868392 | | tpch100g | nation | 25 | | tpch100g | orders | 148492582 | | tpch100g | part | 19943155 | | tpch100g | partsupp | 79832625 | | tpch100g | region | 5 | | tpch100g | supplier | 989416 | +--------------+----------------+------------+1
2
3
4
5
6
7
8
9
10
11
12
132. 卸载所有Rapid表
以其中一个表为例:
greatsql> ALTER TABLE tpch100g.customer SECONDARY_UNLOAD;13. 正常停止GreatSQL实例进程
在停止GreatSQL实例进程前,先修改
innodb_fast_shutdown=0后再执行SHUTDOWN停止实例greatsql> SET GLOBAL innodb_fast_shutdown=0; greatsql> SHUTDOWN;1
24. 删除旧的Rapid引擎数据文件
cd /data/GreatSQL && rm -f duckdb*15. 修改
my.cnf配置文件中的basedir参数,指向GreatSQL 8.4.4-5新版本#my.cnf [mysqld] basedir=/usr/local/GreatSQL-8.4.4-5-Linux-glibc2.28-x86_641
2
3并确保参数
upgrade不是设置为NONE。6. 启动GreatSQL 8.4.4-5新版本实例
systemctl start greatsql17. 重新安装Rapid引擎
greatsql> INSTALL PLUGIN rapid SONAME 'ha_rapid.so';1此时有可能提示错误
ERROR 1125 (HY000): Function 'rapid' already exists,可以不用理会,这是以为在重启前没有卸载Rapid引擎。8. 对所有Rapid引擎表做一次全量数据导入
greatsql> ALTER TABLE tpch100g.customer SECONDARY_ENGINE = rapid; greatsql> ALTER TABLE tpch100g.customer SECONDARY_LOAD;1
2其他表重复执行上述操作,直到全部完成。
小贴士
由于在升级前没有去掉该表的
SECONDARY_ENGINE=rapid属性,所以无需重新设置。如果在升级前卸载所有Rapid引擎表,则需要重新设置。9. 再次启动增量导入任务
greatsql> SELECT START_SECONDARY_ENGINE_INCREMENT_LOAD_TASK('tpch100g', 'customer');1这就完成Rapid引擎表的升级操作了。
如果是 MySQL 5.7 或 Percona Server 5.7 等系列版本,可以直接在原来的
datadir基础上,修改basedir后,原地(in-place)启动 GreatSQL 8.0.32-27 版本后,确认升级成功后,再次在原来datadir基础上继续升级,即修改basedir指向 GreatSQL 8.4.4-5 新版本,之后就能完成自动升级。需要注意的是,从 5.7 版本升级到 8.0 版本,再升级到 8.4 版本后,数据库中的账号仍采用mysql_native_password密码验证插件。当最终升级到 8.4 版本后,需要修改 my.cnf 配置文件,加上mysql_native_password=1,以保证原有的账号能正常登录。如果是 MySQL 8.0 或 Percona Server 8.0 等系列版本,则可以直接在原来的
datadir基础上,修改basedir后,原地(in-place)启动 GreatSQL 8.4.4-5 后会完成自动升级。其他情况下,最好采用导入逻辑备份文件方式升级到 GreatSQL 8.4.4-5 版本。
在以上几个原地升级场景中,务必保证my.cnf中参数upgrade不能设置为NONE,可以设置为默认的AUTO或FORCE。例如:
#my.cnf
[mysqld]
upgrade = AUTO
2
3
更多迁移升级方案请参考:迁移升级。
§ 降级到 GreatSQL 8.4.4-5
如果是要从 MySQL/Percona 8.4 系列较高的小版本降级到 GreatSQL 8.4.4-5 版本,可以采用原地降级方式快速完成版本降级操作。即可以直接在原来的 datadir 基础上,修改 basedir 后,并增加设置参数upgrade=FORCE,原地(in-place)启动 GreatSQL 8.4.4-5 后会完成自动降级。
如果是要从 MySQL/Percona 9.0 及之后的版本降级到 GreatSQL 8.4.4-5 版本,则需要采取逻辑备份 + 逻辑导入方式完成降级操作,并且在逻辑备份导入完成后的首次重启时,务必设置 upgrade=FORCE 强制升级所有数据表,包括系统表。
降级过程操作大致如下所示:
1. 在高版本中逻辑备份全量数据
mysqldump -S/data/MySQL/mysql.sock -A --triggers --routines --events --single-transaction > /data/backup/fulldump.sql
2. 在GreatSQL 8.4.4-5版本环境中导入逻辑备份文件,完成逻辑恢复
mysql -S/data/GreatSQL/mysql.sock -f < /data/backup/fulldump.sql
3. 修改my.cnf,确保设置upgrade=FORCE
#my.cnf
[mysqld]
upgrade = FORCE
2
3
4. 重启GreatSQL,降级完成
systemctl restart greatsql
重启过程中,可以看到日志有类似下面的强制降级过程
[Note] [MY-013387] [Server] Upgrading system table data.
[Note] [MY-013385] [Server] Upgrading the sys schema.
[Note] [MY-013400] [Server] Upgrade of help tables started.
[Note] [MY-013400] [Server] Upgrade of help tables completed.
[Note] [MY-013394] [Server] Checking 'mysql' schema.
[Note] [MY-013394] [Server] Checking 'sys' schema.
[System] [MY-014064] [Server] Server downgrade from '80406' to '80404' started.
[System] [MY-014064] [Server] Server downgrade from '80406' to '80404' completed.
2
3
4
5
6
7
8
如果不设置 upgrade = FORCE 强制升级所有表,有可能发生系统表 mysql.procs_priv 损坏错误,在创建用户时可能会报告类似下面的错误:
greatsql> create user tpch identified by 'tpch';
ERROR 1728 (HY000): Cannot load from mysql.procs_priv. The table is probably corrupted
2
§ GreatSQL vs MySQL
| 1.主要特性 | GreatSQL 8.4.4-5 | MySQL 8.4.4 |
|---|---|---|
| 开源 | ✔️ | ✔️ |
| ACID 完整性 | ✔️ | ✔️ |
| MVCC 特性 | ✔️ | ✔️ |
| 支持行锁 | ✔️ | ✔️ |
| Crash 自动修复 | ✔️ | ✔️ |
| 表分区(Partitioning) | ✔️ | ✔️ |
| 视图(Views) | ✔️ | ✔️ |
| 子查询(Subqueries) | ✔️ | ✔️ |
| 触发器(Triggers) | ✔️ | ✔️ |
| 存储程序(Stored Programs) | ✔️ | ✔️ |
| 外键(Foreign Keys) | ✔️ | ✔️ |
| 窗口函数(Window Functions) | ✔️ | ✔️ |
| 通用表表达式 CTE | ✔️ | ✔️ |
| 地理信息(GIS) | ✔️ | ✔️ |
| 基于 GTID 的复制 | ✔️ | ✔️ |
| 组复制(MGR) | ✔️ | ✔️ |
| MyRocks 引擎 | ✔️ | ❌ |
| 支持龙芯架构 | ✔️ | ❌ |
| 支持RISC-V架构 | ✔️ | ❌ |
| 恢复部分主从复制兼容接口 | ✔️ | ❌ |
| 2. 性能提升扩展 | GreatSQL 8.4.4-5 | MySQL 8.4.4 |
| Rapid 引擎 | ✔️ | 仅云上HeatWave |
| Turbo 引擎 | ✔️ | ❌ |
| Turbo 引擎向量相似度查询 | ✔️ | ❌ |
| 大事务binlog独立落盘优化 | ✔️ | ❌ |
| 并行复制回放优化 | ✔️ | ❌ |
| 执行计划变更异常捕获 | ✔️ | ❌ |
| NUMA 亲和性优化 | ✔️ | ❌ |
| 非阻塞式 DDL | ✔️ | ❌ |
| 无主键表导入优化 | ✔️ | ❌ |
| 并行 LOAD DATA | ✔️ | ❌ |
| InnoDB 事务 ReadView 无锁优化 | ✔️ | ❌ |
| InnoDB 事务大锁拆分优化 | ✔️ | ❌ |
| InnoDB Page压缩支持Zstd | ✔️ | ❌ |
| InnoDB 资源组 | ✔️ | ✔️ |
| 自定义 InnoDB 页大小 | ✔️ | ✔️ |
| Contention-Aware Transaction Scheduling | ✔️ | ✔️ |
| InnoDB Mutexes 拆分优化 | ✔️ | ❌ |
| MEMORY 引擎优化 | ✔️ | ❌ |
| InnoDB Flushing 优化 | ✔️ | ❌ |
| 并行 Doublewrite Buffer | ✔️ | ✔️ |
| InnoDB 快速索引创建优化 | ✔️ | ❌ |
| VARCHAR/BLOB/JSON 类型存储单列压缩 | ✔️ | ❌ |
| 数据字典中存储单列压缩信息 | ✔️ | ❌ |
| 3. 面向开发者提升改进 | GreatSQL 8.4.4-5 | MySQL 8.4.4 |
| X API | ✔️ | ✔️ |
| JSON | ✔️ | ✔️ |
| NoSQL Socket-Level接口 | ✔️ | ✔️ |
| InnoDB 全文搜索改进 | ✔️ | ❌ |
| 更多 Hash/Digest 函数 | ✔️ | ❌ |
| Oracle 兼容-数据类型 | ✔️ | ❌ |
| Oracle 兼容-函数 | ✔️ | ❌ |
| Oracle 兼容-SQL语法 | ✔️ | ❌ |
| Oracle 兼容-存储程序 | ✔️ | ❌ |
| 4. 基础特性提升改进 | GreatSQL 8.4.4-5 | MySQL 8.4.4 |
| MGR 提升-地理标签 | ✔️ | ❌ |
| MGR 提升-仲裁节点 | ✔️ | ❌ |
| MGR 提升-读写节点绑定VIP | ✔️ | ❌ |
| MGR 提升-快速单主模式 | ✔️ | ❌ |
| MGR 提升-智能选主机制 | ✔️ | ❌ |
| MGR 提升-全新流控算法 | ✔️ | ❌ |
| MGR 提升-网络分区异常处理 | ✔️ | ❌ |
| MGR 提升-节点异常退出处理 | ✔️ | ❌ |
| MGR 提升-节点磁盘满处理 | ✔️ | ❌ |
| MGR 提升-自动选择 donor 节点 | ✔️ | ❌ |
| MGR 提升-大事务压缩优化 | ✔️ | ❌ |
| MGR 提升-查看复制延迟秒数 | ✔️ | ❌ |
| Clone 增量备份 | ✔️ | ❌ |
| Clone 备份压缩 | ✔️ | ❌ |
| Binlog 读取限速 | ✔️ | ❌ |
| information_schema 表数量 | 95 | 65 |
| 全局性能和状态指标 | 853 | 434 |
| 优化器直方图(Histograms) | ✔️ | ✔️ |
| Per-Table 性能指标 | ✔️ | ❌ |
| Per-Index 性能指标 | ✔️ | ❌ |
| Per-User 性能指标 | ✔️ | ❌ |
| Per-Client 性能指标 | ✔️ | ❌ |
| Per-Thread 性能指标 | ✔️ | ❌ |
| 全局查询相应耗时统计 | ✔️ | ❌ |
| SHOW ENGINE INNODB STATUS 增强 | ✔️ | ❌ |
| 回滚段信息增强 | ✔️ | ❌ |
| 临时表信息增强 | ✔️ | ❌ |
| 用户统计信息增强 | ✔️ | ❌ |
| Slow log 信息增强 | ✔️ | ❌ |
| 5.安全性提升 | GreatSQL 8.4.4-5 | MySQL 8.4.4 |
| 国密支持 | ✔️ | ❌ |
| 备份加密 | ✔️ | ❌ |
| 审计 | ✔️ | 仅企业版 |
| 数据脱敏 | ✔️ | ❌ |
| SQL Roles | ✔️ | ✔️ |
| SHA-2 密码Hashing | ✔️ | ✔️ |
| 密码轮换策略 | ✔️ | ✔️ |
| PAM 认证插件 | ✔️ | 仅企业版 |
| Keyring 存储在文件中 | ✔️ | ✔️ |
| Keyring 存储在Hashicorp Vault中 | ✔️ | 仅企业版 |
| InnoDB 数据加密 | ✔️ | ✔️ |
| InnoDB 日志加密 | ✔️ | ✔️ |
| InnoDB 各种表空间文件加密 | ✔️ | ✔️ |
| 二进制日志加密 | ✔️ | ❌ |
| 临时文件加密 | ✔️ | ❌ |
| 强制加密 | ✔️ | ❌ |
| 6. 运维便利性提升 | GreatSQL 8.4.4-5 | MySQL 8.4.4 |
| DDL 原子性 | ✔️ | ✔️ |
| 数据字典存储 InnoDB 表 | ✔️ | ✔️ |
| 快速 DDL | ✔️ | ✔️ |
| SET PERSIST | ✔️ | ✔️ |
| 不可见索引 | ✔️ | ✔️ |
| 线程池(Threadpool) | ✔️ | 仅企业版 |
| 备份锁 | ✔️ | ❌ |
| SHOW GRANTS 扩展 | ✔️ | ❌ |
| 表损坏动作扩展 | ✔️ | ❌ |
| 杀掉不活跃事务 | ✔️ | ❌ |
| START TRANSACTION WITH CONSISTENT SNAPSHOT 扩展 | ✔️ | ❌ |
GreatSQL 8.4.4-5 基于 Percona Server for MySQL 8.4.4-4 版本,它在 MySQL 8.4.4 基础上做了大量的改进和提升以及众多新特性,详情请见:Percona Server for MySQL feature comparison (opens new window),这其中包括线程池、审计、数据脱敏等 MySQL 企业版才有的特性,以及 performance_schema 提升、information_schema 提升、性能和可扩展性提升、用户统计增强、PROCESSLIST 增强、Slow Log 增强等大量改进和提升,这里不一一重复列出。
§ GreatSQL Release Notes
§ GreatSQL 8.4
§ GreatSQL 8.0
- Changes in GreatSQL 8.0.32-27 (2025-3-10)
- Changes in GreatSQL 8.0.32-26 (2024-8-5)
- Changes in GreatSQL 8.0.32-25 (2023-12-28)
- Changes in GreatSQL 8.0.32-24 (2023-6-5)
- Changes in GreatSQL 8.0.25-17 (2023-3-13)
- Changes in GreatSQL 8.0.25-16 (2022-5-16)
- Changes in GreatSQL 8.0.25-15 (2021-8-26)
§ GreatSQL 5.7
扫码关注微信公众号
