伴随着各行各业的节复工,DBLE 2.19.11.0 也在今天顺利发版,不期而至!

2.19.11.0 版本

DBLE Release Notes

以下对 DBLE 2.19.11.0 版本的 Release Notes 进行详细解读。

文章主要分为以下四部分内容:

一、DBLE 项目介绍
二、新版本概况
三、主要更新解读
四、完整的 DBLE Release Notes 及翻译

一、DBLE 项目介绍

DBLE 是企业级开源分布式中间件,江湖人送外号 “MyCat Plus”;以其简单稳定,持续维护,良好的社区环境和广大的群众基础得到了社区的大力支持;

  • DBLE 官方项目:
    https://github.com/actiontech/dble
    如对源码有兴趣或者需要定制的功能的可以通过源码编译安装
  • DBLE 官方文档(已更新)
    https://actiontech.github.io/dble-docs-cn
    可以详细了解 DBLE 的背景和应用场景,本文未涉及到的细节都可在官方文档获得
  • 新版本 DBLE 下载地址及 Release Notes:
    https://github.com/actiontech/dble/releases
官方课程:
Tips:建议下载最新的 Releases 版本,下载 tar 压缩包即可,如有源码编译需求的,可以下载源码包。

二、新版本概况

距离 (2.19.09.0) 发布 90 天后 ,2.19.11.0 版本发布;
新版 dble 新增重构功能 13 个,修复缺陷 28 个,向后兼容性调整 2 处;

致谢

  • 感谢以下人员对社区做出的贡献:
    @Lordess,@zhaoshan86,@liuxinwang,@ssxlulu. 
  • 感谢 Github 用户提供的优质 issue
  • 感谢 QQ 群(669663113)内朋友提供的有效反馈

三、主要更新解读

这次版本更新的主要特性是针对全局表检查方式[#1558]

1. 全局表检查简介

全局表是 dble 中一种特殊类型的表格,一般来说认为在一个全局表 table_a 所有分布的节点上,table_a 因同时满足以下两个条件:
  • 拥有相同的表格结构
  • 拥有相同的表格数据

但事实上在系统和 dble 的运行过程中,可能由于一些不可避免分布式事务方面的误差,导致在长时间运行之后,不同节点上面的 table_a 上面的数据不一致。

为了及时的发现问题并不再造成更进一步的错误,dble 中采用定时进行表格数据检查的方式对于 table_a 中的数据一致性进行检查,并及时把检查的结果通知到运维人员。

2. 支持自定义全局表检查的开发及使用

关全局表检查方式的详细说明,请参考官方手册:
https://github.com/actiontech/dble-docs-cn/blob/develop/1.config_file/1.12_customized_global_table_check.md

四、完整的 DBLE Release Notes 及翻译

翻译

我们发布了新版本 2.19.11.0。
首先,我们必须感谢以下人士对我们社区的贡献:
@Lordess,@zhaoshan86,@liuxinwang,@ssxlulu

特性:

  • [#1607] 更改bufferPoolPageNumber的默认值

  • [#1585] 为某些管理命令添加过滤条件

  • [#1575] 增加管理命令,用于展示某个连接最近的SQL状态细节(执行中步骤)

  • [#1566] 添加命令show @@ data_distribution以显示表的数据分布

  • [#1564] 为 show@@ connection.sql 添加STAGE列

  • [#1558] 移除原有的全局表检查方式,添加通用的全局表检查并允许自定义全局表检查方式

  • [#1544] 心跳可以检查后端是否为只读

  • [#1543] 在DBLE的server.xml中添加属性 autocommit

  • [#1539] 视图的用法增强,支持垂直拆分view透传

  • [#1527] 添加新命令 show@@ Questions

  • [#1526] 将schema.xml 中的primaryKey更名为cacheKey

  • [#1521] 拆分转储文件时,支持不带“create table” stmt的转储文件

  • [#1362] 支持kill query语句

缺陷修复:

  • [#1532] 处理小数据文件时,LOAD DATA INFILE在将数据发送到MySQL之前未对数据进行字符集编码,谢谢@Lordess报告该错误。

  • [#1489] 在某视图中使用另一个视图的复杂查询将得到错误“未找到列”

  • [#275] 对不同全局表的union查询,结果集未合并

  • [#563] 在全局表上使用“自然联接”时,结果不正确

  • [#622] 非法“create table”语法对全局表执行成功

  • [#775] 查询[加载数据…]到全局表中,列_dble_op_time可能需要特殊的句柄

  • [#1582] 在ZooKeeper模式下,在 reload @@ config_all 之后,DataHost的心跳属性未同步

  • [#1451] 当b是表的列名之一时,SQL select a as b from table group by a 返回错误

  • [#1513] 在XA End阶段之前杀死后端连接之一时,提交XA事务将返回“lost connection”错误

  • [#1638] 重启mysql节点,导致错误并无法恢复:the data source[XXX] can’t reach. Please check the dataHost status

  • [#1538] 将dataHost从disabled更改为enabled ,心跳无法恢复

  • [#1622] 在某些情况下会导致内存泄漏

  • [#1524] 代码重构:DDL与常规查询分开

  • [#1525] 语法 limit 0 将返回所有行,感谢@ssxlulu报告该错误。

  • [#1453] 在[union]中将用户变量用于[order by]将返回错误

  • [#1618] 复合SQL语句返回包错误

  • [#1583] 将DBLE嵌套作为DBLE的后端,感谢@ zhaoshan86报告该错误。

  • [#1643] 执行查询“show warnings”导致错误:Lost connection to MySQL server during query

  • [#1465] Schema.xml数据节点名称和数据库的属性值总和应相等

  • [#1602] dble在[lower_case_tables_name = 1] 下使用大写表别名的查询会发生Explain错误

  • [#1541] 如果几十个数据主机的数据节点过多(> 700),则由于 testConn 线性逻辑,启动/重新加载将变慢

  • [#1507] 当文件中有单独的行“ \”时,load data将返回错误

  • [#1466] [select b.id from test join sharding_2_t1 b on test.id/b.id>1.001]结果与mysql不一致

  • [#1459] 对于非分片表,全局序列无法正常工作,谢谢@liuxinwang报告该错误。

  • [#1455] 查询[SELECT * FROM t1 a left join t2 c on a.id=c.id and a.id=@id_a;]报告字段未找到:@id_a

  • [#1417] DBLE返回的列类型与MYSQL数据库不一致。

  • [#1403] 多语句的LOAD DATA包 packet ID错误

  • [#753] 不支持关键字作为表名或者列名,即使使用了重音符号

打破向后兼容性:

  • [#1558] 删除旧的全局表检查逻辑。添加新的通用全局表检查并允许自定义全局表检查

  • [#1526] 将schema.xml 中的primaryKey更名为cacheKey

Release Notes:

We have released a new version 2.19.11.0.
Firstly, we must thanks to the following people for their contributions to our community: 
@Lordess,@zhaoshan86,@liuxinwang,@ssxlulu
Features:
  • [#1607] Change the default value of bufferPoolPageNumber

  • [#1585] Add filter condition for some manager command

  • [#1575] add an manager command to show recently(doing or done) query detail stage

  • [#1566] Add command show @@data_distribution to show data distribution for table

  • [#1564] Add STAGE for show @@connection.sql

  • [#1558] Remove old global table check. Add new general global table check & allow customization for global table check 

  • [#1544] Heartbeat can check if backend is read_only 

  • [#1543] Add propery autocommit to DBLE’s server.xml

  • [#1539] strength usage of view, support MySQL view for vertical sharding

  • [#1527] Add new command show @@Questions

  • [#1526] Change primaryKey into cacheKey in schema.xml

  • [#1521] Support dump file without create table stmt when splitting dump file

  • [#1362] Support kill query statement

For more details, please read the document.
Bug-fixes:
  • [#1532] LOAD DATA INFILE doesn’t encode data before sending it to MySQL when dealing with a small data file, thanks @Lordess report the bug.

  • [#1489] Complex query using one view in another view will get an error `column not found`

  • [#275] Result set is not merged because of union query on different global tables

  • [#563] Incorrect result when natural join on the global table

  • [#622] Illegal “create table ” syntax execute success for global table

  • [#775] Query [load data …] to global table, column _dble_op_time may need special handle

  • [#1582] DataHost’s heartbeat attribute is not synced after reload @@config_all in ZooKeeper mode

  • [#1451] SQL select a as b from table group by a returns error when b is one of the table’s columns names

  • [#1513] Commit XA transaction will return lost connection error when killed one of the backend connection before XA end phase

  • [#1638] Restart mysql node causing the error: the data source[XXX] can’t reach. Please check the dataHost status 

  • [#1538] Change dataHost from disabled to enabled, the heartbeat does not recover 

  • [#1622] Memory Leak in Some cases

  • [#1524] DDL separate from general queries

  • [#1525] Syntax limit 0 will return all rows, thanks @ssxlulu report the bug.  

  • [#1453] Use user variables in [order by] with union got error

  • [#1618] Compound SQL statement returned package error

  • [#1583] Use DBLE as DBLE’s backend, thanks @zhaoshan86 report the bug.

  • [#1643] Execute query “show warnings” causing an error : Lost connection to MySQL server during query

  • [#1465] Schema.xml datanode sums of attributes values of name and database should equal

  • [#1602] Explain a query with an uppercase  table alias when [lower_case_tables_name=1], it will report error

  • [#1541] If there are too many datanodes(>700) for a few dozen datahost, starting/reloading will become slow because of testConn

  • [#1507] Load data returns an error when there is a separate line “\” in file

  • [#1466] [select b.id from test join sharding_2_t1 b on test.id/b.id>1.001] result not consistent with mysql

  • [#1459] Global sequence does not work correctly for the no-sharding table, thanks @liuxinwang report the bug. 

  • [#1455] Query [SELECT * FROM t1 a left join t2 c on a.id=c.id and a.id=@id_a;] report field not found:@id_a

  • [#1417] The column type returned by DBLE is inconsistent with the MYSQL database.

  • [#1403] Packet ID error for LOAD DATA multi-Queries 

  • [#753] dble does not support reserved words as table name or column name even use backtick

Breaking backward compatibility:
  • [#1558] Remove old global table check. Add new general global table check & allow customization for global table check

  • [#1526] Change primaryKey into cacheKey in schema.xml