以下对 DBLE 2.19.11.0 Release Notes 的进行详细解读,文章主要分为以下四部分内容:
- 一、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
官方课程
点击学习《DBLE 快速上手》 实操视频 + 图文稿!
点击学习《DBLE 公开课》 进阶课程
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
四、完整 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
Release Notes:
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
我们发布了新版本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