分布式 NewSQL 数据库TiDB 3.1.0 版本发布,修复多项问题

前言

TiDB 是一款定位于在线事务处理/在线分析处理( HTAP: Hybrid Transactional/Analytical Processing)的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。同时兼容 MySQL 协议和生态,迁移便捷,运维成本极低。

架构

TiDB 3.1.0 更新内容

一、兼容性变化

TiDB支持
1、TiDB 在启动服务时,在开启 report-status 配置项情况下,如果发现 HTTP 监听端口不可用,则直接退出启动 #16291

Tools
1、Backup & Restore (BR)
      BR 不支持在 3.1 GA 版本之前的 TiKV 集群上进行恢复 #233

二、新功能

TiDB

1、支持在 explain format = “dot” 中展示 coprocessor 任务的信息 #16125
2、通过 disable-error-stack 配置项减少日志的冗余 stack 信息 #16182

Placement Driver (PD)
1、优化热点 Region 调度 #2342

TiFlash
1、添加上报 DeltaTree 引擎读写负载相关 metrics 信息
2、支持 fromUnixTime 和 dateFormat
3、函数下推默认禁用粗粒度索引过滤器

TiDB Ansible 1、新增 TiFlash 监控 #1253 #1257
2、优化 TiFlash 配置参数 #1262 #1265 #1271
3、优化 TiDB 启动脚本 #1268

三、Bug修复

TiDB
1、修复 merge join 在某些场景下 panic 的问题 #15920
2、修复在计算选择率时重复考虑某些表达式的问题 #16052
3、修复极端情况下 load 统计信息可能出现的 panic 的问题 #15710
4、修复 SQL query 中存在等价表达式在某些情况下无法识别导致报错的问题 #16015
5、修复从一个数据库中查询另一个数据库的 view 时报错的问题 #15867
6、修复 fast analyze handle 列时 panic 的问题 #16080
7、修复 current_role 输出结果字符集不正确的问题 #16084
8、完善 MySQL 连接握手错误相关日志 #15799
9、修复加载审计插件后端口探测活动导致 panic 的问题 #16065
10、修复因 TypeNull 类被错误识别为变长类型,导致 left join 上的 sort 算子 panic 的问题 #15739
11、修复监控 session 重试错误计数不准确的问题 #16120
12、修复在 ALLOW_INVALID_DATES 模式下,weekday 结果出错的问题 #16171
13、修复在集群中存在 TiFlash 节点时,GC 可能不能正常工作的问题 #15761
14、修复创建 hash 分区表时指定非常大的分区数量导致 TiDB OOM 的问题 #16219
15、让 union 语句的行为和 select 语句保持相同,修复把 warnings 当 error 的问题 #16138
16、修复 TopN 下推到 mocktikv 中的执行错误 #16200
17、增大 chunk.column.nullBitMap 的初始化长度,以避免多余的 runtime.growslice 开销 #16142

TiKV
1、修复 replica read 导致 TiKV panic 的问题 #7418 #7369
2、修复 restore 产生许多空 Region 的问题 #7419
3、修复重复的 resolve lock 请求可能会破坏悲观事务原子性的问题 #7389

TiFlash
1、修复从 TiDB 同步 schema 时,进行 rename table 时潜在的问题
2、修复多数据路径配置下进行 rename table 会导致数据丢失的问题
3、修复某些场景下 TiFlash 存储空间上报错误的问题
4、修复开启 Region Merge 情况下从 TiFlash 读取时潜在的问题

Tools
1、TiDB Binlog
      修复因为 TiFlash 相关的 DDL job 导致 Drainer 同步中断的问题 #948 #942

2、BR
     修复关闭 checksum 情况下,仍然执行 checksum 的问题 #223
     修复 TiDB 开启 auto-random 或 alter-pk 时,增量备份失败的问题 #230 #231