TiDB 6.5.9 Release Notes
发版日期:2024 年 4 月 12 日
TiDB 版本:6.5.9
兼容性变更
- 在 TiKV 中提供 RocksDB track-and-verify-wals-in-manifest 配置,用于调查 WAL (Write Ahead Log) 可能损坏问题 #16549 @v01dstar
- DR Auto-Sync 支持设置 wait-recover-timeout,用于控制当网络恢复后切换回
sync-recover
状态的等待时间 #6295 @disksing
改进提升
TiDB
- 当设置
force-init-stats
为true
时,即 TiDB 启动时等待统计信息初始化完成后再对外提供服务,这一设置不再影响 HTTP server 提供服务,用户仍可查看监控 #50854 @hawkingrei - 优化
ANALYZE
语句卡住元数据锁的问题 #47475 @wjhuang2016
- 当设置
TiKV
- 删除非必要的 async block 以减少内存使用 #16540 @overvenus
- 在 raftstore 线程中避免进行快照文件的 IO 操作,提高 TiKV 稳定性 #16564 @Connor1996
- 增加 peer 和 store 消息的 slow log #16600 @Connor1996
Tools
Backup & Restore (BR)
- 优化滚动重启场景下日志备份的 Recovery Point Objective (RPO)。现在,在滚动重启期间,日志备份任务的 checkpoint lag 将更小 #15410 @YuJuncen
- 提高日志备份对 Merge 的容忍度,如果遇到合理的长时间 Merge 操作,日志备份任务不容易进入 Error 状态 #16554 @YuJuncen
- 在遇到较大的 checkpoint lag 时,日志备份支持自动放弃任务,以避免日志备份长时间阻塞 GC,从而防止集群出现问题 #50803 @RidRisR
- 缓解了 Region leadership 迁移导致 PITR 日志备份进度延迟变高的问题 #13638 @YuJuncen
- 使用更优的算法,提升数据恢复过程中 SST 文件合并的速度 #50613 @Leavrth
- 支持在数据恢复过程中批量 ingest SST 文件 #16267 @3pointer
- 移除使用 Google Cloud Storage (GCS) 作为外部存储时一个过时的兼容性检查 #50533 @lance6716
- 在日志备份过程中,增加了在日志和监控指标中打印影响 global checkpoint 推进的最慢的 Region 的信息 #51046 @YuJuncen
- 重构 BR 异常处理机制,提高对未知错误的容忍度 #47656 @3pointer
错误修复
TiDB
- 修复大量创建表时,新表可能缺失
stats_meta
信息导致后续的查询估算无法获取准确行数信息的问题 #36004 @xuyifangreeneyes - 修复已删除的表仍然会计入到 Grafana 的
Stats Healthy Distribution
面板的问题 #39349 @xuyifangreeneyes - 修复当查询涉及
MemTableScan
算子时,TiDB 没有处理 SQL 语句中WHERE <column_name>
过滤条件的问题 #40937 @zhongzc - 修复当子查询中的
HAVING
子句包含关联列时,查询结果可能出错的问题 #51107 @hawkingrei - 修复当使用 CTE(公共表达式)访问缺少统计信息的分区表时,查询结果可能出错的问题 #51873 @qw4990
- 修复当 SQL 语句中包含
JOIN
且SELECT
列表只包含常量时,使用 MPP 执行查询可能导致查询结果出错的问题 #50358 @yibin87 - 修复
AUTO_INCREMENT
属性在分配自增 ID 时,由于不必要的事务冲突导致 ID 不连续的问题 #50819 @tiancaiamao - 修复 Grafana 监控指标
tidb_statistics_auto_analyze_total
没有显示为整数的问题 #51051 @hawkingrei - 修复并发合并分区表的全局统计信息时可能遇到报错的问题 #48713 @hawkingrei
- 修复当列的默认值被删除时,获取该列的默认值会报错的问题 #50043 #51324 @crazycs520
- 修复了当列处于 write-only 状态时
INSERT ignore
语句无法正确填充默认值的问题 #40192 @YangKeao - 修复
shuffleExec
意外退出导致 TiDB 崩溃的问题 #48230 @wshwsh12 - 修复当
HashJoin
算子落盘失败时 goroutine 可能泄露的问题 #50841 @wshwsh12 - 修复在一个事务中提交多条语句时重命名表不生效的问题 #39664 @tiancaiamao
- 修复
IN()
谓词中包含NULL
时,查询结果错误的问题 #51560 @winoros - 修复一些情况下查询
BINARY
类型的 JSON 可能会报错的问题 #51547 @YangKeao - 修复并行 Apply 在表为聚簇索引时可能导致结果错误的问题 #51372 @guo-shaoge
- 修复
init-stats
流程可能导致 TiDB panic 以及load stats
流程直接退出的问题 #51581 @hawkingrei - 修复
auto analyze
在处理分区表时,tidb_merge_partition_stats_concurrency
变量未生效的问题 #47594 @hawkingrei - 修复设置统计信息自动更新的时间窗口后,时间窗口外统计信息仍然可能更新的问题 #49552 @hawkingrei
- 修复
approx_percentile
函数可能导致 TiDB panic 的问题 #40463 @xzhangxian1008 - 修复
BIT
类型的列在参与一些函数计算时,可能会因为 decode 失败导致查询出错的问题 #49566 #50850 #50855 @jiyfhust - 修复 CTE 查询使用的内存超限时可能会导致 goroutine 泄露的问题 #50337 @guo-shaoge
- 修复在配置
force-init-stats
的情况下,TiDB 没有监听对应端口的问题 #51473 @hawkingrei - 修复主键类型是
VARCHAR
时,执行ALTER TABLE ... COMPACT TIFLASH REPLICA
可能会错误地提前结束的问题 #51810 @breezewish - 修复修改变量
tidb_server_memory_limit
后,tidb_gogc_tuner_threshold
未进行相应调整的问题 #48180 @hawkingrei - 修复使用聚合函数分组计算时可能报错
Can't find column ...
的问题 #50926 @qw4990 - 修复
REVERSE
函数在处理BIT
类型列时报错的问题 #50850 #50855 @jiyfhust - 修复
INSERT IGNORE
向正在执行 DDL 的表中批量插入数据时报错的问题 #50993 @YangKeao - 修复 TiDB Server 通过 HTTP 接口添加 label 返回成功但不生效的问题 #51427 @you06
- 修复
IFNULL
函数返回的类型和 MySQL 不一致的问题 #51765 @YangKeao - 修复 TiDB Server 在初始化完成之前就标记为 Health 的问题 #51596 @shenqidebaozi
- 修复查询
TIDB_HOT_REGIONS
表时结果返回内存表的问题 #50810 @Defined2014 - 修复
EXCHANGE PARTITION
在处理外键时判断错误的问题 #51807 @YangKeao - 修复包含 CTE 的查询会导致 TiDB panic 的问题 #41688 @srstack
- 修复大量创建表时,新表可能缺失
TiKV
- 修复 Peer 销毁过程被 apply snapshot 操作中断后,没有在 apply snapshot 完成后继续执行销毁操作的问题 #16561 @tonyxuqqi
- 修复 RocksDB 中非活跃的 WAL (Write Ahead Log) 可能损毁数据的问题 #16705 @Connor1996
- 修复巴西和埃及时区转换错误的问题 #16220 @overvenus
- 修复监控指标
tikv_unified_read_pool_thread_count
有时没有数据的问题 #16629 @YuJuncen - 修复 JSON 整型数值在大于
INT64
最大值但小于UINT64
最大值时会被 TiKV 解析成FLOAT64
导致结果和 TiDB 不一致的问题 #16512 @YangKeao - 修复乐观事务在执行期间被其它事务发起 resolve lock 时,如果事务的 primary key 上之前有通过异步提交 (Async Commit) 或一阶段提交 (1PC) 模式提交的数据,事务的原子性可能有小概率被破坏问题 #16620 @MyonKeminta
PD
- 修复扩缩容进度显示不准确的问题 #7726 @CabinfeverB
- 修复调用
MergeLabels
函数时存在数据竞争的问题 #7535 @lhy1024 - 修复 PD 监控项
learner-peer-count
在发生 Leader 切换后未同步旧监控值的问题 #7728 @CabinfeverB - 修复
SHOW CONFIG
的查询结果包含已废弃的trace-region-flow
配置项的问题 #7917 @rleungx
TiFlash
- 修复副本迁移时,因 TiFlash 与 PD 之间网络连接不稳定可能引发的 TiFlash panic 的问题 #8323 @JaySon-Huang
- 修复 TiFlash 发生远程读时可能会 crash 的问题 #8685 @solotzg
- 修复
ENUM
列在 chunk encode 时可能会导致 TiFlash crash 的问题 #8674 @yibin87 - 修复在非严格
sql_mode
下插入数据到带有异常默认值的列可能导致 TiFlash panic 的问题 #8803 @Lloyd-Pottiger - 修复
TIME
类型的列在精度修改后,如果发生 Region 迁移、分裂或合并,可能会导致查询出错的问题 #8601 @JaySon-Huang
Tools
Backup & Restore (BR)
TiCDC
- 修复恢复 changefeed 时 changefeed 的
checkpoint-ts
小于 TiDB 的 GC safepoint,没有及时报错snapshot lost caused by GC
的问题 #10463 @sdojjy - 修复在频繁执行 DDL 的场景中,由于错误的 BarrierTS 导致数据被写入到错误的 CSV 文件的问题 #10668 @lidezhu
- 修复 Syncpoint 表可能被错误同步的问题 #10576 @asddongmen
- 修复在调度表的同步任务时 TiCDC panic 的问题 #10613 @CharlesCheung96
- 修复 KV Client 数据争用导致 TiCDC panic 的问题 #10718 @asddongmen
- 修复使用 storage sink 时,在存储服务生成的文件序号可能出现回退的问题 #10352 @CharlesCheung96
- 修复 storage sink 场景下无法正常访问 Azure 和 GCS 对象存储的问题 #10592 @CharlesCheung96
- 修复
open-protocol
的 old value 部分错误地按照STRING
类型而非真正类型输出默认值的问题 #10803 @3AceShowHand - 修复当对象存储遇到暂时故障时,启用了最终一致性功能的 changefeed 可能直接失败的问题 #10710 @CharlesCheung96
- 修复恢复 changefeed 时 changefeed 的
TiDB Data Migration (DM)
TiDB Lightning