TiDB 6.5.1 Release Notes

发版日期:2023 年 3 月 10 日

TiDB 版本:6.5.1

试用链接:快速体验 | 生产部署 | 下载离线包

兼容性变更

  • 自 2023 年 2 月 20 日起,新发布的 TiDB 和 TiDB Dashboard 版本(包含 6.5.1),默认关闭遥测功能,即默认不再收集使用情况信息分享给 PingCAP。如果升级至这些版本前使用默认的遥测配置,则升级后遥测功能处于关闭状态。具体的版本可参考 TiDB 版本发布时间线

  • 从 v1.11.3 起,新部署的 TiUP 默认关闭遥测功能,即默认不再收集使用情况信息。如果从 v1.11.3 之前的 TiUP 版本升级至 v1.11.3 或更高 TiUP 版本,遥测保持升级前的开启或关闭状态。

  • 由于可能存在正确性问题,分区表目前不再支持修改列类型 #40620 @mjonss

  • TiKV 配置项 advance-ts-interval 默认值由 1s 修改为 20s。你可以通过调整该配置项提高 Stale Read 数据的时效性(即减少延时),详情参见减少 Stale Read 延时

改进提升

  • TiDB

    • 从 v6.5.1 起,由 v1.4.3 或以上版本的 TiDB Operator 部署的 TiDB 全栈支持 IPv6 地址,这意味着 TiDB 可以支持更大的地址空间,并提供更好的安全性和网络性能。

      • 完全支持 IPv6 寻址:TiDB 支持使用 IPv6 地址进行所有网络连接,包括客户端连接、节点之间的内部通信以及与外部系统的通信。
      • 双栈支持:如果你尚未准备好完全切换到 IPv6,TiDB 也支持双栈网络。这意味着你可以在同一个 TiDB 集群中使用 IPv4 和 IPv6 地址,可以通过配置 IPv6 优先的方式来选择网络部署模式。

      IPv6 部署相关信息,请参考 TiDB on Kubernetes 用户文档

    • 支持指定集群初次启动时的初始化 SQL 脚本 #35624 @morgo

      TiDB v6.5.1 新增 initialize-sql-file 配置项。集群初次启动时,你可通过命令行参数 --initialize-sql-file 指定执行的 SQL 脚本。该功能可用于修改系统变量的值、创建用户或分配权限等。更多信息,请参考用户文档

    • 定期清理过期的 Region 缓存,避免内存泄漏和性能下降问题 #40461 @sticnarf

    • 新增 --proxy-protocol-fallbackable 配置项,控制是否启用 PROXY 协议回退模式。如果设置为 true,TiDB 可以接受非 PROXY 协议规范或者没有发送 PROXY 协议头的客户端连接 #41409 @blacktear23

    • 提升了 Memory Tracker 的准确度 #40900 #40500 @wshwsh12

    • 当执行计划缓存无法生效时,系统会通过 Warning 返回原因 #40210 @qw4990

    • 改进了条件优化器在进行越界估算时的策略 #39008 @time-and-fate

  • TiKV

    • 支持在小于 1 core 的 CPU 下启动 TiKV #13586 #13752 #14017 @andreid-db
    • 将 Unified Read Pool 的线程上限 (readpool.unified.max-thread-count) 提高至 CPU 配额的 10 倍 #13690 @v01dstar
    • 为了节省跨域流量,resolved-ts.advance-ts-interval 的默认值从 "1s" 修改为 "20s" #14100 @overvenus
  • TiFlash

    • 显著提升 TiFlash 在大数据量下的启动速度 #6395 @hehechen
  • Tools

    • Backup & Restore (BR)

      • 优化 TiKV 端下载日志备份文件的并发度,提升常规场景下 PITR 恢复的性能 #14206 @YuJuncen
    • TiCDC

错误修复

  • TiDB

    • 修复 pessimistic-auto-commit 配置项对 “Point Get” 查询不生效的问题 #39928 @zyguan
    • 修复 INSERTREPLACE 语句在长会话连接中执行可能造成 Panic 的问题 #40351 @fanrenhoo
    • 修复了 auto analyze 导致 graceful shutdown 耗时长的问题 #40038 @xuyifangreeneyes
    • 修复了 DDL 在 ingest 过程中可能会发生数据竞争的问题 #40970 @tangenta
    • 修复了添加索引时可能导致数据竞争的问题 #40879 @tangenta
    • 修复了表 Region 比较多时因 Region 缓存失效导致加索引效率低下的问题 #38436 @tangenta
    • 修复了 TiDB 在初始化时有可能死锁的问题 #40408 @Defined2014
    • 修复了 TiDB 构造 key 范围时对 NULL 值处理不当,导致读取非预期数据的问题 #40158 @tiancaiamao
    • 修复了内存重用导致的在某些情况下系统变量的值会被错误修改的问题 #40979 @lcwangchao
    • 修复了在执行 TTL 任务时,如果表的主键包含 ENUM 类型的列任务会失败的问题 #40456 @lcwangchao
    • 修复了在添加唯一索引时有可能会 panic 的问题 #40592 @tangenta
    • 修复了并发 truncate 同一张表时,部分 truncate 操作无法被 MDL 阻塞的问题 #40484 @wjhuang2016
    • 修复了当动态裁剪模式下的分区表有 global binding 时,TiDB 重启失败的问题 #40368 @Yisaer
    • 修复使用 “Cursor Read” 方式读取数据时可能因为 GC 而报错的问题 #39447 @zyguan
    • 修复 SHOW PROCESSLIST 信息中未显示 EXECUTE 语句的问题 #41156 @YangKeao
    • 修复了 globalMemoryControl 在终止查询时可能会遇上 KILL 不结束的问题 #41057 @wshwsh12
    • 修复了 indexMerge 遇到错误后可能会导致 TiDB 崩溃的问题 #41047 #40877 @guo-shaoge @windtalker
    • 修复 ANALYZE 语句可能会被 KILL 终止的问题 #41825 @XuHuaiyu
    • 修复了 indexMerge 中可能会出现 goroutine 泄露的问题 #41545 #41605 @guo-shaoge
    • 修复了无符号的 TINYINT/SMALLINT/INT 和小于 0DECIMAL/FLOAT/DOUBLE 类型比较时,结果可能出错的问题 #41736 @LittleFall
    • 修复了开启系统变量 tidb_enable_reuse_chunk 后可能会出现内存泄露的问题 #40987 @guo-shaoge
    • 修复了时区中的数据争用可能导致数据和索引不一致问题 #40710 @wjhuang2016
    • 修复了 batch cop 在执行过程中的 scan detail 信息不准确的问题 #41582 @you06
    • 修复 cop 并发度上限不受限制的问题 #41134 @you06
    • 修复 cursor readstatement context 被错误缓存的问题 #39998 @zyguan
    • 周期性清理过时的 Region 缓存以避免内存泄露和性能倒退 #40355 @sticnarf
    • 修复对包含 year <cmp> const 的查询使用 Plan Cache 时结果可能出错的问题 #41628 @qw4990
    • 修复查询区间太多且数据改动量大时估算误差可能较大的问题 #39593 @time-and-fate
    • 修复使用 Plan Cache 时部分条件无法被下推通过 Join 算子的问题 #40093 #38205 @qw4990
    • 修复 IndexMerge 计划在 SET 类型列上可能生成错误区间的问题 #41273 #41293 @time-and-fate
    • 修复 Plan Cache 处理 int_col <cmp> decimal 条件时可能缓存 FullScan 计划的问题 #40679 #41032 @qw4990
    • 修复 Plan Cache 处理 int_col in (decimal...) 条件时可能缓存 FullScan 计划的问题 #40224 @qw4990
    • 修复 ignore_plan_cache hint 对 INSERT 语句可能不生效的问题 #40079 #39717 @qw4990
    • 修复 Auto Analyze 可能阻碍 TiDB 退出的问题 #40038 @xuyifangreeneyes
    • 修复在分区表的 Unsigned Primary Key 上可能构造错误访问区间的问题 #40309 @winoros
    • 修复 Plan Cache 可能缓存 Shuffle 算子导致返回错误结果的问题 #38335 @qw4990
    • 修复在分区表上创建 Global Binding 后可能导致 TiDB 启动错误的问题 #40368 @Yisaer
    • 修复慢日志中查询计划算子可能缺失的问题 #41458 @time-and-fate
    • 修复错误下推包含虚拟列的 TopN 算子到 TiKV 或 TiFlash 导致结果错误的问题 #41355 @Dousir9
    • 修复添加索引时数据不一致的问题 #40698 #40730 #41459 #40464 #40217 @tangenta
    • 修复添加索引时出现 PessimisticLockNotFound 的报错问题 #41515 @tangenta
    • 修复添加唯一索引时误报重复键的问题 #41630 @tangenta
    • 修复 TiDB 使用 paging 时性能下降的问题 #40741 @solotzg
  • TiKV

    • 修复 Resolved TS 导致网络流量升高的问题 #14092 @overvenus
    • 修复 TiDB 中事务在执行悲观 DML 失败后,再执行其他 DML 时,如果 TiDB 和 TiKV 之间存在网络故障,可能会造成数据不一致的问题 #14038 @MyonKeminta
    • 修复转换 const Enum 类型到其他类型时报错的问题 #14156 @wshwsh12
    • 修复 cop task 分页计算错误的问题 #14254 @you06
    • 修复 batch cop 模式下 scan_detail 不准确问题 #14109 @you06
    • 修复 Raft Engine 中的一个潜在错误,该错误可能导致 TiKV 检测到 Raft 数据损坏而无法重启 #14338 @tonyxuqqi
  • PD

    • 修复 replace-down-peer 在特定条件下执行变慢的问题 #5788 @HundunDM
    • 修复 PD 可能会非预期地向 Region 添加多个 Learner 的问题 #5786 @HunDunDM
    • 修复 Region Scatter 任务会生成非预期的多余副本的问题 #5909 @HundunDM
    • 修复调用 ReportMinResolvedTS 过于频繁导致 PD OOM 的问题 #5965 @HundunDM
    • 修复 Region Scatter 接口可能导致 leader 分布不均匀的问题 #6017 @HunDunDM
  • TiFlash

    • 修复半连接在计算笛卡尔积时,使用内存过量的问题 #6730 @gengliqi
    • 修复 TiFlash 日志搜索过慢的问题 #6829 @hehechen
    • 修复 TiFlash 在反复重启后由于误删文件而无法启动的问题 #6486 @JaySon-Huang
    • 修复 TiFlash 在添加新列后查询可能报错的问题 #6726 @JaySon-Huang
    • 修复 TiFlash 配置不支持 IPv6 的问题 #6734 @ywqzzy
  • Tools

    • Backup & Restore (BR)

      • 修复 PD 与 TiDB server 的连接故障导致 PITR 备份进度不推进的问题 #41082 @YuJuncen
      • 修复 PD 与 TiKV 的连接故障导致 TiKV 不能监听 PITR 任务的问题 #14159 @YuJuncen
      • 修复 PITR 不支持 PD 集群配置变更的问题 #14165 @YuJuncen
      • 修复 PITR 功能不支持 CA-bundle 认证的问题 #38775 @3pointer
      • 修复 PITR 备份任务被删除时,存在备份信息残留导致新任务出现数据不一致的问题 #40403 @joccau
      • 修复使用 br debug 命令解析 backupmeta 文件导致的 panic 的问题 #40878 @MoCuishle28
      • 修复在某些情况下因无法获取 Region 大小导致恢复失败的问题 #36053 @YuJuncen
      • 修复当 TiDB 集群不存在 PITR 备份任务时,resolve lock 频率过高的问题 #40759 @joccau
      • 修复恢复数据到正在运行日志备份的集群,导致日志备份文件无法恢复的问题 #40797 @Leavrth
      • 修复全量备份失败后,从断点重启备份时 BR 会 panic 的问题 #40704 @Leavrth
      • 修复 PITR 错误被覆盖的问题 #40576@Leavrth
      • 修复 PITR 备份任务在 advance owner 与 gc owner 不同时 checkpoint 不推进的问题 #41806 @joccau
    • TiCDC

      • 修复 changefeed 在 TiKV、TiCDC 节点扩缩容等特殊场景下卡住的问题 #8174 @hicqu
      • 修复 redo log 存储路径没做权限预检查的问题 #6335 @CharlesCheung96
      • 修复 redo log 容忍 S3 存储故障的时间过短的问题 #8089 @CharlesCheung96
      • 修复不能通过配置文件修改 transaction_atomicityprotocol 参数的问题 #7935 @CharlesCheung96
      • 修复在同步大量表时 checkpoint 不推进问题 #8004 @overvenus
      • 修复当同步的延迟过大时 apply redo log 可能会出现 OOM 的问题 #8085 @CharlesCheung96
      • 修复当开启 redo log 写 meta 时性能下降的问题 #8074 @CharlesCheung96
      • 修复没有配置大事务拆分时,同步数据超过 context deadline 的问题 #7982 @hi-rustin
      • 修复在 PD 异常时,暂停一个 changefeed 会错误设置状态的问题 #8330 @sdojjy
      • 修复下游为 TiDB 或 MySQL 时,无主键且非空唯一索引所在列指定了 CHARACTER SET 同步时可能会出现数据不一致的问题 #8420 @asddongmen
      • 修复 table scheduling 或 blackhole sink 存在 panic 的问题 #8024 #8142 @hicqu
    • TiDB Data Migration (DM)

      • 修复 binlog-schema delete 命令执行失败的问题 #7373 @liumengya94
      • 修复当最后一个 binlog 是被 skip 的 DDL 时,checkpoint 不推进的问题 #8175 @D3Hunter
      • 修复当在某个表上同时指定 UPDATE 和非 UPDATE 类型的表达式过滤规则 expression-filter 时,所有 UPDATE 操作被跳过的问题 #7831 @lance6716
    • TiDB Lightning

      • 修复 precheck 检查项有时无法监测到之前的导入失败遗留的脏数据的问题 #39477 @dsdashun
      • 修复 TiDB Lightning 在 split-region 阶段发生 panic 的问题 #40934 @lance6716
      • 修复冲突处理逻辑 (duplicate-resolution) 可能导致 checksum 不一致的问题 #40657 @gozssky
      • 修复在并行导入时,当除最后一个 TiDB Lightning 实例外的其他实例都遇到本地重复记录时,TiDB Lightning 可能会错误地跳过冲突处理的问题 #40923 @lichunzhu
      • 修复了在使用 Local Backend 模式导入数据时,当导入目标表的复合主键中存在 auto_random 列,且源数据中没有指定该列的值时,相关列没有自动生成数据的问题 #41454 @D3Hunter