TiDB 4.0 RC.1 Release Notes
发版日期:2020 年 4 月 28 日
TiDB 版本:4.0.0-rc.1
兼容性变化
重点修复的 Bug
-
TiDB
-
修复由于未检查
MemBuffer,事务内执行INSERT ... ON DUPLICATE KEY UPDATE语句插入多行重复数据可能出错的问题 #16689 - 修复 lock 多行重复 keys 时导致数据索引不一致的问题 #16769
- 修复回收空闲 gRPC 连接导致 TiDB panic 的问题 #16303
-
TiKV
-
修复 TiDB 探活请求触发的死锁问题 #7540
- 修复事务的 min commit ts 可能溢出、影响数据正确性的问题 #7642
-
TiFlash
-
修正多数据路径配置下进行 rename table 会导致数据丢失的问题
- 修正当 Region 处于 merge 状态时读取产生的数据错误
- 修正当 Region 处于非 normal 状态时读取产生的数据错误
- 修正 TiFlash 中表名的映射方式以正确支持
recover table/flashback table - 修正数据存储路径以解决
rename table时潜在的数据丢失问题 - 修正 Super batch 开启后,有一定概率 TiDB panic 的问题
- 修正在线更新时的读模型以优化读性能
-
TiCDC
-
修复 TiCDC 内部维护的 schema 信息对于读写操作时序问题没有正确处理导致同步失败问题 #438 #450 #478 #496
- 修复 TiKV client 遇到部分 TiKV 异常没有正确维护内部资源的 bug #499 #492
- 修复节点异常残留元数据信息没有正确清理的 bug #488 #504
- 修复 TiKV client 没有正确处理 prewrite 重复发送的问题 #446
- 修复 TiKV client 没有正确处理在初始化前接收到冗余 prewrite 的问题 #448
-
Backup & Restore (BR)
-
修复关闭 checksum 情况下,仍然执行 checksum 的问题 #223
- 修复 TiDB 开启 auto-random 或 alter-pk 时,增量备份失败的问题 #230 #231
新功能
-
TiDB
-
支持发送
batch coprocessor请求给 TiFlash #16226 - 默认打开 Coprocessor cache #16710
- 在 SQL 语句的特殊注释中,只有被注册了语句片段才能被 parser 正常解析,否则将被忽略 #16157
- 支持使用
SHOW CONFIG语法显示 PD 和 TiKV 的配置 #16475 -
TiKV
-
支持在备份到 S3 时使用用户提供的 KMS key 进行服务端加密 #7630
- 支持基于负载的 Region split #7623
- 支持 common name 验证 #7468
- 通过检查文件锁避免多个 TiKV 实例绑定相同的地址 #7447
- Encryption at rest 支持 AWS KMS #7465
-
Placement Driver (PD)
-
移除
config manager以使其它组件自行控制它们的配置 #2349 -
TiFlash
-
添加 DeltaTree 引擎读写负载相关 metrics 上报
- 缓存
handle列和version列减小单次读请求的磁盘 I/O - 增加了 TiFlash 对于
FromUnixTime和Date_format函数的支持 - 根据第一块盘估算全局状态并上报
- Grafana 添加 DeltaTree 引擎读写负载相关图表
- 优化 TiFlash chunk encode decimal 的数据
- 实现了 Diagnostics(SQL 诊断)的 gRPC API,以支持
INFORMATION_SCHEMA.CLUSTER_INFO等系统表的查询 -
TiCDC
-
在 Kafka sink 模块提供发送批量消息支持 #426
- 支持在 processor 内使用文件排序 #477
- 增加自动 resolve lock 的支持 #459
- 增加自动向 PD 设置 TiCDC 服务级别 safepoint 的功能 #487
- 增加数据同步时的时区配置 #498
-
Backup & Restore (BR)
-
支持在存储的 URL 中配置 S3/GCS #246
Bug 修复
-
TiDB
-
修复系统表由于 unsigned 列定义导致无法正确显示负数的问题 #16004
- 当使用
use_index_mergehint 包含不存在的索引时添加警告 #15960 - 禁止多个 TiDB server 共享同一个临时目录 #16026
- 修复打开 plan cache 时,执行
explain for connection语句 panic 的问题 #16285 - 修复显示
tidb_capture_plan_baselines系统变量不正确的问题 #16048 - 修复
prepare语句中的group by语句解析错误的问题 #16377 - 修复
analyze primary key可能 panic 的问题 #16081 - 修复
cluster_info系统表中 TiFlash 节点信息错误的问题 #16024 - 修复 index merge 可能 panic 的问题 #16360
- 修复 index merge 遇到 generated column 时导致结果错误的问题 #16359
- 修复
show create table语句显示 sequence 默认值错误的问题 #16526 - 修复主键使用 sequence 作为默认值时出现
not-null的错误的问题 #16510 - 修复当 TiKV 持续返回
StaleCommand期间执行 SQL 卡住不报错的问题 #16530 - 修复
CREATE DATABASE时仅指定COLLATE时会报错的问题,同时在SHOW CREATE DATABASE结果中添加缺失的COLLATE部分 #16540 - 修复打开 plan-cache 时,分区裁剪失败的问题 #16723
- 修复点查在 handle 溢出时返回错误结果的问题 #16755
- 修复等值时间查询
slow_query系统表返回错误结果的问题 #16806 -
TiKV
-
解决 OpenSSL 的安全性问题:CVE-2020-1967 #7622
- 避免将 BatchRollback 产生的 rollback 记录标为保护的记录以改善冲突较多场景下的性能 #7604
- 修复锁竞争严重的场景下,不必要地唤醒事务导致多余的重试和性能下降的问题 #7551
- 修复多次 merge 时,Region 可能卡住的问题 #7518
- 修复删除 learner 时,learner 可能并未被删除的问题 #7518
- 修复 follower read 可能使 raft-rs panic 的问题 #7408
- 修复 SQL 可能因 “group by constant” 错误失败的问题 #7383
- 修复当一个乐观锁对应的 primary lock 是悲观锁时,该乐观锁可能阻塞读的问题 #7328
-
Placement Driver (PD)
-
修复部分 API TLS 认证失败的问题 #2363
- 修复
configAPI 不能识别带有前缀的配置项的问题 #2354 - 修复找不到 scheduler 时会返回 500 错误的问题 #2328
- 修复
scheduler config balance-hot-region-scheduler list命令返回 404 错误的问题 #2321 -
TiFlash
-
禁用存储引擎的粗糙索引优化
- 修正对 Region 进行 resolve lock 时遇到需要跳过的 lock 抛异常的问题
- 修正 Coprocessor 统计信息收集的 NPE
- 修正 Region meta 的检查以保证 Region Split/Region Merge 流程的正确性
- 修正对 Coprocessor response 大小未做估算导致的消息大小超过 gRPC 限制的问题
- 修正 TiFlash 对
AdminCmdType::Split命令的处理
