Skip to content

Commit

Permalink
cdc: add some explanations about lossy DDL (pingcap#13869)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rustin170506 authored May 8, 2023
1 parent 2480820 commit b76f64b
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
4 changes: 4 additions & 0 deletions releases/release-7.1.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,10 @@ TiDB 版本:7.1.0 (upcoming)
- 提升 TiFlash 在存算分离架构下的性能和稳定性 [#6882](https://github.com/pingcap/tiflash/issues/6882) @[JaySon-Huang](https://github.com/JaySon-Huang) @[breezewish](https://github.com/breezewish) @[JinheLin](https://github.com/JinheLin)
- 支持在 Semi Join 或 Anti Semi Join 中,通过选择较小的表作为 Build 端来优化查询性能 [#7280](https://github.com/pingcap/tiflash/issues/7280) @[yibin87](https://github.com/yibin87)

+ TiCDC

- TiCDC 过滤了由有损 DDL 语句导致的数据变更,避免发送无效数据变更 [#43227](https://github.com/pingcap/tidb/issues/43227) @[hi-rustin](https://github.com/hi-rustin)

## 贡献者

感谢来自 TiDB 社区的贡献者们:
Expand Down
13 changes: 13 additions & 0 deletions ticdc/ticdc-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,19 @@ TiCDC 对大事务(大小超过 5 GB)提供部分支持,根据场景不同
4. 建立一个新的 changefeed,从 `BackupTS` 开始同步任务。
5. 删除旧的 changefeed。

## TiCDC 是否会将有损 DDL 产生的数据变更同步到下游?

有损 DDL 是指在 TiDB 中执行可能会导致数据改变的 DDL。一些常见的有损 DDL 操作包括:

- 修改列的类型,例如:INT -> VARCHAR
- 修改列的长度,例如:VARCHAR(20) -> VARCHAR(10)
- 修改列的精度,例如:DECIMAL(10, 3) -> DECIMAL(10, 2)
- 修改列的符号(有符号数/无符号数),例如:INT UNSIGNED -> INT SIGNED

在 TiDB v7.1.0 之前,TiCDC 会将一条新旧数据相同的 DML 事件同步到下游。当下游是 MySQL 时,这些 DML 事件不会产生任何数据变更,只有下游接收并执行该 DDL 语句后,数据才会发生变更。但是当下游是 Kafka 或者云存储时,TiCDC 会写入一条无用的数据到下游。

从 TiDB v7.1.0 开始,TiCDC 会过滤掉这些无用的 DML 事件,不再将它们同步到下游。

## 同步 DDL 到下游 MySQL 5.7 时为什么时间类型字段默认值不一致?

比如上游 TiDB 的建表语句为 `create table test (id int primary key, ts timestamp)`,TiCDC 同步该语句到下游 MySQL 5.7,MySQL 使用默认配置,同步得到的表结构如下所示,timestamp 字段默认值会变成 `CURRENT_TIMESTAMP`
Expand Down

0 comments on commit b76f64b

Please sign in to comment.