Skip to content

Releases: XiaoMi/Gaea

v2.4.2

20 Sep 07:44
76b0117
Compare
Choose a tag to compare

What's Changed

新功能

  • 支持 group_concat_max_len 变量设置
  • 支持可配置的 session 级别变量
  • 支持分库分表情况下,显示详细的 sql explain 信息
  • 支持客户端使用 hash 后的密码连接 Gaea
  • 支持非分片情况下使用 MySQL 8.0
  • 支持非分片情况下大结果集流式返回,避免较大内存占用问题
  • 支持日志配置热加载
  • 支持日志文件保留数量的配置
  • 新增 keep session 功能,keep session 模式下,会一对一保持前后端数据库连接会话
  • 新增 分片情况下 group by ... order by max(col) 语句 ORDER BY 使用聚合函数
  • 新增 SQL 支持:子查询中的多括号支持
  • 新增 SQL 支持:create table t (... on update current_timestamp(NUMBER))
  • 新增 SQL 行为支持:select @@read_only 及 show variables like "%read_only%" 发送至主库,避免应用框架通过从库获取数据库只读状态导致业务报错
  • 新增 SQL 支持:默认支持 multistatement
  • 新增 API 用于获取当前 Gaea 版本,便于后续自动化升级降级操作
  • 新增了大量只读 SQL 测试 Case,提高后续版本稳定性

优化提升

  • 优化 Gaea session timeout 功能,在高 qps 情况下,cpu 使用率较高问题
  • 优化日志功能,更换日志库,新增异步日志写入能力,提高日志性能
  • 优化请求处理逻辑,提高单条 SQL 处理效率
  • 优化 result 结果集对象复用,降低内存使用
  • 优化 MySQL 协议写入数据包逻辑,提升网络写入效率,降低 P99延迟
  • 优化计算 p99/p95 cpu 资源占用率过高问题
  • 优化 prepare execute 参数过多时 cpu 占用率过高问题
  • 优化 SQL 黑名单和连接数过多的报错信息
  • 优化获取 buffer pool 性能
  • 优化 gaea_proxy_sql_error_counts 监控项,只记录 Gaea 处理过程中的错误,不记录后端 MySQL 执行的错误
  • 优化 general 日志展示,增加用户名及执行从库显示
  • 忽略 lock table ... 语句,解决避免后端未解锁表导致复用失败的问题
  • 调整 gaea_proxy_cpu_busy 监控项名为 gaea_proxy_cpu_busy_by_core,区分新旧版本值
  • 修改 CheckSelectLock 默认值为 True,避免旧版兼容性。并优化部分语句的主从路由

Bug修复

  • 修复高版本 JDBC 连接低版本 MySQL 时报错 Unknown system variable 'transaction_isolation'
  • 修复修改 namespace 旧的探活连接未关闭的问题,并限制探活连接为独立的连接
  • 修复分库场景下 explain 语句报错问题
  • 修复 2.3.7 版本引入的 prepare 结果集 > 16M gorm panic 问题
  • 修复偶发 Cannot execute statement in a READ ONLY transaction 问题
  • 修复设置 sql_mode 使用 replace 函数报错问题
  • 修复忽略 /*!40103 xxx */ sql 存在语法错误情况下,执行的报错问题
  • 修复keep session 事务场景和配置变更场景连接回收 bug
  • 修复查询 8.0 mysql 偶发的空指针 panic 问题
  • 修复 set character_set_client=binary 语法不支持问题
  • 修复 mysql 8.0 字符集排序规则 utf8mb4_0900_ai_ci 设置不符合预期问题
  • 修复没有流量时,p99/p95 值不更新问题
  • 修复 sql 被 kill 时,客户端数据库连接未被断开问题
  • 修复 executeInSlice 慢查询 panic 问题
  • 修复 mysql > 8.0.3 版本 tx_read_only 报错问题
  • 修复 net_buffer_size 配置不生效问题
  • 修复 select last_insert_id() 返回值类型错误 string->int
  • 修复 warning 日志未被清理的问题
  • 修复非分片情况下多语句默认全部发送到后端 MySQL,避免多语句拆分高并发情况下负载高问题
  • 修复默认支持多语句导致 QPS 高的情况下 CPU 负载升高的问题
  • 修复部分 SQL 语句类型识别错误的问题
  • 修复 2.0 版本部分 union 语句无法执行的问题

Full Changelog: v1.2.5...v2.4.2

v1.2.5

02 Apr 03:42
22a72b9
Compare
Choose a tag to compare

优化

  • 【优化】groupby orderby having limit语句单节点下不再走merge流程

bug fix

  • 修复偶发的 savepoint dose not exist
  • 修复 select xxx from tb as t force index(u_key) where t.id=x 语法错误
  • 修复分库分表情况下,状态码错误问题

v1.2.4

02 Mar 04:01
fab29c0
Compare
Choose a tag to compare

bug fix

  • 修复writeFieldList broken pipe(#163
  • 修复 backend default slice 在代码中写死

新功能特性

  • 增加 mysql8 客户端支持
  • savepoint 特性支持
  • etcdv3 支持
  • 增加后端连接池超时重连机制
  • gaea cc 修改配置增加重试

v1.2.3

15 Dec 02:02
9604848
Compare
Choose a tag to compare

bug fix

  • 修复writeFieldList broken pipe(#163

新功能特性

  • 增加 mysql 握手 capability 设置
  • make 时,增加 git dirty 检测
  • make 时,增加 git 版本记录
  • 优化连接池,动态更改连接数量至 [capacity, maxCapacity] 之间
  • 允许 gaea 登录版本配置修改

v1.2.2

24 Nov 11:29
2d3303c
Compare
Choose a tag to compare

bug fix

  • 支持在group by 或 order by 中使用别名列(#127 )
  • 修复连接池泄露问题(#116 #119 )
  • 修复fieldlist 数据包解析错误的问题(#115 )
  • 删除日志打印中sql的换行符(#120 )
  • 修复因未及时回收read buffer 导致的panic问题(#130 )

other

  • 优化sql 改写补列部分处理逻辑
  • 更新文档

v1.2.1

13 Oct 12:30
6295c96
Compare
Choose a tag to compare

bug fix

Fix the bug that gaea does not handle error package from mysql (#112)

v1.2.0

21 Sep 09:45
Compare
Choose a tag to compare

feature:

  • 添加审计日志 (#109 )

bug fix:

  • 修复事务执行过程中的连接池泄露问题(#106 )
  • 修改manager.go的部分日志打印问题(#105 )

v1.1.0

05 Sep 09:23
b065ccb
Compare
Choose a tag to compare

feature:

  • 新增查询namespace配置信息的admin接口 (#86)
  • 新增清空SQL指纹缓存的admin接口 (#93)
  • 分表SQL支持Index Hint (#102)

bug fix:

  • 修复SessionExecutor处理事务时的并发问题 (shazam #51)
  • 修复mycat全局序列号处理异常问题 (#91)
  • 修复gaea-cc更新namespace失败时不返回错误的问题 (#96)
  • 修复在未执行prepare namespace时直接commit导致panic的问题 (#104)

other:

  • 添加grafana监控模板 (#88)

v1.0.3

21 May 04:53
a0af832
Compare
Choose a tag to compare

new feature:

  • gaea支持非分片表携带库名查询#70
  • 支持多集群隔离#74 #72
  • 增加mysql连接池相关指标监控

bug fix:

  • 修复了table name & column name 大小写敏感问题
  • 修复了kingshard分片分表模式下返回错误的表别名问题
  • 修复了session异常关闭问题

other:

  • 增加连接mysql失败日志
  • 处理返回结果集为空的情况

v1.0.2

25 Nov 02:48
3a218c7
Compare
Choose a tag to compare

修复已知错误

  • 修复分片SQL处理SUM()结果集为空时返回0的错误
  • 重构namespace校验逻辑部分代码