Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ticdc: add wait async ddl description #18500

Merged
merged 8 commits into from
Oct 15, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions ticdc/ticdc-ddl.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况

为了减小对 Changefeed 同步延迟的影响,如果下游是 TiDB,TiCDC 会异步执行创建和添加索引的 DDL 操作,即 TiCDC 将 `ADD INDEX` 和 `CREATE INDEX` DDL 同步到下游执行后,会立刻返回,而不会等待 DDL 操作完成。这样可以避免阻塞后续的 DML 执行。

当 `ADD INDEX` 或 `CREATE INDEX` DDL 操作在下游执行期间,TiCDC 执行同一张表的下一条 DDL 时,这条 DDL 可能长期被阻塞在 `queueing` 状态,导致其被 TiCDC 重复执行多次,重试时间过长时还会导致同步任务失败。从 v8.4.0 开始,如果拥有下游数据库的 `SUPER` 权限,TiCDC 会定期执行 `ADMIN SHOW DDL JOBS` 查询异步执行的 DDL 任务的状态,等到索引创建完成后再继续同步。这期间虽然同步任务的延迟会加剧,但避免了同步任务失败的问题。

> **注意:**
>
> - 如果下游 DML 的执行依赖于未完成同步的索引,DML 可能会执行得很慢,进而影响 TiCDC 的同步延迟。
Expand Down
2 changes: 1 addition & 1 deletion ticdc/ticdc-split-update-behavior.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ COMMIT;
从 v6.5.10、v7.1.6、v7.5.3 和 v8.1.1 开始,使用非 MySQL Sink 时,TiCDC 支持通过 `output-raw-change-event` 参数控制是否拆分主键或唯一键 `UPDATE` 事件,详情见 GitHub issue [#11211](https://github.com/pingcap/tiflow/issues/11211)。这个参数的具体行为是:

- 当 `output-raw-change-event = false` 时,如果 `UPDATE` 事件的主键或者非空唯一索引的列值发生改变,TiCDC 会将该其拆分为 `DELETE` 和 `INSERT` 两条事件,并确保所有事件按照 `DELETE` 事件在 `INSERT` 事件之前的顺序进行排序。
- 当 `output-raw-change-event = true` 时,TiCDC 不拆分 `UPDATE` 事件。注意,当表的主键为聚簇索引时,对主键的更新会在 TiDB 中拆分为 `DELETE` 和 `INSERT` 两个事件,该行为不受 `output-raw-change-event` 参数的影响。
- 当 `output-raw-change-event = true` 时,TiCDC 不拆分 `UPDATE` 事件,消费侧需负责处理[非 MySQL Sink 拆分主键或唯一键 `UPDATE` 事件](/ticdc/ticdc-split-update-behavior.md#非-mysql-sink-拆分主键或唯一键-update-事件)中说明的问题,否则可能出现数据不一致的风险。注意,当表的主键为聚簇索引时,对主键的更新会在 TiDB 中拆分为 `DELETE` 和 `INSERT` 两个事件,该行为不受 `output-raw-change-event` 参数的影响。

#### Release 6.5 的兼容性

Expand Down