
新版本发布会
 版本信息 特性增强 GreatSQL 8.4.4.-4版本在Percona Server for MySQL 8.4.4-4版本的基础上,主要在 高可用、高性能、高兼容、高安全四个方面进行了多项特性增强,使得 GreatSQL 可在普通硬件上满足金融级应用场景,可作为 MySQL 或 Percona Server for MySQL 的理想可选替换。 高可用 针对 MGR 及主从复制进行了大量改进和提升工作,支持 地理标签、仲裁节点、读写动态 VIP、快速单主模式、智能选主 等特性,并针对 流控算法、事务认证队列清理算法、节点加入&退出机制、recovery机制、大事务传输压缩等多个 MGR 底层工作机制算法进行深度优化,进一步提升优化了 MGR 的高可用保障及性能稳定性。 更多信息详见文档: 高性能 相对 MySQL 及 Percona Server For MySQL 的性能表现更稳定优异,支持 Rapid 引擎、Turbo引擎、事务无锁化、并行 LOAD DATA、异步删除大表、线程池、非阻塞式 DDL、NUMA 亲和调度优化 等特性,在 TPC-C 测试中相对 MySQL 性能提升超过 30% - https://greatsql.cn/docs/8.4.4-4/10-optimize/3-5-benchmark-greatsql-vs-mysql-tpcc-report.html
在 TPC-H 测试中的性能表现是 MySQL 的十几倍甚至上百倍 https://greatsql.cn/docs/8.4.4-4/10-optimize/3-3-benchmark-greatsql-tpch-report.html 支持 大规模并行、基于内存查询、高压缩比的高性能 Rapid 引擎,可将数据分析性能提升几个数量级。 支持 高性能并行查询引擎Turbo,使GreatSQL具备多线程并发的向量化实时查询功能。 优化 InnoDB 事务系统,实现了大锁拆分及无锁化等多种优化方案,OLTP 场景整体性能提升约 20%。 支持 并行 LOAD DATA,适用于频繁导入大批量数据的应用场景,性能可提升约 20 多倍;对于无显式定义主键的场景亦有优化提升。 支持 异步删除大表,提高 InnoDB 引擎运行时性能的稳定性。 支持 线程池,降低了线程创建和销毁的代价,保证高并发下,性能稳定不会明显衰退。 支持 非阻塞式 DDL,可以避免数据库因为必须尽快完成 DDL 操作而导致业务请求大量被阻塞的问题。 支持 NUMA 亲和性优化,通过 NUMA 亲和性调度优化,将前端用户线程和后台线程绑定到固定 NUMA 节点上以提升线程处理性能。
更多信息详见文档: 高兼容 GreatSQL 实现 100% 完全兼容 MySQL 及 Percona Server For MySQL 语法,支持大多数常见 Oracle 语法,包括数据类型兼容、函数兼容、SQL 语法兼容、存储程序兼容等众多兼容扩展用法。 更多信息详见文档: 高安全 GreatSQL 支持逻辑备份加密、CLONE 备份加密、审计、表空间国密加密、敏感数据脱敏、存储登录历史等多个安全提升特性,进一步保障业务数据安全,更适用于金融级应用场景。 - 支持
mysqldump 逻辑备份加密 ,提供了利用 mysqldump 逻辑备份的安全加密需求。 - 支持
Clone 备份加密 ,提供了利用 Clone 物理备份的安全加密需求。 - 支持
审计功能 ,及时记录和发现未授权或不安全行为。 - 支持
InnoDB 表空间国密加密算法 ,确保重要数据的加密安全。 - 支持
基于函数和策略的两种数据脱敏 工作方式,保障敏感用户数据查询结果保密性。
通过上述多个安全提升特性,进一步保障业务数据安全。 更多信息详见文档: 其他 - 支持 Clone 在线全量热备、增备及恢复,结合 Binlog 可实现恢复到指定时间点。此外,Clone 备份还支持压缩功能。
- https://greatsql.cn/docs/8.4.4-4/5-enhance/5-5-clone-compressed-and-incrment-backup.html
- 支持 InnoDB Page透明压缩采用Zstd算法,进一步提高数据压缩率,尤其是当有大量长文本重复数据时。
- https://greatsql.cn/docs/8.4.4-4/5-enhance/5-5-innodb-page-compression.html
注意事项 从8.0升级到8.4版本,对现有运维管控系统最大的影响是,原先包含 MASTER/SLAVE 关键字的指令不再可用,相应的主要改动详见下表 [td]旧指令 | 新指令 | START SLAVE | START REPLICA | STOP SLAVE | STOP REPLICA | SHOW SLAVE STATUS | SHOW REPLICA STATUS | SHOW SLAVE HOSTS | SHOW REPLICAS | RESET SLAVE | RESET REPLICA | CHANGE MASTER TO | CHANGE REPLICATION SOURCE TO | RESET MASTER | RESET BINARY LOGS AND GTIDS | SHOW MASTER STATUS | SHOW BINARY LOG STATUS | PURGE MASTER LOGS | PURGE BINARY LOGS | SHOW MASTER LOGS | SHOW BINARY LOGS |
此外,原来在 CHANGE MASTER(新的指令 CHANGE REPLICATION SOURCE TO) 以及 START SLAVE(新的指令 START REPLICA) 中相关的参数变量也同样发生变化,详见下表 [td]旧参数名 | 新参数名 | MASTER_AUTO_POSITION | SOURCE_AUTO_POSITION | MASTER_HOST | SOURCE_HOST | MASTER_BIND | SOURCE_BIND | MASTER_USER | SOURCE_USER | MASTER_PASSWORD | SOURCE_PASSWORD | MASTER_PORT | SOURCE_PORT | MASTER_CONNECT_RETRY | SOURCE_CONNECT_RETRY | MASTER_RETRY_COUNT | SOURCE_RETRY_COUNT | MASTER_DELAY | SOURCE_DELAY | MASTER_SSL | SOURCE_SSL | MASTER_SSL_CA | SOURCE_SSL_CA | MASTER_SSL_CAPATH | SOURCE_SSL_CAPATH | MASTER_SSL_CIPHER | SOURCE_SSL_CIPHER | MASTER_SSL_CRL | SOURCE_SSL_CRL | MASTER_SSL_CRLPATH | SOURCE_SSL_CRLPATH | MASTER_SSL_KEY | SOURCE_SSL_KEY | MASTER_SSL_VERIFY_SERVER_CERT | SOURCE_SSL_VERIFY_SERVER_CERT | MASTER_TLS_VERSION | SOURCE_TLS_VERSION | MASTER_TLS_CIPHERSUITES | SOURCE_TLS_CIPHERSUITES | MASTER_SSL_CERT | SOURCE_SSL_CERT | MASTER_PUBLIC_KEY_PATH | SOURCE_PUBLIC_KEY_PATH | GET_MASTER_PUBLIC_KEY | GET_SOURCE_PUBLIC_KEY | MASTER_HEARTBEAT_PERIOD | SOURCE_HEARTBEAT_PERIOD | MASTER_COMPRESSION_ALGORITHMS | SOURCE_COMPRESSION_ALGORITHMS | MASTER_ZSTD_COMPRESSION_LEVEL | SOURCE_ZSTD_COMPRESSION_LEVEL | MASTER_LOG_FILE | SOURCE_LOG_FILE | MASTER_LOG_POS | SOURCE_LOG_POS |
执行 SQL 命令 SHOW [GLOBAL] STATUS 的结果中,也有部分状态变量发生变化,详见下表 [td]旧状态变量名 | 新状态变量名 | Com_slave_start | Com_replica_start | Com_slave_stop | Com_replica_stop | Com_show_slave_status | Com_show_replica_status | Com_show_slave_hosts | Com_show_replicas | Com_show_master_status | Com_show_binary_log_status | Com_change_master | Com_change_replication_source |
升级/降级到 GreatSQL 8.4.4-4 升级到 GreatSQL 8.4.4-4 如果是 GreatSQL 5.7 等系列版本,可以直接在原来的 datadir 基础上,修改 basedir 后,原地(in-place)启动 GreatSQL 8.0.32-27 版本后,先原地升级到 GreatSQL 8.0.32-27 版本。再继续在该 datadir 基础上升级,即修改 basedir 指向 GreatSQL 8.4.4-4 新版本,再次进行原地升级。需要注意的是,从 5.7 版本升级到 8.0 版本,再升级到 8.4 版本后,数据库中的账号仍采用 mysql_native_password 密码验证插件。当最终升级到 8.4 版本后,需要修改 my.cnf 配置文件,加上 mysql_native_password=1,以保证原有的账号能正常登录。 如果是 GreatSQL 8.0 等系列版本,并且没有使用 Rapid 引擎,则可以直接在原来的 datadir 基础上,修改 basedir 后,原地(in-place)启动 GreatSQL 8.4.4-4 后会完成自动升级。 如果旧版本是 GreatSQL 8.0.32-27 且已启用 Rapid 引擎,可以直接在原来的 datadir 基础上,修改 basedir 后,原地(in-place)启动 GreatSQL 8.4.4-4 后会完成自动升级。 如果旧版本是 GreatSQL 8.0.32-25 或 8.0.32-26 且已启用 Rapid 引擎,这种情况下无法原地升级,需要卸载所有 Rapid 引擎表,删除 Rapid 数据文件,才可以在原来的 datadir 基础上,修改 basedir 后,原地(in-place)启动 GreatSQL 8.4.4-4 后进行自动升级。新版本实例启动后,对所有 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 |
+--------------+----------------+------------+
2. 正常停止GreatSQL实例进程 在停止GreatSQL实例进程前,先修改innodb_fast_shutdown=0后再执行SHUTDOWN停止实例 greatsql> SET GLOBAL innodb_fast_shutdown=0;
greatsql> SHUTDOWN;
3. 删除旧的Rapid引擎数据文件 cd /data/GreatSQL && rm -f duckdb*
4. 修改my.cnf配置文件中的basedir参数,指向GreatSQL 8.4.4-4新版本 [color=rgb(87, 107, 149) !important][url=]#my[/url].cnf
[mysqld]
basedir=/usr/local/GreatSQL-8.4.4-4-Linux-glibc2.28-x86_64
并确保参数upgrade不是设置为NONE。 5. 启动GreatSQL 8.4.4-4新版本实例 systemctl start greatsql
6. 重新安装Rapid引擎 greatsql> INSTALL PLUGIN rapid SONAME 'ha_rapid.so';
7. 对Rapid引擎表做一次全量数据导入 greatsql> ALTER TABLE test.t1 SECONDARY_LOAD;
tip 小贴士:由于在升级前没有去掉该表的SECONDARY_ENGINE=rapid属性,所以无需重新设置。如果在升级前卸载所有Rapid引擎表,则需要重新设置。
8. 再次启动增量导入任务 greatsql> SELECT START_SECONDARY_ENGINE_INCREMENT_LOAD_TASK('test', 't1');
这就完成Rapid引擎表的升级操作了。 如果是 MySQL 5.7 或 Percona Server 5.7 等系列版本,可以直接在原来的 datadir 基础上,修改 basedir 后,原地(in-place)启动 GreatSQL 8.0.32-27 版本后,确认升级成功后,再次在原来 datadir 基础上继续升级,即修改 basedir 指向 GreatSQL 8.4.4-4 新版本,之后就能完成自动升级。需要注意的是,从 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-4 后会完成自动升级。 其他情况下,最好采用导入逻辑备份文件方式升级到 GreatSQL 8.4.4-4 版本。
在以上几个原地升级场景中,务必保证my.cnf中参数upgrade不能设置为NONE,可以设置为默认的AUTO或FORCE。例如: [color=rgb(87, 107, 149) !important][url=]#my[/url].cnf
[mysqld]
upgrade = AUTO
更多迁移升级方案请参考: 降级到 GreatSQL 8.4.4-4 如果是要从 MySQL/Percona 8.4 系列较高的小版本降级到 GreatSQL 8.4.4-4 版本,可以采用原地降级方式快速完成版本降级操作。即可以直接在原来的 datadir 基础上,修改 basedir 后,并增加设置参数upgrade=FORCE,原地(in-place)启动 GreatSQL 8.4.4-4 后会完成自动降级。 如果是要从 MySQL/Percona 9.0 及之后的版本降级到 GreatSQL 8.4.4-4 版本,则需要采取逻辑备份 + 逻辑导入方式完成降级操作,并且在逻辑备份导入完成后的首次重启时,务必设置 upgrade=FORCE 强制升级所有数据表,包括系统表。 降级过程操作大致如下所示: 1. 在高版本中逻辑备份全量数据 mysqldump -S/data/MySQL/mysql.sock -A --triggers --routines --events --single-transaction > /data/backup/fulldump.sql
2. 在GreatSQL 8.4.4-4版本环境中导入逻辑备份文件,完成逻辑恢复 mysql -S/data/GreatSQL/mysql.sock -f < /data/backup/fulldump.sql
3. 修改my.cnf,确保设置upgrade=FORCE [color=rgb(87, 107, 149) !important][url=]#my[/url].cnf
[mysqld]
upgrade = FORCE
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.
如果不设置 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
GreatSQL vs MySQL [td]1.主要特性 | GreatSQL 8.4.4-4 | MySQL 8.4.4 | 开源 | ✔️ | ✔️ | ACID 完整性 | ✔️ | ✔️ | MVCC 特性 | ✔️ | ✔️ | 支持行锁 | ✔️ | ✔️ | Crash 自动修复 | ✔️ | ✔️ | 表分区(Partitioning) | ✔️ | ✔️ | 视图(Views) | ✔️ | ✔️ | 子查询(Subqueries) | ✔️ | ✔️ | 触发器(Triggers) | ✔️ | ✔️ | 存储程序(Stored Programs) | ✔️ | ✔️ | 外键(Foreign Keys) | ✔️ | ✔️ | 窗口函数(Window Functions) | ✔️ | ✔️ | 通用表表达式 CTE | ✔️ | ✔️ | 地理信息(GIS) | ✔️ | ✔️ | 基于 GTID 的复制 | ✔️ | ✔️ | 组复制(MGR) | ✔️ | ✔️ | MyRocks 引擎 | ✔️ | ❌ | 支持龙芯架构 | ✔️ | ❌ | 2. 性能提升扩展 | GreatSQL 8.4.4-4 | MySQL 8.4.4 | Rapid 引擎 | ✔️ | 仅云上HeatWave | Turbo 引擎 | ✔️ | ❌ | 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-4 | MySQL 8.4.4 | X API | ✔️ | ✔️ | JSON | ✔️ | ✔️ | NoSQL Socket-Level接口 | ✔️ | ✔️ | InnoDB 全文搜索改进 | ✔️ | ❌ | 更多 Hash/Digest 函数 | ✔️ | ❌ | Oracle 兼容-数据类型 | ✔️ | ❌ | Oracle 兼容-函数 | ✔️ | ❌ | Oracle 兼容-SQL语法 | ✔️ | ❌ | Oracle 兼容-存储程序 | ✔️ | ❌ | 4. 基础特性提升改进 | GreatSQL 8.4.4-4 | MySQL 8.4.4 | MGR 提升-地理标签 | ✔️ | ❌ | MGR 提升-仲裁节点 | ✔️ | ❌ | MGR 提升-读写节点绑定VIP | ✔️ | ❌ | MGR 提升-快速单主模式 | ✔️ | ❌ | MGR 提升-智能选主机制 | ✔️ | ❌ | MGR 提升-全新流控算法 | ✔️ | ❌ | MGR 提升-网络分区异常处理 | ✔️ | ❌ | MGR 提升-节点异常退出处理 | ✔️ | ❌ | MGR 提升-节点磁盘满处理 | ✔️ | ❌ | MGR 提升-自动选择 donor 节点 | ✔️ | ❌ | 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-4 | MySQL 8.4.4 | 国密支持 | ✔️ | ❌ | 备份加密 | ✔️ | ❌ | 审计 | ✔️ | 仅企业版 | 数据脱敏 | ✔️ | ❌ | SQL Roles | ✔️ | ✔️ | SHA-2 密码Hashing | ✔️ | ✔️ | 密码轮换策略 | ✔️ | ✔️ | PAM 认证插件 | ✔️ | 仅企业版 | Keyring 存储在文件中 | ✔️ | ✔️ | Keyring 存储在Hashicorp Vault中 | ✔️ | 仅企业版 | InnoDB 数据加密 | ✔️ | ✔️ | InnoDB 日志加密 | ✔️ | ✔️ | InnoDB 各种表空间文件加密 | ✔️ | ✔️ | 二进制日志加密 | ✔️ | ❌ | 临时文件加密 | ✔️ | ❌ | 强制加密 | ✔️ | ❌ | 6. 运维便利性提升 | GreatSQL 8.4.4-4 | MySQL 8.4.4 | DDL 原子性 | ✔️ | ✔️ | 数据字典存储 InnoDB 表 | ✔️ | ✔️ | 快速 DDL | ✔️ | ✔️ | SET PERSIST | ✔️ | ✔️ | 不可见索引 | ✔️ | ✔️ | 线程池(Threadpool) | ✔️ | 仅企业版 | 备份锁 | ✔️ | ❌ | SHOW GRANTS 扩展 | ✔️ | ❌ | 表损坏动作扩展 | ✔️ | ❌ | 杀掉不活跃事务 | ✔️ | ❌ | START TRANSACTION WITH CONSISTENT SNAPSHOT 扩展 | ✔️ | ❌ |
GreatSQL 8.4.4-4 基于 Percona Server for MySQL 8.4.4-4 版本,它在 MySQL 8.4.4 基础上做了大量的改进和提升以及众多新特性,详情请见: 这其中包括线程池、审计、数据脱敏等 MySQL 企业版才有的特性,以及 performance_schema 提升、information_schema 提升、性能和可扩展性提升、用户统计增强、PROCESSLIST 增强、Slow Log 增强等大量改进和提升,这里不一一重复列出。 GreatSQL Release Notes GreatSQL 8.4 GreatSQL 8.0 GreatSQL 5.7
Enjoy GreatSQL 
|