专栏首页爱可生开源社区分布式 | DBLE Release Notes 详细解读 2.20.04.0

分布式 | DBLE Release Notes 详细解读 2.20.04.0

2.20.04.0 版本

DBLE Release Notes

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

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

一、DBLE 项目介绍

二、新版本主要更新解读

三、完整 Release Notes 及翻译

另外,我们还发布了 2.19.09.2 和 2.19.11.1 两个纯 bug 修复的小版本,具体请见官方 github。

https://github.com/actiontech/dble

一、DBLE 项目介绍

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

DBLE

破壳日:2017.10.24

爱好:开源

技能:数据水平拆分、读写分离、分布式事务支持、多分片算法、全局 ID、IP/SQL 黑白名单

特长:MySQL 语法兼容、复杂查询优化、低改造成本、成熟稳定、成熟技术栈

  • DBLE 官方项目: https://github.com/actiontech/dble 如对源码有兴趣或者需要定制的功能的可以通过源码编译安装
  • DBLE 官方文档(已更新): https://actiontech.github.io/dble-docs-cn
  • 新版本 DBLE 下载地址及 Release Notes: https://github.com/actiontech/dble/releases

官方课程:

Tips:建议下载最新的 Releases 版本,下载 tar 压缩包即可,如有源码编译需求的,可以下载源码包。

二、新版本概况

DBLE 2.20.04.0 是今年 DBLE 第二次发版。

新版 dble 新增重构功能 13 个,修复缺陷 21 个,向后兼容性调整 1 处;

致谢

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

三、主要更新解读

  • 支持 16M 或更大的 MySQL 协议包
  • 故障切换

故障切换

版本 2.20.04.0 起对切换功能进行了重定义废除原有的切换功能,请知悉。

新的 MySQL 高可用切换分为两类:

一是单实例部署的 DBLE 会内置一个自带的高可用切换的 Python3 脚本,跟随 DBLE 启动和停止,需要设置 server.xml 中 system 的 useOuterHa 参数为 false。

二是支持第三方的高可用切换接口功能,支持集群部署。当然,单实例 DBLE 也可以采用这种方式,需要设置 system 的 useOuterHa 参数为 true。

这种方式情况下,如果没有真的配置第三方高可用切换组件,则什么也不会发生。

具体请参考【高可用切换接口】

【高可用切换接口】 https://github.com/actiontech/dble-docs-cn/blob/develop/2.Function/2.23_outerHa_linkage.md

关于【故障切换】功能使用的前提条件、工作方式、注意事项等,具体请参考【2.12 故障切换】

【2.12 故障切换】 https://github.com/actiontech/dble-docs-cn/blob/develop/2.Function/2.12_failover.md

四、完整的 DBLE Release Notes 及翻译

翻译

特性:

  • [#1753] 添加流控制功能以避免 OOM,这要感谢 @ssxlulu 为该功能的代码做出了贡献
  • [#1741] 将URL信息添加到心跳日志
  • [#1709] 支持 16M 或更大的 MySQL 协议包
  • [#1697] 当后端 MySQL 具有不同的 lower_case_table_names 时,Dryrun 将报告错误
  • [#1691] 为备用从 MySQL 实例添加心跳检查
  • [#1688] log4j 2.7存在一些安全问题,因此升级到 2.13.1
  • [#1676] 扩展对多语句的支持,以支持 'Set' 多语句
  • [#1675] XA 事务的代码重构
  • [#1674] fastJson 1.2.60 存在一些安全问题,因此升级至 1.2.62
  • [#1671] 添加 drop database 作为管理命令,它是 create database 管理器命令的镜像功能。
  • [#1670] 将 MySQL 的 'group by' 下推标准化,因为 MySQL8.0 更改了 group by 语义
  • [#1672] 为 OutOfMemor 添加 HeapDump
  • [#1710] 不再支持 Multi-WriteHost 和 SwitchType,并为单个部署的 DBLE 提供一种 MySQL 高可用的 Python 脚本,详见:[2.12 故障切换] https://github.com/actiontech/dble-docs-cn/blob/master/2.Function/2.12_failover.md

缺陷修复:

  • [#1755] 修复 server.xml 中属性的拼写错误,并且不会破坏向后兼容性
  • [#1856] 如果在 DDL 期间关闭了 MySQL 后端,则前端会话可能会挂起
  • [#1823] 当 DBLE 群集中没有暂停的 dataNode时,管理命令“resume”返回“ 1”
  • [#1782] 在没有 use 数据库的时候,在 dual 执行union sql 会返回 NPE
  • [#1762] 在执行插入多节点查询后执行复杂查询时,出现“ NullPointerException”错误
  • [#1749,#1723] 所有 MySQL 均设置为大小写不敏感,并且使用大写表名的查询将返回错误“table node buildOwn exception!”,感谢 @ wang1980 报告此错误
  • [#1725] 在 XA 事务中多次从全局表中选择后插入错误
  • [#1716] 选择具有不同别名的同一列时,复杂查询会出错
  • [#1714] 仅在条件为常数的条件下执行的复杂查询在下推时会重复
  • [#1706] NestLoop 可能导致 java.util.ConcurrentModificationException, 感谢 @uliude 报告此错误
  • [#1705] 当尝试下推 OR 条件时会报错, 感谢 @uliude报告此错误
  • [#1687] 如果条件太多 or,解析会花费大量时间甚至 OOM
  • [#1655] 如果 sequenceHandlerType 为 2,则当系统时间小于开始时间时,预计插入 SQL 失败,但实际成功
  • [#1659] 处理 "dataHost @@ disable" 时,仅打开配置文件一次。如果失败,以后将不会尝试重新打开该文件。
  • [#1655] ER 表:在子表中插入值时,如果检查父表的连接中的值被杀死,则应该返回合理的错误消息
  • [#1650] 支持 SQL [SELECT * FROM t1 a left join t2 c on a.id=c.id and a.id=@id_a;] ,当 "@id_a" 未设置值时。
  • [#1625] 在没有 jdbc 参数“ characterEncoding = utf8”的情况下无法插入或更新 emoji,感谢 @feixuefubing 报告此错误
  • [#1454] [load data infile 'xxx' into table t (@colA,@colB)] 得到错误的结果集
  • [#1287] 对于分片表, "select id from test1 union SELECT ROW_COUNT()" 将返回不稳定的结果集
  • [#1243] 当客户端驱动程序为 MariaDB 且后端 MySQL 的 sql_mode为 'NO_ENGINE_SUBSTITUTION' 时,连接错误
  • [#828] 在 sql_mode 为 ANSI 的情况下插入没有列名的分片表时出错

打破向后兼容性:

  • [#1710] 不再支持 Multi-WriteHost 和 SwitchType,并为单个部署的 DBLE 提供一种 MySQL 高可用的 Python脚本,详见:[2.12 故障切换] https://github.com/actiontech/dble-docs-cn/blob/master/2.Function/2.12_failover.md

Release Notes

Features:

  • [#1753] Add flow control feature to avoid OOM, thanks to @ssxlulu for contributind the code for the feature.
  • [#1741] Add URL message to heartbeat log
  • [#1709] Support 16m or more larger package of MySQL protocol
  • [#1697] Dryrun will report ERROR when backend MySQLs have different lower_case_table_names
  • [#1691] Add heartbeat check for standby slave MySQL instance
  • [#1688] log4j 2.7 has some safe problem, so upgrade to 2.13.1
  • [#1676] Expand supporting of multi-statement to support 'Set' multi-statement
  • [#1675] Refactor code for xa transaction
  • [#1674] fastJson 1.2.60 has some safe problem, so upgrade to 1.2.62
  • [#1671] Add drop database as manager command, it is a mirror function for manager command of create database
  • [#1670] Standardize 'group by' pushdown to MySQL because of the change of MySQL8.0
  • [#1672] Add HeapDump for OutOfMemor
  • [#1710] Not Support Multi-WriteHost and SwitchType and provide new version of high availability for single dble. More Detail,see [2.12_failover] https://github.com/actiontech/dble-docs-cn/blob/master/2.Function/2.12_failover.md

Bug-fixes:

  • [#1755] Fix spelling mistakes of property in server.xml, and does not break backward compatibility
  • [#1856] If backend MySQL down during ddl, then front session may stay hanging
  • [#1823] Management cmd “resume” return ‘1’ when there's no paused dataNode in dble cluster
  • [#1782] Get NPE when execute union sql in dual without database choose
  • [#1762] Got "NullPointerException" error when execute a complex query after executing insert into multi-nodes query
  • [#1749,#1723] All MySQLs set to insensitive, and query with uppercase table name will return error "table node buildOwn exception!", thanks to @wang1980 for reporting the bug.
  • [#1725] Insert error after selecting from global table more times in xa transaction
  • [#1716] Complex query get error when select same column with different alias
  • [#1714] Complex query with condition only constant-expression would got repeated when push down
  • [#1706] NestLoop may cause java.util.ConcurrentModificationException, thanks to @uliude for reporting the bug.
  • [#1705] When try to pushdown the OR condition with Error, thanks to @uliude for reporting the bug.
  • [#1687] If the condition is too many or, parsing will cost a lot of time and memory, even OOM
  • [#1655] If sequenceHandlerType is 2,when system time less than start time ,expect insert sql failed, but successed
  • [#1659] When processing "dataHost @@ disable", only open the configuration file once. If it fails, it will not try to reopen the file in the future.
  • [#1655] ER table: when insert values into child table, if the connection of checking parent table have the value was killed, it should be feedfack a resonable error message
  • [#1650] support sql [SELECT * FROM t1 a left join t2 c on a.id=c.id and a.id=@id_a;] when don't set a value for variable "@id_a"
  • [#1625] Fail to insert or update emoji/uncommon character without jdbc param "characterEncoding=utf8", thanks to @feixuefubing for reporting the bug.
  • [#1454] [load data infile 'xxx' into table t (@colA,@colB)] get wrong resultset
  • [#1243] Connect error when client driver is mariadb and backend mysql's sql_mode is 'NO_ENGINE_SUBSTITUTION'
  • [#828] Error when insert sharding table without column name under the premise that sql_mode is ANSI

Breaking backward compatibility:

  • [#1710] Not Support Multi-WriteHost and SwitchType and provide new version of high availability for single dble. More Detail,see [2.12_failover] https://github.com/actiontech/dble-docs-cn/blob/master/2.Function/2.12_failover.md

本文分享自微信公众号 - 爱可生开源社区(ActiontechOSS),作者:雍正喵

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 分布式 | DBLE 3.20.07.0 来啦!

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

    爱可生开源社区
  • 分布式 | ddl 失败在 dble 中排查过程

    爱可生 dble 项目测试组成员,负责 dble 相关测试工作,拥有多年数据库中间件测试经验,擅长故障排查及性能调优。

    爱可生开源社区
  • 分布式 | dble 中分布式时间戳方式的全局序列

    爱可生 dble 项目团队成员,主要负责 dble 相关的日常测试工作,擅长对 dble 中出现的问题进行排查。热爱测试工作,余生欲将测试工作进行到底。

    爱可生开源社区
  • 在不确定的情况下,转向数据驱动的平权行动政策(cs)

    本文研究的是在一个集中式系统下的大学招生,该系统使用等级和标准化考试分数来匹配申请者的大学项目。本文考虑的是平权行动政策,旨在增加来自弱势群体的录取人数。由于这...

    用户7454091
  • 在Reddit中发现并分类语言偏见 (CS CL)

    我们提出了一种数据驱动的方法,使用词嵌入来发现讨论平台Reddit上的语言偏见并进行分类。作为独立的用户社区空间,Reddit等平台与种族主义、性别歧视和其他形...

    Antonia
  • CSS中的计数器

         <p>Place the flour in a large bowl, make a well in the centre and pour in t...

    大江小浪
  • SAP UI5 Web Component的React表格控件用法

    从@ui5/webcomponents-react导入表格组件AnalyticalTable:

    Jerry Wang
  • 06-移动端开发教程-fullpage框架

    CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js。我们经常见到一些全屏的特绚丽页面,手指或者鼠标...

    老马
  • Kafka技术知识总结之九——Kafka消息压缩与日志压缩

    Kafka 日志压缩类似于 Redis 持久化的 RDB 模式,假设 Kafka 崩溃,通过日志文件恢复最终状态时,Kafka 只需要关心最新状态,并不关心每一...

    剑影啸清寒
  • 06-移动端开发教程-fullpage框架

    CSS3的新特性已经讲完了,接下来我们看一下jQuery的一个全屏jQuery全屏滚动插件fullPage.js。我们经常见到一些全屏的特绚丽页面,手指或者鼠标...

    老马

扫码关注云+社区

领取腾讯云代金券