From 6e41996a5c21f7c38deeec69c30ec610653a5d35 Mon Sep 17 00:00:00 2001 From: doc-claw-bot Date: Wed, 22 Jul 2026 09:27:39 +0000 Subject: [PATCH 1/3] docs: clarify TiCDC index DDL ordering --- ticdc/ticdc-ddl.md | 2 +- ticdc/ticdc-faq.md | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 7ebb40ebeb81..c28333e08f21 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -61,7 +61,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 ### 创建和添加索引 DDL 的异步执行 -为了减小对 Changefeed 同步延迟的影响,如果下游是 TiDB,TiCDC 会异步执行创建和添加索引的 DDL 操作,即 TiCDC 将 `ADD INDEX` 和 `CREATE INDEX` DDL 同步到下游执行后,会立刻返回,而不会等待 DDL 操作完成。这样可以避免阻塞后续的 DML 执行。 +虽然 TiCDC 在大多数情况下会按顺序同步 DDL,但如果下游是 TiDB,`ADD INDEX` 和 `CREATE INDEX` 是例外。为了减小对 Changefeed 同步延迟的影响,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 任务的状态,等到索引创建完成后再继续同步。这期间虽然同步任务的延迟会加剧,但避免了同步任务失败的问题。 diff --git a/ticdc/ticdc-faq.md b/ticdc/ticdc-faq.md index 359473732894..0cbaf106a211 100644 --- a/ticdc/ticdc-faq.md +++ b/ticdc/ticdc-faq.md @@ -403,12 +403,14 @@ BR (Backup & Restore) 工具是将直接将数据生成 SST 文件并导入 TiKV ## 如何理解 DML 和 DDL 语句之间的执行顺序? -目前,TiCDC 采用了以下执行顺序: +对于大多数 DDL,TiCDC 采用以下执行顺序: 1. TiCDC 阻塞受 DDL 影响的表的同步进度,直到 DDL `commitTS` 的时间点,以确保在 DDL `commitTS` 之前执行的 DML 先成功同步到下游。 -2. TiCDC 继续同步 DDL。当存在多个 DDL 时,TiCDC 是以串行的方式进行同步的。 +2. TiCDC 继续同步 DDL。当存在多个 DDL 时,TiCDC 通常以串行的方式进行同步。 3. 当 DDL 在下游执行完成之后,TiCDC 继续同步 DDL `commitTS` 之后执行的 DML。 +当下游是 TiDB 时,`ADD INDEX` 和 `CREATE INDEX` 是上述顺序的例外。为了减小对 Changefeed 同步延迟的影响,TiCDC 会异步执行这两类 DDL,不会等待其在下游执行完成后再返回。因此,这两类 DDL 不完全遵循上述“等待下游执行完成后再继续同步”的顺序。关于这种特殊处理及后续优化,参见[创建和添加索引 DDL 的异步执行](/ticdc/ticdc-ddl.md#创建和添加索引-ddl-的异步执行)。 + ## 如何对比上下游数据的一致性? 如果下游是 TiDB 集群或者 MySQL,我们推荐使用 [sync diff inspector](/sync-diff-inspector/sync-diff-inspector-overview.md) 工具进行数据对比。 From 79e082d3fbfed068ce18990b1f801c43610c2a10 Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 22 Jul 2026 17:44:03 +0800 Subject: [PATCH 2/3] Apply suggestions from code review --- ticdc/ticdc-ddl.md | 2 +- ticdc/ticdc-faq.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index c28333e08f21..a2a9b25151b5 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -61,7 +61,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 ### 创建和添加索引 DDL 的异步执行 -虽然 TiCDC 在大多数情况下会按顺序同步 DDL,但如果下游是 TiDB,`ADD INDEX` 和 `CREATE INDEX` 是例外。为了减小对 Changefeed 同步延迟的影响,TiCDC 会异步执行这两类 DDL,即 TiCDC 将 `ADD INDEX` 和 `CREATE INDEX` DDL 同步到下游执行后,会立刻返回,而不会等待 DDL 操作完成。这样可以避免阻塞后续的 DML 执行。 +虽然 TiCDC 在大多数情况下会按顺序同步 DDL,但如果下游是 TiDB,TiCDC 会异步执行执行创建和添加索引的 DDL 操作,即 TiCDC 将 `ADD INDEX` 和 `CREATE INDEX` DDL 同步到下游执行后,会立刻返回,而不会等待 DDL 操作完成。这样可以减小对 Changefeed 同步延迟的影响,避免阻塞后续的 DML 执行。 当 `ADD INDEX` 或 `CREATE INDEX` DDL 操作在下游执行期间,TiCDC 执行同一张表的下一条 DDL 时,这条 DDL 可能长期被阻塞在 `queueing` 状态,导致其被 TiCDC 重复执行多次,重试时间过长时还会导致同步任务失败。从 v8.4.0 开始,如果拥有下游数据库的 `SUPER` 权限,TiCDC 会定期执行 `ADMIN SHOW DDL JOBS` 查询异步执行的 DDL 任务的状态,等到索引创建完成后再继续同步。这期间虽然同步任务的延迟会加剧,但避免了同步任务失败的问题。 diff --git a/ticdc/ticdc-faq.md b/ticdc/ticdc-faq.md index 0cbaf106a211..4628b5af0fb4 100644 --- a/ticdc/ticdc-faq.md +++ b/ticdc/ticdc-faq.md @@ -409,7 +409,7 @@ BR (Backup & Restore) 工具是将直接将数据生成 SST 文件并导入 TiKV 2. TiCDC 继续同步 DDL。当存在多个 DDL 时,TiCDC 通常以串行的方式进行同步。 3. 当 DDL 在下游执行完成之后,TiCDC 继续同步 DDL `commitTS` 之后执行的 DML。 -当下游是 TiDB 时,`ADD INDEX` 和 `CREATE INDEX` 是上述顺序的例外。为了减小对 Changefeed 同步延迟的影响,TiCDC 会异步执行这两类 DDL,不会等待其在下游执行完成后再返回。因此,这两类 DDL 不完全遵循上述“等待下游执行完成后再继续同步”的顺序。关于这种特殊处理及后续优化,参见[创建和添加索引 DDL 的异步执行](/ticdc/ticdc-ddl.md#创建和添加索引-ddl-的异步执行)。 +对于 `ADD INDEX` 和 `CREATE INDEX`,当下游是 TiDB 时,TiCDC 会异步执行这两类 DDL,不会等待其在下游执行完成后再返回,以减小对 Changefeed 同步延迟的影响。更多信息,请参考[创建和添加索引 DDL 的异步执行](/ticdc/ticdc-ddl.md#创建和添加索引-ddl-的异步执行)。 ## 如何对比上下游数据的一致性? From ac81ac2e2292cf7f875a52c2190321436cb2140e Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Wed, 22 Jul 2026 17:53:43 +0800 Subject: [PATCH 3/3] Update ticdc/ticdc-ddl.md --- ticdc/ticdc-ddl.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index a2a9b25151b5..313233a94eba 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -61,7 +61,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 ### 创建和添加索引 DDL 的异步执行 -虽然 TiCDC 在大多数情况下会按顺序同步 DDL,但如果下游是 TiDB,TiCDC 会异步执行执行创建和添加索引的 DDL 操作,即 TiCDC 将 `ADD INDEX` 和 `CREATE INDEX` DDL 同步到下游执行后,会立刻返回,而不会等待 DDL 操作完成。这样可以减小对 Changefeed 同步延迟的影响,避免阻塞后续的 DML 执行。 +虽然 TiCDC 在大多数情况下会按顺序同步 DDL,但如果下游是 TiDB,TiCDC 会异步执行创建和添加索引的 DDL 操作,即 TiCDC 将 `ADD INDEX` 和 `CREATE INDEX` DDL 同步到下游执行后,会立刻返回,而不会等待 DDL 操作完成。这样可以减小对 Changefeed 同步延迟的影响,避免阻塞后续的 DML 执行。 当 `ADD INDEX` 或 `CREATE INDEX` DDL 操作在下游执行期间,TiCDC 执行同一张表的下一条 DDL 时,这条 DDL 可能长期被阻塞在 `queueing` 状态,导致其被 TiCDC 重复执行多次,重试时间过长时还会导致同步任务失败。从 v8.4.0 开始,如果拥有下游数据库的 `SUPER` 权限,TiCDC 会定期执行 `ADMIN SHOW DDL JOBS` 查询异步执行的 DDL 任务的状态,等到索引创建完成后再继续同步。这期间虽然同步任务的延迟会加剧,但避免了同步任务失败的问题。