TiDB 7.1.2 Release Notes
发版日期:2023 年 10 月 25 日
TiDB 版本:7.1.2
兼容性变更
- 在安全增强模式 (SEM) 下禁止设置 require_secure_transport 为
ON
,避免用户无法连接的问题 #47665 @tiancaiamao - 默认关闭平滑升级功能,需要通过发送
/upgrade/start
和upgrade/finish
HTTP 请求开启此功能 #47172 @zimulala - 引入系统变量 tidb_opt_enable_hash_join 控制是否选择表的哈希连接 #46695 @coderplay
- 默认关闭 RocksDB 的周期性 compaction,使 TiKV RocksDB 的默认行为和 v6.5.0 之前的版本保持一致,避免在升级之后集中产生大量 compaction 影响系统的性能。同时,TiKV 新增 rocksdb.[defaultcf|writecf|lockcf].periodic-compaction-seconds 和 rocksdb.[defaultcf|writecf|lockcf].ttl 配置项,支持手动配置 RocksDB 的周期性 compaction #15355 @LykxSassinator
- 新增 TiCDC 配置项 sink.csv.binary-encoding-method,控制 CSV 协议中二进制类型数据的编码方式,默认值为
'base64'
#9373 @CharlesCheung96 - 新增 TiCDC 配置项 large-message-handle-option。默认为空,即消息大小超过 Kafka Topic 的限制后,同步任务失败。设置为 “handle-key-only” 时,如果消息超过大小,只发送 handle key 以减少消息的大小;如果依旧超过大小,则同步任务失败 #9680 @3AceShowHand
行为变更
- 对于包含多条变更的事务,如果 Update 事件的主键或者非空唯一索引的列值发生改变,TiCDC 会将该其拆分为 Delete 和 Insert 两条事件,并确保将所有事件有序,以保证 Delete 事件在 Insert 事件之前。更多信息,请参考用户文档。
改进提升
TiDB
- 新增部分优化器提示,包括 NO_MERGE_JOIN()、NO_INDEX_JOIN()、NO_INDEX_MERGE_JOIN()、NO_HASH_JOIN()、NO_INDEX_HASH_JOIN() #45520 @qw4990
- 添加 coprocessor 相关的 request source 信息 #46514 @you06
TiKV
- 优化数据整理检查机制,当触发 Region Split 时,如果没有可以分裂的 key,触发一次数据整理,以消除过多的 MVCC 版本 #15282 @SpadeA-Tang
- 消除 Router 对象中的 LRUCache,降低内存占用,防止 OOM #15430 @Connor1996
- 添加
Max gap of safe-ts
和Min safe ts region
监控项以及tikv-ctl get-region-read-progress
命令,用于更好地观测和诊断 resolved-ts 和 safe-ts 的状态 #15082 @ekexium - 在 TiKV 中暴露部分 RocksDB 配置,允许用户禁用 TTL 和定期数据整理等特性 #14873 @LykxSassinator
- 新增 PD Client 连接重试过程中的 backoff 机制。异常错误重试期间,逐步增加重试时间间隔,减小 PD 压力 #15428 @nolouch
- 避免写 Titan manifest 文件时持有锁导致影响其他线程 #15351 @Connor1996
- 改进 Resolver 的内存使用,防止 OOM #15458 @overvenus
PD
TiFlash
- 在 Grafana 中新增关于索引数据内存使用的监控指标 #8050 @hongyunyan
Tools
Backup & Restore (BR)
TiCDC
- 优化 TiCDC 部分监控项和报警项 #9047 @asddongmen
- Kafka Sink 支持在消息过大时只发送 Handle Key 数据,避免因消息大小超限导致同步任务失败 #9680 @3AceShowHand
- 优化同步
ADD INDEX
DDL 的执行逻辑,从而不阻塞后续的 DML 语句 #9644 @sdojjy - 优化 TiCDC 在故障重试时的状态展示信息 #9483 @asddongmen
TiDB Data Migration (DM)
TiDB Lightning
错误修复
TiDB
- 修复
group_concat
无法解析ORDER BY
列的问题 #41986 @AilinKid - 修复某些情况下查询系统表
INFORMATION_SCHEMA.TIKV_REGION_STATUS
返回结果错误的问题 #45531 @Defined2014 - 修复读取元数据时间超过一个 DDL lease 导致升级 TiDB 卡住的问题 #45176 @zimulala
- 修复执行带 CTE 的 DML 会导致 panic 的问题 #46083 @winoros
- 修复交换分区时,无法检测出不符合分区定义的数据的问题 #46492 @mjonss
- 修复
MERGE_JOIN
的结果错误的问题 #46580 @qw4990 - 修复无符号类型与
Duration
类型常量比较时产生的结果错误 #45410 @wshwsh12 - 修复
AUTO_ID_CACHE=1
时可能导致Duplicate entry
的问题 #46444 @tiancaiamao - 修复 TTL 运行过程中内存泄漏的问题 #45510 @lcwangchao
- 修复 kill 连接之后可能会出现 go coroutine 泄露的问题 #46034 @pingyu
- 修复 Index Join 出错可能导致查询卡住的问题 #45716 @wshwsh12
- 修复
BatchPointGet
算子在 Hash 分区表下执行结果错误的问题 #46779 @jiyfhust - 修复在交换分区失败或被取消时,分区表的限制残留在原表上的问题 #45920 #45791 @mjonss
- 修复当 JOIN 两个子查询时执行
TIDB_INLJ
Hint 不生效的问题 #46160 @qw4990 - 修复
DATETIME
或TIMESTAMP
列与数字值比较时,行为与 MySQL 不一致的问题 #38361 @yibin87 - 修复深嵌套的表达式的 HashCode 重复计算导致的高内存占用和 OOM 问题 #42788 @AilinKid
- 修复 access path 的启发式规则会忽略
READ_FROM_STORAGE(TIFLASH[...])
Hint 导致Can't find a proper physical plan
的问题 #40146 @AilinKid - 修复
cast(col)=range
条件在 CAST 无精度损失的情况下会导致 FullScan 的问题 #45199 @AilinKid - 修复
plan replayer dump explain
会报错的问题 #46197 @time-and-fate - 修复
tmp-storage-quota
配置无法生效的问题 #45161 #26806 @wshwsh12 - 修复 TiDB parser 状态残留导致解析失败的问题 #45898 @qw4990
- 修复 MPP 执行计划中通过 Union 下推 Aggregation 导致的结果错误 #45850 @AilinKid
- 修复
AUTO_ID_CACHE=1
时 TiDB panic 后恢复过慢的问题 #46454 @tiancaiamao - 修复 Sort 算子在落盘过程中可能导致 TiDB 崩溃的问题 #47538 @windtalker
- 修复使用 BR 恢复
AUTO_ID_CACHE=1
的非聚簇索引表时发生重复主键的问题 #46093 @tiancaiamao - 修复在静态裁剪模式下查询分区表且查询计划中带有
IndexLookUp
时可能报错的问题 #45757 @Defined2014 - 修复在对分区表和有 Placement Policy 的表进行分区交换后,往分区表中插入数据可能失败的问题 #45791 @mjonss
- 修复使用错误的时区信息对时间字段进行编码的问题 #46033 @tangenta
- 修复当
tmp
路径不存在时快速添加索引的 DDL 会卡住的问题 #45456 @tangenta - 修复同时升级多个 TiDB 节点时可能阻塞升级过程的问题 #46228 @zimulala
- 修复分区表由于 split Region 使用参数有误导致 Region 打散效果差的问题 #46135 @zimulala
- 修复 TiDB 重启后 DDL 操作可能卡住的问题 #46751 @wjhuang2016
- 禁止非整型聚簇索引进行 split table 操作 #47350 @tangenta
- 修复由于 MDL 处理不正确可能导致 DDL 永久阻塞的问题 #46920 @wjhuang2016
- 修复表改名导致
information_schema.columns
中出现重复行的问题 #47064 @jiyfhust - 修复
client-go
中batch-client
panic 的问题 #47691 @crazycs520 - 修复分区表统计信息收集的内存使用超出限制时不能被及时 kill 的问题 #45706 @hawkingrei
- 修复查询包含
UNHEX
条件时结果不准确的问题 #45378 @qw4990 - 修复查询使用
GROUP_CONCAT
时报错Can't find column
的问题 #41957 @AilinKid
- 修复
TiKV
- 修复
ttl-check-poll-interval
配置项对 RawKV API V2 不生效的问题 #15142 @pingyu - 修复 raftstore-applys 不断增长的数据错误 #15371 @Connor1996
- 修复自适应同步模式下 sync-recover 阶段 QPS 下降到 0 的问题 #14975 @nolouch
- 修复当一个 TiKV 节点被隔离而另一个节点重启时,可能导致读取不一致的问题 #15035 @overvenus
- 修复 Online Unsafe Recovery 时无法处理 merge abort 的问题 #15580 @v01dstar
- 修复 PD 和 TiKV 之间的网络中断可能导致 PITR 卡住的问题 #15279 @YuJuncen
- 修复在执行
FLASHBACK
后 Region Merge 可能被阻塞的问题 #15258 @overvenus - 减少 Store 心跳重试次数,修复心跳风暴的问题 #15184 @nolouch
- 修复 Online Unsafe Recovery 超时未中止的问题 #15346 @Connor1996
- 修复部分写入时加密可能导致数据损坏的问题 #15080 @tabokie
- 修复由于 Region 的元数据不正确造成 TiKV panic 的问题 #13311 @cfzjywxk
- 修复有线上负载时,TiDB Lightning 的 Checksum Coprocessor 请求超时的问题 #15565 @lance6716
- 修复在移动 Peer 时可能导致 Follower Read 性能变差的问题 #15468 @YuJuncen
- 修复
PD
- 修复热点 Region 在 v2 调度策略下可能不调度的问题 #6645 @lhy1024
- 修复空集群下 TLS 握手导致 CPU 资源消耗过高的问题 #6913 @nolouch
- 修复 PD 节点间注入错误可能导致 panic 的问题 #6858 @HuSharp
- 修复 Store 信息同步可能导致 PD Leader 退出卡住的问题 #6918 @rleungx
- 修复 Flashback 后 Region 信息没有更新的问题 #6912 @overvenus
- 修复 PD 退出时可能 panic 的问题 #7053 @HuSharp
- 修复 context timeout 可能导致
lease timeout
的问题 #6926 @rleungx - 修复 Peer 没有按照 Group 进行 scatter,可能会导致 leader 分布不均衡的问题 #6962 @rleungx
- 修复 pd-ctl 更新隔离级别标签不同步的问题 #7121 @rleungx
- 修复
evict-leader-scheduler
丢失配置的问题 #6897 @HuSharp - 修复 Plugin 目录、文件内容可能存在安全隐患的问题 #7094 @HuSharp
- 修复开启资源管控后 DDL 可能不能保证原子性的问题 #45050 @glorv
- 修复在 rule checker 选定 peer 时,unhealthy peer 无法被移除的问题 #6559 @nolouch
- 修复当 etcd 已经启动,但 client 尚未连接上 etcd 时,调用 client 会导致 PD panic 的问题 #6860 @HuSharp
- 修复 RU 消耗小于 0 导致 PD 崩溃的问题 #6973 @CabinfeverB
- 修复在集群规模大时 client-go 周期性更新
min-resolved-ts
可能造成 PD OOM 的问题 #46664 @HuSharp
TiFlash
Tools
Backup & Restore (BR)
- 修复 PITR 恢复隐式主键可能冲突的问题 #46520 @3pointer
- 修复 GCS 上 PITR 恢复失败的问题 #47022 @Leavrth
- 修复 RawKV 模式下细粒度备份阶段可能出错的问题 #37085 @pingyu
- 修复 PITR 恢复数据元信息 (meta-kv) 出错的问题 #46578 @Leavrth
- 修复 BR 集成测试用例出错的问题 #46561 @purelind
- 将 BR 使用的全局参数
TableColumnCountLimit
和IndexLimit
的默认值提升到最大值,修复恢复过程失败的问题 #45793 @Leavrth - 修复 br CLI 客户端扫描恢复后的数据时卡住的问题 #45476 @3pointer
- 修复 PITR 可能跳过恢复
CREATE INDEX
DDL 的问题 #47482 @Leavrth - 修复 1 分钟之内多次执行 PITR 可能导致数据丢失的问题 #15483 @YuJuncen
TiCDC
- 修复处于异常状态的同步任务阻塞上游 GC 的问题 #9543 @CharlesCheung96
- 修复同步到对象存储可能导致数据不一致的问题 #9592 @CharlesCheung96
- 修复开启
redo-resolved-ts
可能导致 Changefeed 失败的问题 #9769 @CharlesCheung96 - 修复在某些特殊的操作系统下,获取错误内存信息可能导致 OOM 的问题 #9762 @sdojjy
- 修复开启
scale-out
时流量在节点间分配不均匀问题 #9665 @sdojjy - 修复日志中记录了用户敏感信息的问题 #9690 @sdojjy
- 修复可能无法正确同步 rename DDL 操作的问题 #9488 #9378 #9531 @asddongmen
- 修复所有 changefeed 被移除时会阻塞上游 TiDB GC 的问题 #9633 @sdojjy
- 修复 TiCDC 同步任务在某些特殊场景可能失败的问题 #9685 #9697 #9695 #9736 @hicqu @CharlesCheung96
- 修复 PD 节点出现网络隔离时引起 TiCDC 同步延时变高的问题 #9565 @asddongmen
- 修复 PD 做扩缩容场景下 TiCDC 访问无效旧地址的问题 #9584 @fubinzh @asddongmen
- 修复上游在 Region 非常多时,TiKV 节点出现故障导致 TiCDC 同步任务不能快速恢复的问题 #9741 @sdojjy
- 修复采用 CSV 格式时将
UPDATE
操作错误修改为INSERT
的问题 #9658 @3AceShowHand - 修复在上游同一条 DDL 中重命名多个表的场景下同步出错的问题 #9476 #9488 @CharlesCheung96 @asddongmen
- 修复同步到 Kafka 时重试间隔过短导致同步任务失败的问题 #9504 @3AceShowHand
- 修复在上游同一个事务中修改多行唯一键场景下,TiCDC 可能导致同步写冲突的问题 #9430 @sdojjy
- 修复下游发生短时间故障导致同步任务卡住的问题 #9542 #9272 #9582 #9592 @hicqu
- 修复下游发生故障重试时同步任务可能卡住的问题 #9450 @hicqu
TiDB Data Migration (DM)
TiDB Lightning
- 修复导入表设置
AUTO_ID_CACHE=1
会导致分配错误的row_id
的问题 #46100 @D3Hunter - 修复保存
NEXT_GLOBAL_ROW_ID
时类型错误问题 #45427 @lyzx2001 - 修复
checksum = "optional"
时 Checksum 阶段仍然报错的问题 #45382 @lyzx2001 - 修复当 PD 集群地址变更时数据导入失败的问题 #43436 @lichunzhu
- 修复 TiDB Lightning 在 PD 拓扑变更时无法启动的问题 #46688 @lance6716
- 修复导入 CSV 数据时,route 可能 panic 的问题 #43284 @lyzx2001
- 修复导入表设置
TiDB Binlog