TiDB 8.5.8 Release Notes
发版日期:2026 年 8 月 27 日
TiDB 版本:8.5.8
改进提升
TiDB
工具
TiCDC
- 优化 TiCDC Changefeed 在忽略删除事件时的扫描性能,减少包含大量删除操作的工作负载在追赶历史数据期间不必要的 DML 解码 #5430 @asddongmen
- 引入自适应扫描窗口算法,提升 TiCDC Event Service 在内存压力下的稳定性和吞吐量,减少 DDL 或同步点场景中的 Dispatcher 饥饿和重置事件 #4172 @asddongmen
- 优化 TiCDC Kafka Sink 校验流程,使校验更加轻量和完整:避免在校验期间执行仅在启动阶段需要的操作,对已有 Topic 也会检查 Schema Registry 等编码器依赖,并且仅在 TiCDC 需要创建 Topic 时校验
replication-factor#5618 #5720 @3AceShowHand - 优化启用 Claim-Check 时 TiCDC Kafka Sink 的资源使用,由同一 Sink 中的所有 Encoder 共享一个
ClaimCheck实例,减少外部存储客户端和连接的资源开销 #5719 @3AceShowHand - 简化并统一 TiCDC Kafka Sink 的错误处理,对配置错误、Admin API 错误和 Producer 错误采用一致的分类和封装方式,使重试判断和问题排查更加容易 #5790 @3AceShowHand
错误修复
TiDB
- 修复包含
MODIFY COLUMN的多 Schema 变更会回退到事务模式回填,而未能使用 Ingest 或分布式回填的问题 #70136 @joechenrh - 修复对分区表添加索引时,重组过程中进度可能倒退的问题 #62496 @GMHDBJD
- 修复
ADMIN ALTER DDL JOBS无法动态调整正在运行的事务模式回填任务的线程数或批次大小的问题 #70138 @joechenrh - 修复某个查询将
IN子查询用作嵌套NOT IN表达式的操作数时,TiDB 可能 panic 并终止用户会话的问题 #64854 @hawkingrei - 修复原本可安全使用执行计划缓存的查询在使用
JSON_EXTRACT()时,无法利用预处理或非预处理执行计划缓存的问题 #69522 @winoros - 修复通过
ALTER TABLE ADD COLUMN添加的虚拟生成列的统计信息可能初始化不正确,导致SHOW STATS_HISTOGRAMS输出不准确并产生不必要的占位统计信息加载的问题 #69160 @qw4990 - 修复 TiDB 在收到针对预处理语句的重复
COM_STMT_SEND_LONG_DATA请求,但这些语句一直未执行或重置时,连接内存使用量可能无限增长的问题 #70349 @djshow832 - 修复解析包含过深嵌套括号的 SQL 语句或优化器 Hint 时,TiDB 可能崩溃的问题 #70192 @Debra-He
- 修复批量 TSO 请求期间,由于 PD Client 生成了无效的嵌套 Runtime Trace 区域,可能导致 TiDB Runtime Trace 解析失败的问题 #69743 @YangKeao
- 修复
COM_CHANGE_USER认证失败后,连接可能处于不一致的会话状态的问题 #69691 @bb7133 - 修复
COM_STMT_SEND_LONG_DATA可为单个预处理语句无限累积参数数据的问题。TiDB 现在使用会话级max_allowed_packet限制累积数据大小,并在超限时返回数据包过大的错误 #69693 @bb7133 - 修复
UNCOMPRESS()处理特制的压缩输入时,可能消耗大量未跟踪的内存并超过查询内存配额的问题 #70198 @Debra-He - 修复无权限用户可通过
INFORMATION_SCHEMA.USER_ATTRIBUTES读取其他用户属性的问题 #70277 @djshow832 - 修复内存使用量频繁超过告警阈值时,记录 OOM 诊断 Goroutine Profile 可能延长 Stop-the-World 暂停时间并增加查询延迟的问题 #62080 @YangKeao
- 修复在悲观事务中执行
LOAD DATA LOCAL INFILE时,遇到可重试的锁冲突后可能会在内部重试,从而导致客户端连接状态不同步,并返回无效序列错误而非原始死锁错误的问题 #69793 @lance6716 - 修复执行
ALTER TABLE ... REORGANIZE PARTITION时,重建的全局索引可能缺少对应索引项(这些索引项本应来自分区顺序位于重组分区之后、但未参与重组的分区中的行),从而导致使用这些索引的查询漏掉数据行,并可能导致插入重复的索引值的问题 #70023 @mjonss - 修复 Join 操作、
UPDATE语句和DELETE语句可能为初始 Chunk 分配过多内存的问题,该问题在高并发或处理宽行的场景下尤为明显 #68545 @solotzg
- 修复包含
TiKV
- 修复 TiKV 会对快速处理完成的 Raftstore 消息批次执行不必要的慢日志消息格式化,造成额外 CPU 开销的问题 #19861 @pingyu
- 修复 TiKV Coprocessor 计算下推的
LIKE表达式时,如果涉及格式错误的 UTF-8 输入或模式、BIT值或某些排序规则,可能导致 TiKV panic 的问题 #66597 #67082 #19811 @jebter - 修复外部 SST Ingest 与前台写入并发竞争时,TiKV 可能生成不一致的 MVCC 状态,进而导致事务状态检查发生 panic 的问题 #19891 @gengliqi
- 修复在 FIPS 环境中无法使用
ENABLE_FIPS=1构建 TiKV 的问题 #19743 @LykxSassinator - 修复仅启用后台任务资源管控时,TiKV 会不必要地将事务调度器切换为优先级调度,可能导致写密集型工作负载出现 5% 到 10% 性能下降的问题 #19858 @glorv
- 修复在
tidb模式下使用 TiDB Lightning 导入数据时,TiKV 可能崩溃的问题 #18671 @Dog-Du - 修复 TiKV In-Memory Engine 在发生 etcd compaction 错误后可能停止更新 Region Label,导致 Label Watch 无限重试的问题 #19792 @akashchakrabortymsc-cmd
- 修复当内存引擎缓存预热卡住,且在 ACK 截止时间前重复收到 Leader Transfer 请求时,Region Leader 转移可能被无限阻塞的问题 #19776 @overvenus
- 修复 RocksDB Compaction 短暂出现峰值时,TiKV 可能执行不必要的写入流控的问题 #19667 @hbisheng
- 修复在目标 Store 完成注册前,如果 PD 临时返回
store-not-found错误,TiKV 可能永久阻塞 Raft 连接的问题 #19980 @LykxSassinator - 修复 TiKV 在执行外部 SST Ingest 时不再允许前台写入,导致 Ingest 期间写入延迟增加的问题 #19954 @gengliqi
PD
- 修复 PD
/metric/query和/metric/query_range接口可能被用于发起 SSRF 攻击或泄露上游响应详细信息的问题 @rleungx - 修复同一资源组内各 TiDB 实例请求速率不均衡时,RU Token 可能分配不均,导致高需求实例的 RU 等待时间过长和延迟升高的问题 #9605 @JmPotato
- 修复客户端指定任意
ConfigPath或类似路径的配置名称时,PD GlobalConfig gRPC API 可能访问预期命名空间之外的 etcd Key 的问题 #11079 @rleungx - 修复 PD 可能与调用方通过
pd-forwarded-host指定的任意地址建立出站 gRPC 连接,而没有将转发目标限制为当前 PD Leader 公布的客户端 URL 的问题 #11070 @rleungx - 修复新创建的资源组控制器与周期性状态更新发生竞争时,资源组客户端可能持续发送
NaNToken 请求的问题 #11022 @JmPotato - 修复在 PD Resource Manager Leader 切换后或新的 TiDB 实例加入时,新建的 Resource Control 客户端可能被分配到 0 RU,导致短暂的延迟尖峰或出现
ERROR 8252 Exceeded resource group quota limitation错误的问题 #11148 @JmPotato
- 修复 PD
TiFlash
工具
备份恢复 (BR)
TiCDC
- 修复 Maintainer 故障转移期间 TiCDC 可能创建重复的 Dispatcher,导致下游写入冲突的问题 #5083 @hongyunyan
- 修复 Kafka Controller 故障后,TiCDC 上下游数据可能不一致的问题 #5437 @3AceShowHand
- 修复升级 TiCDC 后,已有 Changefeed ID 的 JSON 元数据使用旧版
namespace字段而非keyspace时,Changefeed 可能消失的问题 #4079 @wlwilliamx - 修复复制
CREATE TABLE ... LIKE ...时,如果 Changefeed 过滤掉了被引用的源表,TiCDC Checkpoint 推进可能卡住的问题 #5150 @lidezhu - 修复 Changefeed 已完成、停止、删除或迁移到其他 Owner 后,TiCDC Owner 的 Checkpoint 时间戳和延迟指标仍保留旧值的问题 #5490 @asddongmen
- 修复在 TiCDC 新架构中发生故障转移或 Dispatcher 重置后,Changefeed 可能卡住的问题 #5553 @asddongmen
- 修复 TiCDC Maintainer 被移除且已开始执行关闭交接后,仍可能继续重新调度或重新创建 Dispatcher 的问题 #4827 @wlwilliamx
- 修复 TiCDC 清理残留的 Async Commit 锁时,
ScanLock的目标时间戳可能将 TiKV 本地 MaxTS 推进到最新 PD TSO 之后,导致过期锁清理失败的问题 #5418 @tenfyzhong - 修复表被删除后,TiCDC Event Service 可能重复扫描同一个 Raw Event,导致扫描进度停滞的问题 #5040 @asddongmen
- 修复 Maintainer 故障转移可能使正在执行的调度或 Merge Operator 处于不一致状态,导致 TiCDC 的表调度无法自动收敛的问题 #4763 @wlwilliamx
- 修复 Region Event 推送因流控而暂停时,TiCDC 在优雅退出过程中可能卡住的问题 #5608 @lidezhu
- 修复在 Maintainer 确认到达之前,TiCDC Table Trigger 的 Checkpoint 可能越过 Add Table DDL,导致新添加表的 Dispatcher 跳过后续表 DDL 的问题 #5401 @hongyunyan
- 修复同一次 Maintainer Heartbeat 中 Checkpoint 有所推进时,TiCDC 可能忽略不可重试的 Changefeed 错误,导致 Changefeed 仍保持正常状态而未进入失败状态的问题 #5246 @3AceShowHand
- 修复使用 Avro 或 Debezium-Avro 的 TiCDC Changefeed 在 Schema Registry 返回 HTTP 500 错误时可能仍报告健康状态的问题。修复后,受影响的 Changefeed 会报告 Warning 状态,并在
last_warning中记录 Schema Registry 错误 #5653 @wk989898 - 修复批量创建大量空闲 Changefeed 时,Coordinator 未遵循配置的 Scheduler 并发限制,导致 TiCDC 内存和 CPU 使用出现峰值的问题 #4831 @wlwilliamx
- 修复 Capture 替换后,已删除的 View 被错误地作为物理表进行调度并遗留孤立的 Dispatcher,导致 TiCDC Changefeed Checkpoint 可能停止推进的问题 #5710 @asddongmen
- 修复 TiCDC 新架构中因硬编码最高兼容版本,可能导致 TiCDC 错误拒绝较新版本 PD、TiKV 或 TiCDC 的问题 #4681 @wlwilliamx
- 修复创建 Changefeed 后 Consumer 立即启动时,TiCDC Kafka Changefeed 可能使用 Broker 默认分区配置创建 Topic,导致消息投递失败并增加复制延迟的问题 #5896 @3AceShowHand
- 修复过期的 TiCDC Capture 在丢失其 etcd Session 后仍可能继续向下游写入,导致故障转移期间出现重复或不安全的下游写入的问题 #5202 @asddongmen
- 修复共享下游连接池耗尽后,如果 DDL 和元数据操作被 DML Session 阻塞,TiCDC MySQL Sink 可能卡住的问题 #5360 @hongyunyan
- 修复所有底层 Region 尚未完成初始扫描时,TiCDC 可能提前将 Subscription Span 标记为已初始化,导致依赖初始化完成的操作过早触发的问题 #5658 @lidezhu
- 修复
cdc cli changefeed resume对正在运行的 Changefeed 错误报告成功,并为无效的 Resume 请求创建不必要的临时 Resume GC Guard 的问题 #4893 @wlwilliamx - 修复 Sink URI 校验失败时,TiCDC 可能在 OpenAPI 错误信息和日志中泄露敏感 Sink URI 信息的问题 #5094 @asddongmen
- 修复 Checkpoint 推进后,TiCDC Kafka、Pulsar 和 Storage Consumer 可能忽略乱序重放的 DML 事件,导致下游数据不一致的问题 #5713 @wk989898
- 修复故障转移或消息乱序期间,TiCDC 下游 Consumer 可能在对应 DDL 处理完成前应用 DML 事件,导致
Unknown column等错误的问题 #5587 @wk989898 - 修复上游 GC 已清理初始 Schema Snapshot 时,TiCDC Schema Store 初始化可能无限重试,导致 Changefeed 在从网络分区等故障恢复后持续卡住的问题 #3249 @asddongmen
- 修复 TiCDC 收到格式错误的 Heartbeat 或拥塞控制消息时,可能泄漏 Changefeed 扫描配额或发生 panic 的问题 #5642 @lidezhu
- 修复在 DR Auto-Sync 场景中发生网络分区时,由于 tiflow 依赖版本过旧,TiCDC 可能触发 TiKV panic 的问题 #5774 @wk989898
- 修复多次执行 Redo Apply 时 TiCDC 可能耗尽内存的问题。修复后,事件收集器支持同时按事件数量和总字节数进行批处理,并支持在 Changefeed 配置中覆盖批处理设置 #5950 @3AceShowHand
- 修复对分区表执行
TRUNCATE TABLE后,当 Event Service 扫描窗口被固定且 DDL Barrier 无法推进时,TiCDC Changefeed 可能卡住的问题 #4365 @asddongmen - 修复全局扫描窗口被固定且某个 Dispatcher 存在待处理的同步点 Barrier 时,TiCDC Event Service 扫描进度可能停滞的问题 #5546 @asddongmen
- 修复 TiCDC 中的一个竞态条件,该问题可能导致重复创建 Dispatcher,进而造成下游数据不一致 #6069 @wk989898
TiDB Lightning
- 修复发生临时的冲突删除提交错误后,
IMPORT INTO可能在索引不一致的情况下仍报告成功的问题 #69792 @D3Hunter - 修复导入出错或重试后,本地 Engine 文件未正确清理时,
IMPORT INTO可能因lock held by current process错误而失败的问题 #65645 @D3Hunter - 修复
IMPORT INTO对重复的字典编码 ParquetDECIMAL值可能静默写入错误数据的问题 #70365 @joechenrh - 修复任务生成被取消时,
IMPORT INTO或相关的 Local Backend Ingest 任务可能卡住的问题 #69240 @D3Hunter
- 修复发生临时的冲突删除提交错误后,