TiDB 6.5.1 Release Notes
发版日期:2023 年 3 月 10 日
TiDB 版本:6.5.1
兼容性变更
自 2023 年 2 月 20 日起,新发布的 TiDB 和 TiDB Dashboard 版本(包含 6.5.1),默认关闭遥测功能,即默认不再收集使用情况信息分享给 PingCAP。如果升级至这些版本前使用默认的遥测配置,则升级后遥测功能处于关闭状态。具体的版本可参考 TiDB 版本发布时间线。
- 系统变量 tidb_enable_telemetry 默认值由
ON
修改为OFF
。 - TiDB 配置项 enable-telemetry 默认值由
true
改为false
。 - PD 配置项 enable-telemetry 默认值由
true
改为false
。
- 系统变量 tidb_enable_telemetry 默认值由
从 v1.11.3 起,新部署的 TiUP 默认关闭遥测功能,即默认不再收集使用情况信息。如果从 v1.11.3 之前的 TiUP 版本升级至 v1.11.3 或更高 TiUP 版本,遥测保持升级前的开启或关闭状态。
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 脚本。该功能可用于修改系统变量的值、创建用户或分配权限等。更多信息,请参考用户文档。新增
--proxy-protocol-fallbackable
配置项,控制是否启用 PROXY 协议回退模式。如果设置为true
,TiDB 可以接受非 PROXY 协议规范或者没有发送 PROXY 协议头的客户端连接 #41409 @blacktear23改进了条件优化器在进行越界估算时的策略 #39008 @time-and-fate
TiKV
TiFlash
Tools
Backup & Restore (BR)
TiCDC
- 默认打开 pull-based sink 功能提升系统的吞吐 #8232 @hi-rustin
- 支持将 redo log 存储至兼容 GCS 或 Azure 协议的对象存储 #7987 @CharlesCheung96
- 采用异步模式实现 MQ sink 和 MySQL sink,提升 sink 的吞吐能力 #5928 @amyangfei @CharlesCheung96
错误修复
TiDB
- 修复 pessimistic-auto-commit 配置项对 “Point Get” 查询不生效的问题 #39928 @zyguan
- 修复
INSERT
或REPLACE
语句在长会话连接中执行可能造成 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
和小于0
的DECIMAL
/FLOAT
/DOUBLE
类型比较时,结果可能出错的问题 #41736 @LittleFall - 修复了开启系统变量
tidb_enable_reuse_chunk
后可能会出现内存泄露的问题 #40987 @guo-shaoge - 修复了时区中的数据争用可能导致数据和索引不一致问题 #40710 @wjhuang2016
- 修复了
batch cop
在执行过程中的 scan detail 信息不准确的问题 #41582 @you06 - 修复
cop
并发度上限不受限制的问题 #41134 @you06 - 修复
cursor read
中statement 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
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_atomicity
和protocol
参数的问题 #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)
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