TiDB 6.3.0 Release Notes

    TiDB 版本:6.3.0-DMR

    试用链接:快速体验 |

    在 6.3.0-DMR 版本中,你可以获得以下关键特性:

    • TiKV 静态加密支持国密算法 SM4。
    • TiDB 支持基于国密算法 SM3 插件的身份验证。
    • SQL 语句 和 ALTER USER 支持 ACCOUNT LOCK/UNLOCK 选项。
    • JSON 数据类型和 JSON 函数 GA。
    • TiDB 支持 Null-Aware Anti Join。
    • TiDB 提供 SQL 查询执行时间的细粒度指标。
    • 分区表新增简化 Range 分区的语法糖。
    • Range COLUMNS 分区方式支持定义多列。
    • TiDB 添加索引的速度提升为原来的 3 倍。
    • 降低资源消耗型查询对轻量查询响应时间的影响超 50%。
    • 新增简化 Range 分区定义的语法糖 (syntactic sugar) Range INTERVAL 分区特性(实验特性)#35683 @

      提供了新的定义 Range 分区的方式 Range INTERVAL 分区,不需要枚举所有分区,可大幅度缩短现有 Range 分区表定义语句冗长的书写方式。语义与原有 Range 分区等价。

    • Range COLUMNS 分区方式支持定义多列 @mjonss

      支持 ,column_list 不再限定为单一列,基本功能与 MySQL 等同。

    • 分区表 EXCHANGE PARTITION 功能 GA @ymkzpx

    • 新增支持下推两个 至 TiFlash #5579 @

      • LEAD()
      • LAG()
    • 提供轻量级元数据锁,提升 DDL 变更过程 DML 的成功率(实验特性)#37275 @

      在 TiDB 中,对元数据对象的更改采用的是在线异步变更算法。事务在执行时会获取开始时对应的元数据快照。如果事务执行过程中相关表上发生了元数据的更改,为了保证数据的一致性,TiDB 会返回 Information schema is changed 的错误,导致用户事务提交失败。为了解决这个问题,在 TiDB v6.3.0 中,online DDL 算法中引入了元数据锁特性。通过协调表元数据变更过程中 DML 语句和 DDL 语句的优先级,让执行中的 DDL 语句等待持有旧版本元数据的 DML 语句提交,尽可能避免 DML 语句报错。

    • 提升添加索引的性能,减少对 DML 事务的影响(实验特性) @benjamin2037

      TiDB v6.3.0 支持开启功能,提升了创建索引回填过程的速度。开启该功能后,TiDB 添加索引的性能提升约为原来的 3 倍。

    安全

    • TiKV 静态加密支持国密算法 SM4 @jiayang-zheng

      TiKV 的静态加密新增 ,用户在配置静态加密时,可将 data-encryption-method 参数设为 sm4-ctr,以启用基于国密算法 SM4 的静态加密能力。

    • TiDB 支持国密算法 SM3 的身份验证 #36192 @

      TiDB 身份验证新增基于国密算法 SM3 的插件 tidb_sm3_password,启用此插件后,用户密码将通过 SM3 进行加密存储和验证。

    • TiDB-JDBC 支持国密算法 SM3 的身份验证 @lastincisor

      用户密码的身份验证需要客户端的支持,现在 ,你可以使用国密算法 SM3 的身份验证能力通过 TiDB-JDBC 连接到 TiDB。

    可观测性

    • 提供 TiDB SQL 查询执行时间的细粒度指标 @cfzjywxk

      TiDB v6.3.0 提供了细粒度的数据指标,用于。通过完整且细分的指标数据,可以清晰地了解 SQL 查询主要的时间消耗,从而快速发现关键问题,节省故障诊断的时间。

    • 增强慢日志和 TRACE 语句的输出 #34106 @

      TiDB v6.3.0 增强了慢日志的内容和 TRACE 的输出。你可以观测到 SQL 语句执行过程中,从 TiDB 解析到 KV RocksDB 落盘全链路的延迟数据,进一步增强 TiDB 的诊断能力。

    • TiDB Dashboard 中显示死锁的历史记录 @cfzjywxk

      从 v6.3.0 起,死锁的历史记录将添加到 TiDB Dashboard。当你通过 TiDB Dashboard 的慢日志等手段发现某些 SQL 等待锁的时间较长时,可以分析 TiDB Dashboard 上的死锁历史记录来定位问题,提升了诊断的易用性。

    性能

    • TiFlash 调整 FastScan 功能使用方式(实验特性)#5252 @

      TiFlash 从 v6.2.0 版本开始引入的快速扫描功能 (FastScan),性能上符合预期,但是使用方式上不够灵活。因此,TiFlash 在 v6.3.0 版本调整 FastScan 功能的使用方式:废弃了 ALTER TABLE ...SET TiFLASH MODE ... 语法启用方式,改为使用系统变量 进行控制。

      从 v6.2.0 版本升级到 v6.3.0 版本时,在 v6.2.0 版本的 FastScan 设置将失效,但不影响数据的正常读取。你需要重新使用变量方式设置 FastScan。从 v6.2.0 及更早版本升级到 v6.3.0 时,所有会话默认不开启 FastScan 功能,而是保持一致性的数据扫描功能。

    • TiFlash 优化提升多并发场景下的数据扫描性能 #5376 @

      TiFlash 通过合并相同数据的读取操作,减少了对相同数据的重复读取,优化了多并发任务情况下的资源开销,提升多并发下的数据扫描性能。避免了以往在多并发任务下,如果涉及相同数据,同一份数据需要在每个任务中分别进行读取的情况,以及可能出现在同一时间内对同一份数据进行多次读取的情况。

      该功能在 v6.2.0 版本以实验特性发布,在 v6.3.0 版本作为正式功能发布。

    • TiFlash 副本同步性能优化 @breezewish

    • TiFlash 针对单个 COUNT(DISTINCT) 进行三阶段聚合 @fixdb

      TiFlash 将有且仅有单个 COUNT(DISTINCT) 聚合的查询改写为,从而提高并发度,并提升性能。

    • TiKV 支持日志回收 #214 @

      TiKV Raft Engine 支持日志回收功能。该特性能够显著降低网络磁盘上 Raft 日志追加过程中的长尾延迟,提升了 TiKV 写入负载下的性能。

    • TiDB 支持 Null-Aware Anti Join @Arenatlx

      TiDB v6.3.0 引入了新的连接类型 。NAAJ 在处理集合操作时能够感知集合是否为空,或是否有空值,优化了 IN= ANY 等操作的执行效率,提升 SQL 性能。

    • 增加优化器 hint 控制哈希连接的驱动端 #35439 @

      在 v6.3.0 版本中,优化器引入了两个新的 hint,HASH_JOIN_BUILD() 和 HASH_JOIN_PROBE(),用于隐式地指定哈希连接的行为,同时分别指定哈希连接的构建端和探测端。如果优化器未选到最优执行计划,可以使用这两个 hint 来干预执行计划。

    • 允许在会话级别内联展开公共表表达式 (CTE) @elsa0520

      在 v6.2.0 中,引入了优化器提示 MERGE,允许对 CTE 内联进行展开,使得 CTE 查询结果的消费者能够在 TiFlash 内并行执行。在 v6.3.0 中,又进一步添加了会话级变量 ,允许在会话中修改这个行为,提升了易用性。

    • 悲观事务可以延迟唯一约束检查 @ekexium

      你可以通过系统变量 来控制悲观事务中唯一约束检查的时间点。该变量默认关闭。当开启该变量时(设为 ON),TiDB 会将悲观事务中的加锁操作和唯一约束检测推迟到必要的时候进行,以此提升批量 DML 操作的性能。

    • 优化 Read-Committed 隔离级别中对 TSO 的获取 @TonsnakeLin

      在 Read-Committed 隔离级别中,引入新的系统变量 控制语句对 TSO 的获取方式。在 Plan Cache 命中的情况下,通过降低对 TSO 的获取频率,提升批量 DML 的执行效率,降低跑批类任务的执行时间。

    稳定性

    • 降低资源消耗型查询对轻量查询响应时间的影响 @glorv

      当资源消耗型查询与轻量查询同时运行时,轻量查询的响应时间会被严重影响。在这种情况下,通常希望优先快速处理轻量查询,以保证交易类负载的服务质量。因此 TiKV 在 v6.3.0 中优化了读请求的调度机制,使资源消耗型的查询在每一轮执行的时间更符合预期。这个特性大幅降低了资源消耗型查询对轻量查询的影响,使混合工作负载的 P99 延迟降低了 50% 以上。

    • 修改优化器统计信息过期时的默认统计信息使用策略 @xuyifangreeneyes

      在 v5.3.0 版本,TiDB 引入系统变量 控制优化器在统计信息过期时的行为,默认为 ON,即保持旧版本行为不变:当 SQL 涉及的对象的统计信息过期时,优化器认为该表上除总行数以外的统计信息不再可靠,转而使用 pseudo 统计信息。经过一系列测试和用户实际场景分析,TiDB 在新版本中将 tidb_enable_pseudo_for_outdated_stats 的默认值改为 OFF,即使统计信息过期,优化器也仍会使用该表上的统计信息,这有利于执行计划的稳定性。

    • TiKV 正式支持关闭 Titan 引擎 @tabokie

      正式支持对在线 TiKV 节点。

    • 缺少 GlobalStats 时自动选择分区静态剪裁 #37535 @

      当启用分区动态剪裁时,优化器依赖 进行执行计划的选择。在 GlobalStats 收集完成前,使用 pseudo 统计信息可能会造成性能回退。在 v6.3.0 版本中,如果在 收集未完成的情况下打开动态分区裁剪开关,TiDB 会维持静态分区剪裁的状态,直到 GlobalStats 收集完成。该方式确保在切换分区剪裁策略时系统性能保持稳定。

    易用性

    • 解决基于 SQL 的数据放置规则功能和构建 TiFlash 副本功能的冲突 @lcwangchao

      TiDB 在 v6.0.0 版本提供基于 SQL 的数据放置规则功能,但是由于实现机制问题,该功能和构建 TiFlash 副本功能有冲突。v6.3.0 版本进行改进优化,,使这两个功能更加方便易用。

    MySQL 兼容性

    • 新增支持 REGEXP_INSTR()REGEXP_LIKE()REGEXP_REPLACE()REGEXP_SUBSTR() 4 个正则表达式函数,提升 TiDB 与 MySQL 8.0 的兼容性 @windtalker

      这些函数与 MySQL 的兼容性可参考。

    • CREATE USERALTER USER 支持 ACCOUNT LOCK/UNLOCK 选项 #37051 @

      在执行 CREATE USER 创建用户时,允许使用 ACCOUNT LOCK/UNLOCK 选项,限定被创建的用户是否被锁定。锁定后的用户不能正常登录数据库。

      对于已存在的用户,可以通过 使用 ACCOUNT LOCK/UNLOCK 选项,修改用户的锁定状态。

    • JSON 数据类型和 JSON 函数 GA #36993 @

      JSON 是一种流行的数据格式,被大量的程序设计所采用。TiDB 在早期版本就引入了 JSON 支持,兼容 MySQL 的 JSON 数据类型和一部分 JSON 函数。在 v6.3.0 版本中,这些功能正式 GA,为 TiDB 提供了更丰富的数据类型支持,同时和生成列也增加了对 JSON 函数的支持,进一步提升了 TiDB 对 MySQL 的兼容能力。

    数据迁移

    • TiDB Lightning 支持将 Apache Hive 导出的 Parquet 文件导入到 TiDB @buchuitoudegou

    • DM 新增配置项 safe-mode-duration @okJiang

      DM 任务配置文件中新增一个配置项 ,用户可以自行调节 DM 异常重启后进入安全模式的持续时间,默认值 60 秒。当设置为 “0s” 时,表示 DM 异常重启后尝试进入安全模式会报错。

    数据共享与订阅

    • TiCDC 支持对多个异地目标数据源进行数据复制 @sdojjy

      为了支持从一个 TiDB 集群复制数据到多个不同的异地数据系统,自 v6.3.0 开始,TiCDC 节点可以中,用于分别负责对应机房的数据复制任务,以支撑各种复杂的异地数据复制使用场景和部署形态。

    • TiCDC 支持维护上下游数据一致性快照 (Sync point) #6977 @

      在灾备复制场景下,TiCDC 支持周期性地维护一个下游数据快照,使得该下游快照能与上游数据的快照保持一致。借助此能力,TiCDC 能更好地匹配读写分离应用场景,帮助用户降本增效。

    • TiCDC 支持平滑升级 @overvenus @

      用户使用 TiUP (>=v1.11.0) 和 (>=v1.3.8) 可以平滑滚动升级 TiCDC 集群。升级期间数据同步延时保持在 30 秒内,提高了稳定性,让 TiCDC 能更好地支持延时敏感型业务。

    兼容性变更

    系统变量

    配置文件配置项修改类型描述
    TiDB新增TiDB 用于存放临时数据的路径。需要使用 TiDB 节点本地存储的功能会将数据临时存放在这个目录下。默认值为 /tmp/tidb
    TiKVauto-adjust-pool-size新增控制是否开启自动调整线程池的大小。开启此配置可以基于当前的 CPU 使用情况,自动调整统一处理读请求的线程池 (UnifyReadPool) 的大小,优化 TiKV 的读性能。
    TiKV修改扩展可选值范围:增加 sm4-ctr。设置为 sm4-ctr 时,数据将采用国密算法 SM4 加密后进行存储。
    TiKVenable-log-recycle新增控制 Raft Engine 是否回收过期的日志文件。该配置项启用时,Raft Engine 将保留逻辑上被清除的日志文件,用于日志回收,减少写负载的长尾延迟。仅在 format-version 的值大于等于 2 时,该配置项才生效。
    TiKV新增指定 Raft Engine 的日志文件格式版本。v6.3.0 以前的默认值为 1。v6.1.0 及以后版本的 TiKV 可以读取该格式。v6.3.0 及以后版本,该配置项默认值为 2,TiKV 可以读取该格式。
    TiKVlog-backup.enable修改默认值在 v6.3.0 以前是 false,v6.3.0 开始设为 true
    TiKV修改默认值在 v6.3.0 以前是 5min,v6.3.0 开始设为 3min
    PDenable-diagnostic新增控制是否开启诊断功能。默认值为 false
    TiFlash废弃该参数从 v6.3.0 开始废弃,默认开启此功能且不能关闭。
    DMsafe-mode-duration新增自动安全模式的持续时间。
    TiCDC新增控制是否开启 sync point 功能。
    TiCDCsync-point-interval新增控制 sync point 功能对齐上下游 snapshot 的时间间隔。
    TiCDC新增sync point 功能在下游表中保存的数据的时长,超过这个时间的数据会被清理。
    TiCDCsink-uri.memory废弃废弃 memory 排序方式,不建议在任何情况下使用。

    其他

    • 日志备份功能兼容分区交换 (Exchange Partition) DDL。
    • 不再支持通过 ALTER TABLE ...SET TiFLASH MODE ... 语法启用或禁用 FastScan 功能。从 v6.2.0 版本升级到 v6.3.0 版本时,在 v6.2.0 版本的 FastScan 设置将失效,但不影响数据的正常读取。你需要重新使用变量方式设置 FastScan。从 v6.2.0 及更早版本升级到 v6.3.0 时,所有会话默认不开启 FastScan 功能,而是保持一致性的数据扫描功能。
    • 在 Linux AMD64 架构的硬件平台部署 TiFlash 时,CPU 必须支持 AVX2 指令集。确保命令 cat /proc/cpuinfo | grep avx2 有输出。而在 Linux ARM64 架构的硬件平台部署 TiFlash 时,CPU 必须支持 ARMv8 架构。确保命令 cat /proc/cpuinfo | grep 'crc32' | grep 'asimd' 有输出。通过使用向量扩展指令集,TiFlash 的向量化引擎能提供更好的性能。
    • TiDB 支持的最小 HAProxy 版本为 v1.5。使用 v1.5 到 v2.1 之间的 HAProxy 时,需要在 mysql-check 中配置 post-41。建议使用 HAProxy v2.2 或更高版本。

    自 v6.3.0 起,TiCDC 不再支持配置 Pulsar Sink。建议使用 StreamNative 官方维护的 kop 作为替代方案。

    改进提升

    • TiDB

      • 改进表名检查方式,由大小写敏感变为大小写不敏感 #34610 @
      • init_connect 值增加解析器检查流程,提升了与 MySQL 的兼容性 #35324 @
      • 改进新连接产生时的警告日志 #34964 @
      • 优化用于查询 DDL 历史任务的 HTTP API,提供对 start_job_id 参数的支持 #35838 @
      • 在 JSON 路径的语法有误时报错 #22525 @xiongjiwei
      • 修复一个伪共享问题,提升 Join 操作的性能 @gengliqi
      • PLAN REPLAYER 命令支持一次导出多条 SQL 语句的执行计划信息,提升了问题排查效率 @Yisaer
    • TiKV

      • 支持配置 unreachable_backoff 避免 Raftstore 发现某个 Peer 无法连接时广播过多消息 @5kbpers
      • 提升 TSO 服务不可用的容忍度 @pingyu
      • 支持动态调整 RocksDB 进行 subcompaction 的并发个数 (rocksdb.max-sub-compactions) @ethercflow
      • 优化合并空 Region 的性能 @tabokie
      • 支持更多正则表达式函数 @gengliqi
      • 支持根据 CPU 使用情况自动调整 UnifyReadPool 线程池的大小 @glorv
    • PD

      • 更新 TiDB Dashboard 中 TiKV IO MBps 指标的计算方式 @YiniXu9506
      • 将 TiDB Dashboard 中 metrics 更改为 monitoring @YiniXu9506
    • TiFlash

      • 支持下推 elt 到 TiFlash @Willendless
      • 支持下推 leftShift 到 TiFlash @AnnieoftheStars
      • 支持下推 castTimeAsDuration 到 TiFlash @AntiTopQuark
      • 支持下推 HexIntArg/HexStrArg 到 TiFlash @YangKeao
      • 重构改进 TiFlash 的执行流解释器,支持新的解释器 Planner @SeaRise
      • 改进了 TiFlash memory tracker 的准确度 @bestwoody
      • 提升了 UTF8_BIN/ASCII_BIN/LATIN1_BIN/UTF8MB4_BIN collation 的列相关运算的速度 @solotzg
      • 在后台计算 ReadLimiter 的 I/O 吞吐量 #5091 @
    • Tools

      • Backup & Restore (BR)

        • PITR 可以聚合日志备份中生成的小日志文件,大幅减小文件数量 #13232 @
        • PITR 支持在恢复完成后自动按照上游集群配置设置 TiFlash 副本 #37208 @
      • TiCDC

        • 提升上游 TiDB 引入并行 DDL 框架后 TiCDC 的兼容性 #6506 @
        • 支持在 MySL sink 出错时将 DML 语句的 start ts 输出到日志文件 #6460 @
        • 优化 API api/v1/health,使其返回的 TiCDC 集群健康状态更准确 #4757 @
        • 采用异步的模式实现 MQ sink 和 MySQL sink,提升 sink 的吞吐能力 #5928 @ @hi-rustin
        • 删除已经废弃了的 pulsar sink @hi-rustin
        • 忽略掉与 changefeed 不相关的 DDL 语句以提升同步性能 @asddongmen
      • TiDB Data Migration (DM)

        • 提升与 MySQL 8.0 数据源的兼容性 @lance6716
        • 优化 DDL 执行逻辑,当执行 DDL 超时时,转为异步查询 DDL 执行结果 @lyzx2001
      • TiDB Lightning

        • 在 S3 URL 中添加新参数 role-arnexternal-id,支持从其他账户访问 S3 数据 @dsdashun
    • TiDB

      • 修复权限检查跳过 PREAPRE 语句的问题 #35784 @
      • 修复系统变量 tidb_enable_noop_variable 能够设置为 的问题 #36647 @
      • 修复存在表达式索引定义时,INFORMAITON_SCHEMA.COLUMNS 表的 ORDINAL_POSITION 列可能不正确的问题 #31200 @
      • 修复时间戳大于 MAXINT32 时 TiDB 不报错的问题 #31585 @
      • 修复使用企业版插件时无法启动 TiDB server 的问题 #37319 @
      • 修复 SHOW CREATE PLACEMENT POLICY 输出结果不正确的问题 #37526 @
      • 修复临时表能用于交换分区的问题 #37201 @
      • 修复查询 INFORMATION_SCHEMA.TIKV_REGION_STATUS 返回不正确结果的问题 @zimulala
      • 修复使用 EXPLAIN 查询视图时不进行权限检查的问题 @hawkingrei
      • 修复 JSON null 不能被更新为 NULL 的问题 @YangKeao
      • 修复 DDL 任务的 row_count 不准确的问题 @Defined2014
      • 修复 FLASHBACK TABLE 运行不正常的问题 @tiancaiamao
      • 修复无法处理典型 MySQL 协议中 prepared 语句 flag 的问题 @dveeden
      • 修复在极端情况下,启动 TiDB 可能进入错误状态的问题 @xhebox
      • 修复 INFORMATION_SCHEMA.VARIABLES_INFO 不遵循安全增强模式 (SEM) 的问题 @CbcWestwolf
      • 修复带 UNION 算子的查询中转换字符串出错的问题 @cbcwestwolf
      • 修复在 TiFlash 中为分区表开启动态模式时结果出错的问题 @wshwsh12
      • 修复 TiDB 中二进制字符串和 JSON 之间的转换和对比行为与 MySQL 不兼容的问题 #25053 @
      • 修复 TiDB 中的 JSON_OBJECTAGGJSON_ARRAYAGG 在二进制值上与 MySQL 不兼容的问题 #25053 @
      • 修复比较 JSON opaque 值时造成崩溃的问题 #37315 @
      • 修复 JSON 聚合函数不能使用单精度浮点数的问题 #37287 @
      • 修复 castRealAsTime 表达式的结果和 MySQL 不兼容的问题 #37462 @
      • 修复悲观 DML 操作锁定非唯一索引键的问题 #36235 @
      • 修复与自动提交 (auto-commit) 模式更改相关的事务提交行为 #36581 @
      • 修复带 DML 算子的 EXPLAIN ANALYZE 语句可能在事务提交完成前返回结果的问题 #37373 @
      • 修复在某些情况下 UPDATE 语句错误地消除了 projection 导致 Can't find column 报错的问题 #37568 @
      • 修复执行 Join Reorder 操作时,会错误地下推 Outer Join 条件的问题 #37238 @
      • 修复 INNOT IN 子查询在某些 pattern 下会报 Can't find column 的问题 #37032 @
      • 修复 UPDATE 语句中带公共表表达式 (CTE) 的情况下会报 Can't find column 的问题 #35758 @
      • 修复错误的 PromQL #35856 @
    • TiKV

      • 修复 PD Region heartbeat 连接异常中断后未重新连接的问题 #12934 @
      • 修复 Raftstore 线程繁忙时,可能会出现 Region 重叠的问题 #13160 @
      • 修复 PD 客户端可能会出现死锁的问题 #13191 @ #12933 @
      • 修复关闭加密时 TiKV panic 的问题 #13081 @
      • 修复 Dashboard 中 Unified Read Pool CPU 表达式错误的问题 #13086 @
      • 修复当有一个 TiKV 实例出现网络隔离时,一段时间内服务不可用问题 #12966 @
      • 修复误报 PessimisticLockNotFound 的问题 #13425 @
      • 修复某些场景下 PITR 可能丢失数据的问题 #13281 @
      • 修复存在时间较长的悲观事务时,checkpoint 没有推进的问题 #13304 @
      • 修复 TiKV 无法区分 JSON 中时间类型(DATETIMEDATETIMESTAMPTIME)和 STRING 类型的问题 #13417 @
      • 修复 JSON bool 和其他 JSON value 的比较行为与 MySQL 不兼容的问题 #13386 @YangKeao
    • PD

      • 修复开启 enable-forwarding 时,gRPC 处理返回错误不当导致 PD panic 的问题 @bufferflies
      • 修复不健康的 Region 可能导致 PD panic 的问题 @nolouch
      • 修复 PD 可能没创建 TiFlash Learner 副本的问题 @HunDunDM
    • TiFlash

      • 修复取消查询时 window function 可能会导致 TiFlash 崩溃的问题 @SeaRise
      • 修复 CAST(value AS datetime) 输入数据无法转成 DATETIME 时会导致 TiFlash sys CPU 异常高的问题 @xzhangxian1008
      • 修复 CAST(Real/Decimal AS time) 函数执行结果与 MySQL 不一致的问题 @mengxin9014
      • 修复存储中的过时数据可能无法删除的问题 @JaySon-Huang
      • 修复 page GC 可能导致无法创建表格的问题 @JaySon-Huang
      • 修复使用包含 NULL 值的列创建主键时导致崩溃的问题 @JaySon-Huang
    • Tools

      • Backup & Restore (BR)

        • 修复导致 PITR 的 checkpoint 信息过时的问题 @YuJuncen
        • 修复在恢复时配置过高的 concurrency 会导致 Region 不均衡的问题 @3pointer
        • 修复在 TiCDC 存在时,PITR 进度无法推进的问题 @YuJuncen
        • 修复当外部存储的鉴权 Key 中存在某些特殊符号时,会导致备份恢复失败的问题 @MoCuishle28
      • TiCDC

        • 修复 TiCDC 对含有 grpc 服务的非法 PD 地址报错不准确的问题 @crelax
        • 修复 cdc cli changefeed list 命令不返回 failed changefeed 的问题 @asddongmen
        • 修复如果 changefeed 初始化失败会导致 TiCDC 不可用的问题 @asddongmen
      • TiDB Binlog

        • 修复 compressor 设为 gzip 时 Drainer 无法正确发送请求至 Pump 的问题 @lichunzhu
      • TiDB Data Migration (DM)

        • 修复 DM 报错 Specified key was too long 的问题 @lance6716
        • 修复 relay 报错时可能导致 goroutine 泄露问题 @lance6716
        • 修复当 collation_compatible 设置为 "strict" 时,DM 可能生成有重复排序规则的 SQL 语句的问题 @lance6716
        • 修复 DM-worker 日志中出现过多警告信息 “found error when get timezone from binlog status_vars” 的问题 @lyzx2001
        • 修复数据同步过程中,latin1 字符集数据可能损坏的问题 @lance6716
      • TiDB Lightning

        • 修复 TiDB Lightning 不支持 Parquet 文件中以斜线 ()、数字、非 ASCII 字符开头的特殊列名的问题 @D3Hunter

    贡献者

    感谢来自 TiDB 社区的贡献者们: