关于数据库:GreatSQL-803224-今日发布

31次阅读

共计 5823 个字符,预计需要花费 15 分钟才能阅读完成。

  • 1. 新增个性
    • 1.1 SQL 兼容性
    • 1.2 MGR
    • 1.3 性能优化
    • 1.4 平安
  • 2. 稳定性晋升
  • 3. 其余调整
  • 4.bug 修复
  • 5.GreatSQL VS MySQL
  • 6.GreatSQL Release Notes

GreatSQL 8.0.32-24 版本公布,减少并行 load data、(逻辑 & CLONE)备份加密、MGR 读写节点可绑定动静 VIP、Oracle 兼容扩大、审计日志加强等重磅个性。

直播预报:GreatSQL 8.0.32-24 发布会

直播工夫:2023.06.05 15:00 – 16:00

扫码预约发布会或点击下方浏览原文进行报名

0. 我的项目信息

  • 代码仓库:https://gitee.com/GreatSQL/GreatSQL
  • 最新下载:https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0…
  • 我的项目文档:https://greatsql.cn/docs
  • 我的项目官网:https://greatsql.cn

1. 新增个性

1.1 SQL 兼容性

在 GreatSQL 8.0.32-24 中,实现了多项 SQL 兼容性性能,包含数据类型扩大、SQL 语法等超过 20 个兼容个性。

1.1.1 数据类型扩大

  • CLOB
  • VARCHAR2

1.1.2 SQL 语法

  • DATETIME 运算
  • ROWNUM
  • 子查问无别名
  • EXPLAIN PLAN FOR

1.1.3 函数

  • ADD_MONTHS()
  • CAST()
  • DECODE()
  • INSTR()
  • LENGTH()
  • LENGTHB()
  • MONTHS_BETWEEN()
  • NVL()
  • SUBSTRB()
  • SYSDATE()
  • TO_CHAR()
  • TO_DATE()
  • TO_NUMBER()
  • TO_TIMESTAMP()
  • TRANSLATE()
  • TRUNC()
  • SYS_GUID()

更多信息详见文档:GreatSQL 中的 SQL 兼容性(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

1.2 MGR

1.2.1 MGR 内置动静 VIP

在 GreatSQL 8.0.32-24 中,新增 MGR 读写节点反对绑定 VIP(虚构 IP)个性。利用该个性,使得 MGR 在单主模式下运行时,能自动识别读写节点并绑定 VIP,反对利用端即可通过 VIP 对数据库发动读写申请,当读写节点角色发生变化时,VIP 也会随之主动漂移并从新绑定,利用端无需批改 VIP 配置。

更多信息详见文档:GreatSQL 中 MGR 反对内置 vip 个性(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

1.2.2 新增 applier queue 批处理机制

新增相应选项 group_replication_applier_batch_size_threshold。当 MGR 中的并发事务太大,或者个别 Secondary 节点(磁盘 I /O)性能较差时,可能会导致 applier queue 沉积越来越大,始终无奈及时跟上 Primary 节点。

这时候无效的方法就是让 applier queue 落地时采纳批量的形式,进步落盘效率。默认地,applier queue 里的 event 是一一落盘的,这种形式效率很低。当 applier queue 超过 group_replication_applier_batch_size_threshold 设定的阈值时,就会触发批量落盘模式,每 100 个 event 批量落盘,就能大大提高落盘效率。

在生产环境中,选项 group_replication_applier_batch_size_threshold 值不要设置太小,倡议不低于 10000。默认值 100000,最小值 10(仅用于开发、测试环境),最大值 100000000(基本上等于禁用)。一个大事务会蕴含很多个 event,当该选项设置太低时,可能会导致一个事务中的 event 没方法及时落盘,会造成 relay log 不残缺,节点 crash 时,就须要从 Primary 节点从新读取 binlog 进行复原。

System Variable Name group_replication_applier_batch_size_threshold
Variable Scope Global
Dynamic Variable YES
Permitted Values [10 ~ 100000000]
Default 100000
Description 当 applier queue 超过 group_replication_applier_batch_size_threshold 设定的阈值时,就会触发批量落盘模式,每 100 个 event 批量落盘,进步落盘效率。

1.2.3 Xcom cache 调配动态化

在 MySQL 5.7 里,Xcom cache size 最大值 1G,且不可动静调整。从 MySQL 8.0 开始,可对其动静调整。在 <= MySQL 8.0.20 的版本中,最小值 1G。在 >= MySQL 8.0.21 的版本中,最小值 128M。

在 MySQL 中,是动静按需分配 Xcom cache 的,如果太多有闲暇,就开释;如果不够用,再动态分配更多内存,一次调配大略 250000 个 cache item,很容易造成约 150ms 的响应提早。也就是说,会随着事务多少的变动而可能频繁产生响应提早。

在 GreatSQL 中,对 Xcom cache 采纳了动态化分配机制,即一开始就预调配约 1GB 内存用于 Xcom cache,这能够防止后面提到的响应提早抖动危险,不过“副作用”是 mysqld 过程所占用的内存会比原来多,在内存特地缓和的服务器上不太适宜。

新增相应选项 group_replication_xcom_cache_mode 用于设置 Xcom cache 动态化初始大小:

System Variable Name group_replication_xcom_cache_mode
Variable Scope Global
Dynamic Variable YES
Permitted Values [0 ~ 4]
Default 2
Description 设置 Xcom cache 动态化初始大小,对应关系如下:0:约能缓存 50 万个 Xcom 条目,相应内存耗费约 200MB;1:约能缓存 100 万个 Xcom 条目,相应内存耗费约 500MB;2:约能缓存 200 万个 Xcom 条目,相应内存耗费约 1GB;3:约能缓存 400 万个 Xcom 条目,相应内存耗费约 2GB;4:约能缓存 800 万个 Xcom 条目,相应内存耗费约 4GB;

1.2.4 其余优化

  • 优化了孟子算法,使得无论是单主模式还是多主模式下,均有不同水平的性能晋升。
  • 打消了杀节点过程场景下的性能抖动。
  • 优化了退出节点时可能导致性能激烈抖动的问题。
  • 优化手工选主机制,解决了长事务造成无奈选主的问题。
  • 欠缺 MGR 中的外键束缚机制,升高或防止从节点报错退出 MGR 的危险。
  • 晋升了 Secondary 节点上大事务并发利用回放的速度。
  • 减少 Xcom cache 条目,晋升了在网络提早较大或事务利用较慢场景下的性能。
  • 新增参数选项:group_replication_broadcast_gtid_executed_period 用于设置节点之间各自播送节点的 gtid 值的频率,单位为毫秒,默认为 1000,最小 200,最大 60 000,配合新的事务认证队列清理算法,进行认证数据库的清理操作。收到所有节点的 gtid 后,就能够清理都执行结束的 gtid 的认证信息了。
  • 新增参数选项:group_replication_flow_control_max_wait_time,用于设置每次触发流控时,流控期待的最大时长,默认为 3600s,最大为 86400s(1 天)。

1.3 性能优化

1.3.1 并行 load data

MySQL 原生的 load data 采纳单线程读取本地文件(或收取 client 传来的网络数据包),逐行获取内容后再插入数据。

当导入的单个文件很大时,单线程解决模式无奈充分利用数据库的资源,导致执行工夫很长。又因为 load data 导入的数据在一个事务内,当 binlog 事务超过 2G 时,可能会导致无奈应用 binlog 在 MGR 集群间同步。

为解决上述两个问题,GreatSQL 反对了 load data 并行导入。开启并行导入后,会主动切分文件成小块(可配置),而后启动多个 worker 线程(数量可配置)导入文件块。并行导入与 engine 无关,实践上反对任何存储引擎。

更多信息详见文档:GreatSQL 中的并行 load data 个性(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

1.3.2 优化器优化

优化了执行打算,使得 benchmark tpcc 测试吞吐量更高,也更加稳固。

1.4 平安

1.4.1 mysqldump 备份加密

GreatSQL 8.0.32-24 反对在 mysqldump 进行逻辑备份时产生加密备份文件,并且也反对对加密后的备份文件解密导入。

更多信息详见文档:GreatSQL 中的逻辑备份加密个性(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

1.4.2 审计日志入表

GreatSQL 反对将审计日志写入数据表中,并且设置审计日志入表规定,以便达到不同的审计需要。

审计内容将包含操作账户、客户端 ip、被操作的数据库对象、操作的残缺语句、操作后果。

更多信息详见文档:GreatSQL 中的审计日志入表个性(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

1.4.3 表空间国密加密

在开源 MySQL 原有 keyring 架构,通过国密算法,加强开源 MySQL keyring 架构的安全性。MySQL 的表空间加密 keyring 架构蕴含 2 层加密,master key 和 tablespace key。

  • master key 用于加密 tablespace key,加密后的后果存储在 tablespace 的 header 中。
  • tablespace key 用于加密数据

当用户想拜访加密的表时,InnoDB 会先用 master key 对之前存储在 header 中的加密信息进行解密,失去 tablespace key。再用 tablespace key 解密数据信息。tablespace key 是不会被扭转的,而 master key 能够随时扭转。开源 MySQL 的 master key 采纳 keyring_file 插件,key file 间接存储在磁盘上。

本性能点通过基于国密算法 sm4,减少了数据库的安全性。

创立国密算法加密表

CREATE TABLE test.t1(c1 INT, c2 INT) ENGINE = InnoDB ENCRYPTION = 'Y';

更多信息详见文档:GreatSQL 中的表空间加密国密反对(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

1.4.4 CLONE 备份加密

GreatSQL 反对在利用 CLONE 备份时同步进行加密操作,晋升备份文件安全性,防止备份文件被盗或透露时造成损失。

更多信息详见文档:CLONE 备份加密(https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/relnotes/…)

2. 稳定性晋升

3. 其余调整

4.bug 修复

  • 修复 InnoDB 并行查问可能导致查问 hang 住,甚至 crash 的问题。

5. GreatSQL VS MySQL

个性 GreatSQL 8.0.32-24 MySQL 8.0.32
开源
ACID 完整性
MVCC 个性
反对行锁
Crash 主动修复
表分区(Partitioning)
视图(Views)
子查问(Subqueries)
触发器(Triggers)
存储过程(Stored Procedures)
外键(Foreign Keys)
窗口函数(Window Functions)
通用表表达式 CTE
地理信息(GIS)
基于 GTID 的复制
组复制(MGR)
MyRocks 引擎
SQL 兼容扩大 1. 数据类型扩大 2.SQL 语法扩大 共超过 20 个扩大新个性
MGR 晋升 1. 天文标签 2. 仲裁节点 3. 读写节点绑定 VIP 4. 疾速单主模式 5. 智能选主机制 6. 全新流控算法
性能晋升 1.InnoDB 并行查问 2. 并行 load data
平安晋升 1. 国密反对 2. 备份加密 3. 审计日志入库

此外,GreatSQL 8.0.32-24 基于 Percona Server for MySQL 8.0.32-24 版本,它在 MySQL 8.0.32 根底上做了大量的改良和晋升以及泛滥新个性,详情请见:Percona Server for MySQL feature comparison(https://docs.percona.com/percona-server/8.0/feature_compariso…),这其中包含线程池、审计、数据脱敏等 MySQL 企业版才有的个性,以及 PFS 晋升、IFS 晋升、性能和可扩展性晋升、用户统计加强、processlist 加强、slow log 加强等大量改良和晋升,这里不一一反复列出。

6. GreatSQL Release Notes

  • 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 (2022-8-26)
  • Changes in GreatSQL 5.7.36-39 (2022-4-7)

Enjoy GreatSQL :)

## 对于 GreatSQL

GreatSQL 是由万里数据库保护的 MySQL 分支,专一于晋升 MGR 可靠性及性能,反对 InnoDB 并行查问个性,是实用于金融级利用的 MySQL 分支版本。

相干链接:GreatSQL 社区 Gitee GitHub Bilibili

GreatSQL 社区:

社区博客有奖征稿详情:https://greatsql.cn/thread-100-1-1.html

技术交换群:

微信:扫码增加 GreatSQL 社区助手 微信好友,发送验证信息 加群

正文完
 0