From 5d5672d05ae5108cce511bda9268f406ec40ac4c Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 10:38:47 +0800 Subject: [PATCH 01/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 6ecc925ec0b1..a5d32e76b818 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -20,7 +20,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - add column - drop column - create index / add index -- drop index +- drop index * - truncate table - modify column - rename table @@ -36,7 +36,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - alter database character set - recover table - add primary key -- drop primary key +- drop primary key * - rebase auto id - alter table index visibility - exchange partition @@ -44,6 +44,10 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - alter table ttl - alter table remove ttl +> **注意:** +> +> - 带 * 号的删除主键索引或非空索引的DDL可能会导致后续同步失败 + ## DDL 同步注意事项 ### 创建和添加索引 DDL 的异步执行 From ef5900f3cb9779319f0a826607ee521972436d77 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 10:45:50 +0800 Subject: [PATCH 02/30] Update 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 a5d32e76b818..c9e0eb0521aa 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > **注意:** > -> - 带 * 号的删除主键索引或非空索引的DDL可能会导致后续同步失败 +> - 删除主键索引或非空索引的DDL(*号)可能会导致后续同步失败 ## DDL 同步注意事项 From 410e8efca5d0349465aece01629e64cf394255c1 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 10:46:22 +0800 Subject: [PATCH 03/30] Update 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 c9e0eb0521aa..38176ce14966 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > **注意:** > -> - 删除主键索引或非空索引的DDL(*号)可能会导致后续同步失败 +> - 删除主键索引或非空索引的DDL(*号)可能会导致后续数据同步失败 ## DDL 同步注意事项 From 194b5a9732bce677a632b273fcfe22b0b1f671c0 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 10:48:15 +0800 Subject: [PATCH 04/30] Update 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 38176ce14966..e657682e7f45 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > **注意:** > -> - 删除主键索引或非空索引的DDL(*号)可能会导致后续数据同步失败 +> - 删除主键索引或唯一索引的DDL(*号)可能会导致后续数据同步失败 ## DDL 同步注意事项 From 80878e906f9cec912e12207c2b722ac2b9712379 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 10:52:49 +0800 Subject: [PATCH 05/30] Update 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 e657682e7f45..c0facbf6887c 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > **注意:** > -> - 删除主键索引或唯一索引的DDL(*号)可能会导致后续数据同步失败 +> - 删除[有效索引](https://docs.pingcap.com/zh/tidb/stable/ticdc-overview#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号)可能会导致后续数据同步失败 ## DDL 同步注意事项 From a68b3ca2b97872682145accaeb74f45489a6fa49 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 11:50:24 +0800 Subject: [PATCH 06/30] Update ticdc/ticdc-ddl.md Co-authored-by: Flowyi --- 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 c0facbf6887c..9fbf48006c2c 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -20,7 +20,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - add column - drop column - create index / add index -- drop index * +- drop index [*注意] - truncate table - modify column - rename table From 2d06b0a54159de8ca4aaa2d3bb369d12f845cdec Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 11:51:05 +0800 Subject: [PATCH 07/30] Update 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 9fbf48006c2c..4eede6b58f18 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -36,7 +36,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - alter database character set - recover table - add primary key -- drop primary key * +- drop primary key [*注意] - rebase auto id - alter table index visibility - exchange partition From bec363d5c1b9f351dc016368d2635c5c3e802416 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 11:54:41 +0800 Subject: [PATCH 08/30] Update 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 4eede6b58f18..73dcda75e6b5 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > **注意:** > -> - 删除[有效索引](https://docs.pingcap.com/zh/tidb/stable/ticdc-overview#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号)可能会导致后续数据同步失败 +> - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号)可能会导致后续数据同步失败 ## DDL 同步注意事项 From 9b2b4241b190ecb6ecb81fbae643ff8cdb90490f Mon Sep 17 00:00:00 2001 From: Flowyi Date: Fri, 22 Nov 2024 11:58:21 +0800 Subject: [PATCH 09/30] 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 73dcda75e6b5..8f0624b2c750 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -44,7 +44,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - alter table ttl - alter table remove ttl -> **注意:** +> ** *注意:** > > - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号)可能会导致后续数据同步失败 From aee21d5dde35fc2595aa2f0013c089b627ccb57d Mon Sep 17 00:00:00 2001 From: Flowyi Date: Fri, 22 Nov 2024 11:58:52 +0800 Subject: [PATCH 10/30] 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 8f0624b2c750..48242c14d8e0 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -44,7 +44,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - alter table ttl - alter table remove ttl -> ** *注意:** +> ***注意:** > > - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号)可能会导致后续数据同步失败 From 3f8b8f13cfd2b0555f7f8c1a3babaeb630d7edc1 Mon Sep 17 00:00:00 2001 From: Flowyi Date: Fri, 22 Nov 2024 12:00:30 +0800 Subject: [PATCH 11/30] Apply suggestions from code review --- ticdc/ticdc-ddl.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 48242c14d8e0..182989d676ce 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -20,7 +20,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - add column - drop column - create index / add index -- drop index [*注意] +- drop index [***注意**] - truncate table - modify column - rename table @@ -36,7 +36,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 - alter database character set - recover table - add primary key -- drop primary key [*注意] +- drop primary key [***注意**] - rebase auto id - alter table index visibility - exchange partition From 58088ab16c8632ecb5a99fe7f0127b6e336b778a Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 12:23:22 +0800 Subject: [PATCH 12/30] Update 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 182989d676ce..3e3beb77b2a6 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ***注意:** > -> - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号)可能会导致后续数据同步失败 +> - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号) 不会被同步,并且可能会导致后续数据同步失败。 ## DDL 同步注意事项 From 1b445cea955fe950d6aa9a8f5a07d49a635050b2 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 22 Nov 2024 17:16:00 +0800 Subject: [PATCH 13/30] Update 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 3e3beb77b2a6..febe78358871 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ***注意:** > -> - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号) 不会被同步,并且可能会导致后续数据同步失败。 +> - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号) 可能不会被同步,并且导致后续数据同步失败。 ## DDL 同步注意事项 From a72795412a085e29c35f857669d929d87222660b Mon Sep 17 00:00:00 2001 From: nhsmw Date: Mon, 25 Nov 2024 10:11:17 +0800 Subject: [PATCH 14/30] Update 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 febe78358871..2694d030f68b 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ***注意:** > -> - 删除[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号) 可能不会被同步,并且导致后续数据同步失败。 +> - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 ## DDL 同步注意事项 From 5baa355aaef5563303e0aa26780576ecf4346b88 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Mon, 25 Nov 2024 10:26:09 +0800 Subject: [PATCH 15/30] Update 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 2694d030f68b..205d9ab8a164 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -46,7 +46,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ***注意:** > -> - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 +> - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#最佳实践)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 ## DDL 同步注意事项 From cc34fb6ab5f9669ea931702ab15aa292ed650521 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Mon, 25 Nov 2024 11:40:37 +0800 Subject: [PATCH 16/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 205d9ab8a164..2d433c7ebc20 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -47,6 +47,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ***注意:** > > - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#最佳实践)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 +> - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From 526af49f57e8efaa7a6b2239db3156559ffb44f8 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 26 Nov 2024 15:38:51 +0800 Subject: [PATCH 17/30] draft --- ticdc/ticdc-ddl.md | 74 +++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 2d433c7ebc20..3d217c0004e3 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -11,42 +11,48 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 目前 TiCDC 在同步 DDL 时使用白名单策略,只有在白名单中的 DDL 操作才会被同步到下游系统,不在白名单中的 DDL 操作将不会被 TiCDC 同步。 -以下为 TiCDC 支持同步的 DDL 的列表。 - -- create database -- drop database -- create table -- drop table -- add column -- drop column -- create index / add index -- drop index [***注意**] -- truncate table -- modify column -- rename table -- alter column default value -- alter table comment -- rename index -- add partition -- drop partition -- truncate partition -- create view -- drop view -- alter table character set -- alter database character set -- recover table -- add primary key -- drop primary key [***注意**] -- rebase auto id -- alter table index visibility -- exchange partition -- reorganize partition -- alter table ttl -- alter table remove ttl - -> ***注意:** +以下为 TiCDC 支持同步的 DDL 的列表。这些 DDL 会根据是否具有有效索引以及是否设置 force-replicate = true 会有不同的行为。 +下表中出现的缩写字母含义如下: +- Y:在该条件下可以同步到下游。 +- N:在该条件下不会同步到下游。 + +| DDL| 存在有效索引 | 没有有效索引 | force-replicate = true | +|---|:---:|:---:| :---: | +| create database | Y | Y | Y | +| drop database | Y | Y | Y | +| create table | Y | N | Y | +| drop table | Y | N | Y | +| add column | Y | N | Y | +| drop column | Y | N | Y | +| create index / add index | Y | Y | Y | +| drop index | Y | N | Y | +| truncate table | Y | N | Y | +| modify column | Y | N | Y | +| rename table | Y | N | Y | +| alter column default value | Y | N | Y | +| alter table comment | Y | N | Y | +| rename index | Y | N | Y | +| add partition | Y | N | Y | +| drop partition | Y | N | Y | +| truncate partition | Y | N | Y | +| create view | Y | N | Y | +| drop view | Y | N | Y | +| alter table character set | Y | N | Y | +| alter database character set | Y | Y | Y | +| recover table | Y | N | Y | +| add primary key | Y | Y | Y | +| drop primary key | Y | N | Y | +| rebase auto id | Y | N | Y | +| alter table index visibility | Y | N | Y | +| exchange partition | Y | N | Y | +| reorganize partition | Y | N | Y | +| alter table ttl | Y | N | Y | +| alter table remove ttl | Y | N | Y | + +> ** 注意:** > > - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#最佳实践)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 +> - 创建第一个[有效索引](/ticdc/ticdc-overview.md#最佳实践)的 DDL (*号) 会被同步,并且导致后续数据同步失败。 > - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From f63c2077513e2dd9950ac40a859c2aa8e3c42740 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 26 Nov 2024 15:42:25 +0800 Subject: [PATCH 18/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 3d217c0004e3..a7f4dd18a0f9 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -20,12 +20,15 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 |---|:---:|:---:| :---: | | create database | Y | Y | Y | | drop database | Y | Y | Y | +| alter database character set | Y | Y | Y | +| create index / add index | Y | Y* | Y | +| drop index | Y* | N | Y | +| add primary key | Y | Y* | Y | +| drop primary key | Y* | N | Y | | create table | Y | N | Y | | drop table | Y | N | Y | | add column | Y | N | Y | | drop column | Y | N | Y | -| create index / add index | Y | Y | Y | -| drop index | Y | N | Y | | truncate table | Y | N | Y | | modify column | Y | N | Y | | rename table | Y | N | Y | @@ -38,10 +41,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 | create view | Y | N | Y | | drop view | Y | N | Y | | alter table character set | Y | N | Y | -| alter database character set | Y | Y | Y | | recover table | Y | N | Y | -| add primary key | Y | Y | Y | -| drop primary key | Y | N | Y | | rebase auto id | Y | N | Y | | alter table index visibility | Y | N | Y | | exchange partition | Y | N | Y | From bb06d3b13e60abde5ad1b6488fbe6bedeae19849 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 16:31:59 +0800 Subject: [PATCH 19/30] Update ticdc-overview.md --- ticdc/ticdc-overview.md | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/ticdc/ticdc-overview.md b/ticdc/ticdc-overview.md index 3c37ad0c6f46..9405f4ff18e8 100644 --- a/ticdc/ticdc-overview.md +++ b/ticdc/ticdc-overview.md @@ -66,16 +66,23 @@ TiCDC 作为 TiDB 的增量数据同步工具,通过 PD 内部的 etcd 实现 另外,从上面的架构图中也可以看到,目前 TiCDC 支持将数据同步到 TiDB、MySQL 数据库、Kafka 以及存储服务等。 -## 最佳实践 +## 有效索引 -- 使用 TiCDC 在两个 TiDB 集群间同步数据时,如果上下游的延迟超过 100 ms: - - 对于 v6.5.2 之前的版本,推荐将 TiCDC 部署在下游 TiDB 集群所在的区域 (IDC, region) - - 经过优化后,对于 v6.5.2 及之后的版本,推荐将 TiCDC 部署在上游集群所在的区域 (IDC, region)。 -- TiCDC 同步的表需要至少存在一个**有效索引**的表,**有效索引**的定义如下: +TiCDC一般情况下只会同步存在有效索引的表,有效索引的定义如下: - 主键 (`PRIMARY KEY`) 为有效索引。 - 唯一索引 (`UNIQUE INDEX`) 中每一列在表结构中明确定义非空 (`NOT NULL`) 且不存在虚拟生成列 (`VIRTUAL GENERATED COLUMNS`)。 +> **注意:** +> +> 在设置 force-replicate=true 后,TiCDC会强制同步不存在有效索引的表。 + +## 最佳实践 + +- 使用 TiCDC 在两个 TiDB 集群间同步数据时,如果上下游的延迟超过 100 ms: + - 对于 v6.5.2 之前的版本,推荐将 TiCDC 部署在下游 TiDB 集群所在的区域 (IDC, region) + - 经过优化后,对于 v6.5.2 及之后的版本,推荐将 TiCDC 部署在上游集群所在的区域 (IDC, region)。 +- TiCDC 同步的表需要至少存在一个[**有效索引**](#有效索引)的表。 - 在使用 TiCDC 实现容灾的场景下,为实现最终一致性,需要配置 [redo log](/ticdc/ticdc-sink-to-mysql.md#灾难场景的最终一致性复制) 并确保 redo log 写入的存储系统在上游发生灾难时可以正常读取。 ## TiCDC 处理数据变更的实现原理 @@ -141,4 +148,4 @@ WHERE `A` = 1 OR `A` = 2; - 在 BR v8.2.0 之前的版本中,当集群存在 TiCDC 同步任务时,BR 不支持进行[数据恢复](/br/backup-and-restore-overview.md)。详情请参考[为什么在上游使用了 TiDB Lightning 和 BR 恢复了数据之后,TiCDC 同步会出现卡顿甚至卡住](/ticdc/ticdc-faq.md#为什么在上游使用了-tidb-lightning-物理导入模式和-br-恢复了数据之后ticdc-同步会出现卡顿甚至卡住)。 - 从 BR v8.2.0 起,BR 数据恢复对 TiCDC 的限制被放宽:如果所恢复数据的 BackupTS(即备份时间)早于 Changefeed 的 [CheckpointTS](/ticdc/ticdc-architecture.md#checkpointts)(即记录当前同步进度的时间戳),BR 数据恢复可以正常进行。考虑到 BackupTS 通常较早,此时可以认为绝大部分场景下,当集群存在 TiCDC 同步任务时,BR 都可以进行数据恢复。 -对上游存在较大事务的场景提供部分支持,详见 [TiCDC 是否支持同步大事务?有什么风险吗?](/ticdc/ticdc-faq.md#ticdc-支持同步大事务吗有什么风险吗)。 \ No newline at end of file +对上游存在较大事务的场景提供部分支持,详见 [TiCDC 是否支持同步大事务?有什么风险吗?](/ticdc/ticdc-faq.md#ticdc-支持同步大事务吗有什么风险吗)。 From 8a1372b04c19b677f5574aefee3e1d485cb165e0 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 16:35:30 +0800 Subject: [PATCH 20/30] Update ticdc-changefeed-config.md --- ticdc/ticdc-changefeed-config.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ticdc/ticdc-changefeed-config.md b/ticdc/ticdc-changefeed-config.md index ff951fa6b9df..ad8655e188a2 100644 --- a/ticdc/ticdc-changefeed-config.md +++ b/ticdc/ticdc-changefeed-config.md @@ -45,6 +45,9 @@ Info: {"upstream_id":7178706266519722477,"namespace":"default","id":"simple-repl # 该配置会同时影响 filter 和 sink 相关配置。自 v6.5.6、v7.1.3 和 v7.5.0 起,默认值由 true 改为 false case-sensitive = false +# 指定是否强制同步不存在有效索引的表,默认值为 false +force-replicate=false + # 是否开启 Syncpoint 功能,从 v6.3.0 开始支持,该功能默认关闭。 # 从 v6.4.0 开始,使用 Syncpoint 功能需要同步任务拥有下游集群的 SYSTEM_VARIABLES_ADMIN 或者 SUPER 权限。 # 注意:该参数只有当下游为 TiDB 时,才会生效。 From 844a48a94c28063b4b218291a527c6e512a222c3 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 17:03:36 +0800 Subject: [PATCH 21/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index a7f4dd18a0f9..3b929dc42200 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -51,9 +51,9 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ** 注意:** > -> - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#最佳实践)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 -> - 创建第一个[有效索引](/ticdc/ticdc-overview.md#最佳实践)的 DDL (*号) 会被同步,并且导致后续数据同步失败。 -> - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 +> - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#有效索引)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 +> - 之前不存在有效索引,创建第一个[有效索引](/ticdc/ticdc-overview.md#有效索引)的 DDL (*号) 会被同步,并且导致后续数据同步失败。 +> - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步不存在有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From 5a899ac73ed2fcbeebdc69451d24748df661b395 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 17:10:51 +0800 Subject: [PATCH 22/30] Update ticdc-changefeed-config.md --- ticdc/ticdc-changefeed-config.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ticdc/ticdc-changefeed-config.md b/ticdc/ticdc-changefeed-config.md index ad8655e188a2..db7669282964 100644 --- a/ticdc/ticdc-changefeed-config.md +++ b/ticdc/ticdc-changefeed-config.md @@ -46,6 +46,7 @@ Info: {"upstream_id":7178706266519722477,"namespace":"default","id":"simple-repl case-sensitive = false # 指定是否强制同步不存在有效索引的表,默认值为 false +# 详情请参考:https://docs.pingcap.com/zh/tidb/stable/ticdc-manage-changefeed#同步没有有效索引的表 force-replicate=false # 是否开启 Syncpoint 功能,从 v6.3.0 开始支持,该功能默认关闭。 From 0705d3554a03f0420d6a27c3c44686f8a046f846 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 17:13:41 +0800 Subject: [PATCH 23/30] Update ticdc-overview.md --- ticdc/ticdc-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ticdc/ticdc-overview.md b/ticdc/ticdc-overview.md index 9405f4ff18e8..3e05a1734b19 100644 --- a/ticdc/ticdc-overview.md +++ b/ticdc/ticdc-overview.md @@ -75,7 +75,7 @@ TiCDC一般情况下只会同步存在有效索引的表,有效索引的定义 > **注意:** > -> 在设置 force-replicate=true 后,TiCDC会强制同步不存在有效索引的表。 +> 在设置 force-replicate=true 后,TiCDC会强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## 最佳实践 From 5a33a4eb924494e0af9046167b3798cd212b2300 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 17:15:40 +0800 Subject: [PATCH 24/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 3b929dc42200..0a4373d74637 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -11,7 +11,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 目前 TiCDC 在同步 DDL 时使用白名单策略,只有在白名单中的 DDL 操作才会被同步到下游系统,不在白名单中的 DDL 操作将不会被 TiCDC 同步。 -以下为 TiCDC 支持同步的 DDL 的列表。这些 DDL 会根据是否具有有效索引以及是否设置 force-replicate = true 会有不同的行为。 +以下为 TiCDC 支持同步的 DDL 的列表。这些 DDL 会根据是否具有[有效索引](/ticdc/ticdc-overview.md#有效索引)以及是否设置 force-replicate = true 会有不同的行为。 下表中出现的缩写字母含义如下: - Y:在该条件下可以同步到下游。 - N:在该条件下不会同步到下游。 @@ -51,9 +51,9 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ** 注意:** > -> - 删除最后一个[有效索引](/ticdc/ticdc-overview.md#有效索引)的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 -> - 之前不存在有效索引,创建第一个[有效索引](/ticdc/ticdc-overview.md#有效索引)的 DDL (*号) 会被同步,并且导致后续数据同步失败。 -> - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步不存在有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 +> - 删除最后一个**有效索引**的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 +> - 之前不存在有效索引,创建第一个**有效索引**的 DDL (*号) 会被同步,并且导致后续数据同步失败。 +> - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From 5f648e703de1f608cc4ae339b890b58b2c2343d8 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Wed, 4 Dec 2024 18:46:26 +0800 Subject: [PATCH 25/30] Update 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 0a4373d74637..0bd6d3320f8e 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -52,7 +52,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ** 注意:** > > - 删除最后一个**有效索引**的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 -> - 之前不存在有效索引,创建第一个**有效索引**的 DDL (*号) 会被同步,并且导致后续数据同步失败。 +> - 之前不存在有效索引,创建第一个**有效索引**的 DDL (*号) 会被同步,但是由于下游表和上游表结构可能产生不一致从而导致后续数据同步失败。 > - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From 1f28eaac35f669d7b0fbedffbb8fa910a2fa05b4 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Thu, 5 Dec 2024 15:30:09 +0800 Subject: [PATCH 26/30] Update 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 0bd6d3320f8e..f9105c80a8b1 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -52,7 +52,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ** 注意:** > > - 删除最后一个**有效索引**的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 -> - 之前不存在有效索引,创建第一个**有效索引**的 DDL (*号) 会被同步,但是由于下游表和上游表结构可能产生不一致从而导致后续数据同步失败。 +> - 当上游表不存在有效索引,且不开启 `force_replicate=true`时,该表不会被同步,但是之后在该表上创建**有效索引**的 DDL (*号) 会被同步,并且下游表和上游表结构可能产生不一致从而导致后续数据同步失败。 > - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From e5b1948732f6d835b61476da587ff5fa8c63b578 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Thu, 5 Dec 2024 16:15:08 +0800 Subject: [PATCH 27/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index f9105c80a8b1..4997268e01b3 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -52,8 +52,8 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 > ** 注意:** > > - 删除最后一个**有效索引**的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 -> - 当上游表不存在有效索引,且不开启 `force_replicate=true`时,该表不会被同步,但是之后在该表上创建**有效索引**的 DDL (*号) 会被同步,并且下游表和上游表结构可能产生不一致从而导致后续数据同步失败。 -> - 当 changefeed 的配置文件设置 `force_replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 +> - 当上游表不存在有效索引,且不开启 `force-replicate=true`时,该表不会被同步,但是之后在该表上创建**有效索引**的 DDL (*号) 会被同步,并且下游表和上游表结构可能产生不一致从而导致后续数据同步失败。 +> - 当 changefeed 的配置文件设置 `force-replicate=true` 时,同步任务会尝试强制[同步没有有效索引的表](/ticdc/ticdc-manage-changefeed.md#同步没有有效索引的表)。 ## DDL 同步注意事项 From cf8e1fbf372fd997aedd062756dfbadc5de857f6 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Thu, 5 Dec 2024 16:55:28 +0800 Subject: [PATCH 28/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 4997268e01b3..4788bc7de0b8 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -13,6 +13,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 以下为 TiCDC 支持同步的 DDL 的列表。这些 DDL 会根据是否具有[有效索引](/ticdc/ticdc-overview.md#有效索引)以及是否设置 force-replicate = true 会有不同的行为。 下表中出现的缩写字母含义如下: + - Y:在该条件下可以同步到下游。 - N:在该条件下不会同步到下游。 From 8c954828de8eaa88e129757bdf9f5b30e5d4ce38 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Thu, 5 Dec 2024 17:03:12 +0800 Subject: [PATCH 29/30] Update ticdc-ddl.md --- ticdc/ticdc-ddl.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ticdc/ticdc-ddl.md b/ticdc/ticdc-ddl.md index 4788bc7de0b8..2b960c12fd32 100644 --- a/ticdc/ticdc-ddl.md +++ b/ticdc/ticdc-ddl.md @@ -11,8 +11,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 目前 TiCDC 在同步 DDL 时使用白名单策略,只有在白名单中的 DDL 操作才会被同步到下游系统,不在白名单中的 DDL 操作将不会被 TiCDC 同步。 -以下为 TiCDC 支持同步的 DDL 的列表。这些 DDL 会根据是否具有[有效索引](/ticdc/ticdc-overview.md#有效索引)以及是否设置 force-replicate = true 会有不同的行为。 -下表中出现的缩写字母含义如下: +以下为 TiCDC 支持同步的 DDL 的列表。这些 DDL 会根据是否具有[有效索引](/ticdc/ticdc-overview.md#有效索引)以及是否设置 force-replicate = true 会有不同的行为。下表中出现的缩写字母含义如下: - Y:在该条件下可以同步到下游。 - N:在该条件下不会同步到下游。 @@ -50,7 +49,7 @@ summary: 了解 TiCDC 支持同步的 DDL 和一些特殊情况 | alter table ttl | Y | N | Y | | alter table remove ttl | Y | N | Y | -> ** 注意:** +> **注意** > > - 删除最后一个**有效索引**的 DDL (*号) 不会被同步,并且导致后续数据同步失败。 > - 当上游表不存在有效索引,且不开启 `force-replicate=true`时,该表不会被同步,但是之后在该表上创建**有效索引**的 DDL (*号) 会被同步,并且下游表和上游表结构可能产生不一致从而导致后续数据同步失败。 From 3e0d91de9bfbd6e4315d1349396f43f55e0b7ab0 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Thu, 5 Dec 2024 17:05:05 +0800 Subject: [PATCH 30/30] Update ticdc-overview.md --- ticdc/ticdc-overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-overview.md b/ticdc/ticdc-overview.md index 3e05a1734b19..b1e187a55ca5 100644 --- a/ticdc/ticdc-overview.md +++ b/ticdc/ticdc-overview.md @@ -70,8 +70,8 @@ TiCDC 作为 TiDB 的增量数据同步工具,通过 PD 内部的 etcd 实现 TiCDC一般情况下只会同步存在有效索引的表,有效索引的定义如下: - - 主键 (`PRIMARY KEY`) 为有效索引。 - - 唯一索引 (`UNIQUE INDEX`) 中每一列在表结构中明确定义非空 (`NOT NULL`) 且不存在虚拟生成列 (`VIRTUAL GENERATED COLUMNS`)。 +- 主键 (`PRIMARY KEY`) 为有效索引。 +- 唯一索引 (`UNIQUE INDEX`) 中每一列在表结构中明确定义非空 (`NOT NULL`) 且不存在虚拟生成列 (`VIRTUAL GENERATED COLUMNS`)。 > **注意:** >