Skip to content

ticdc: add new doc for TiCDC data replication capabilities (#20345) #20371

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

Open
wants to merge 1 commit into
base: release-7.5
Choose a base branch
from
Open
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
28 changes: 28 additions & 0 deletions TOC.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,34 @@
- 数据集成场景
- [与 Confluent Cloud 和 Snowflake 进行数据集成](/ticdc/integrate-confluent-using-ticdc.md)
- [与 Apache Kafka 和 Apache Flink 进行数据集成](/replicate-data-to-kafka.md)
<<<<<<< HEAD
=======
- 参考指南
- [TiCDC 架构设计与原理](/ticdc/ticdc-architecture.md)
- [TiCDC 数据同步能力详解](/ticdc/ticdc-data-replication-capabilities.md)
- [TiCDC Server 配置参数](/ticdc/ticdc-server-config.md)
- [TiCDC Changefeed 配置参数](/ticdc/ticdc-changefeed-config.md)
- [TiCDC 客户端鉴权](/ticdc/ticdc-client-authentication.md)
- [单行数据正确性校验](/ticdc/ticdc-integrity-check.md)
- [主从集群数据校验和快照读](/ticdc/ticdc-upstream-downstream-check.md)
- [拆分 UPDATE 事件行为说明](/ticdc/ticdc-split-update-behavior.md)
- 输出数据协议
- [TiCDC Avro Protocol](/ticdc/ticdc-avro-protocol.md)
- [TiCDC Canal-JSON Protocol](/ticdc/ticdc-canal-json.md)
- [TiCDC CSV Protocol](/ticdc/ticdc-csv.md)
- [TiCDC Debezium Protocol](/ticdc/ticdc-debezium.md)
- [TiCDC Open Protocol](/ticdc/ticdc-open-protocol.md)
- [TiCDC Simple Protocol](/ticdc/ticdc-simple-protocol.md)
- [TiCDC Open API v2](/ticdc/ticdc-open-api-v2.md)
- [TiCDC Open API v1](/ticdc/ticdc-open-api.md)
- TiCDC 数据消费
- [基于 Avro 的 TiCDC 行数据 Checksum 校验](/ticdc/ticdc-avro-checksum-verification.md)
- [Storage sink 消费程序编写指引](/ticdc/ticdc-storage-consumer-dev-guide.md)
- [TiCDC 兼容性](/ticdc/ticdc-compatibility.md)
- [故障处理](/ticdc/troubleshoot-ticdc.md)
- [常见问题解答](/ticdc/ticdc-faq.md)
- [术语表](/ticdc/ticdc-glossary.md)
>>>>>>> 16b417f5ba (ticdc: add new doc for TiCDC data replication capabilities (#20345))
- 运维操作
- 安全加固
- [TiDB 安全配置最佳实践](/best-practices-for-security-configuration.md)
Expand Down
48 changes: 48 additions & 0 deletions ticdc/ticdc-data-replication-capabilities.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
title: TiCDC 数据同步能力详解
summary: 了解 TiCDC 的数据同步能力。
---

# TiCDC 数据同步能力详解

[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) 是 TiDB 生态中用于​​实时数据同步​​的核心组件。本文详细解释 TiCDC 的数据同步能力。

## 工作原理​

- TiCDC 监听 TiKV 的变更日志 (Raft Log),将行数据的增删改操作转换为下游兼容的 SQL 语句,并不基于上游的 SQL 获取数据变更。详情请参考 [TiCDC 处理数据变更的实现原理](/ticdc/ticdc-overview.md#ticdc-处理数据变更的实现原理)。

- TiCDC 生成与 SQL 语义等效的逻辑操作(如 `INSERT`、`UPDATE`、`DELETE`),而非逐条还原上游执行的原始 SQL 语句。详情请参考 [TiCDC 处理数据变更的实现原理](/ticdc/ticdc-overview.md#ticdc-处理数据变更的实现原理)。

- TiCDC 提供事务最终一致性的保证。开启 [redo log](/ticdc/ticdc-sink-to-mysql.md#灾难场景的最终一致性复制) 后,TiCDC 可以保证容灾场景下的最终一致性;开启 [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#启用-syncpoint) 后,TiCDC 提供一致性快照读和数据一致性校验。

## 支持的下游

TiCDC 支持同步数据到多类下游,包括:

- [TiDB 及兼容 MySQL 协议的数据库](/ticdc/ticdc-sink-to-mysql.md)
- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
- [Message Queue (MQ) 类的下游](/ticdc/ticdc-changefeed-config.md#sink),如 [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
- [存储服务(Amazon S3、GCS、Azure Blob Storage 和 NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
- [通过 Confluent Cloud 同步至 Snowflake、ksqlDB、SQL Server](/ticdc/integrate-confluent-using-ticdc.md)
- [使用 Apache Flink 消费同步至 Kafka 的数据](/replicate-data-to-kafka.md)

## 数据同步范围

TiCDC 对上游数据变更的支持范围如下:

+ 支持:

- DDL 和 DML 语句(非系统表)。
- 索引操作 (`ADD INDEX`, `CREATE INDEX`):为了减少对 Changefeed 同步延迟的影响,当下游为 TiDB 时,TiCDC 会[异步执行创建和添加索引的 DDL 操作](/ticdc/ticdc-ddl.md#创建和添加索引-ddl-的异步执行)。
- 外键约束 DDL 语句 (`ADD FOREIGN KEY`):TiCDC 不会同步上游系统变量的设置,需要在下游手动设置 [`foreign_key_checks`](/system-variables.md#foreign_key_checks) 来决定是否开启下游的外键约束检查。TiCDC 不会检查数据是否满足下游的外键约束。

+ 不支持:

- 系统表(如 `mysql.*` 和 `information_schema.*`)的 DDL 和 DML 语句。
- 临时表的 DDL 和 DML 语句。
- DQL (Data Query Language) 语句 和 DCL (Data Control Language) 语句。

## 使用限制

- TiCDC 对一些场景暂不支持,详见[暂不支持的场景](/ticdc/ticdc-overview.md#暂不支持的场景)。
- TiCDC 只检查上游数据变更的完整性,不检查数据变更是否符合上游或下游的约束。如果遇到不满足下游约束的数据变更,TiCDC 会在写入下游时报错。例如,TiCDC 不会进行任何外键约束的检查。
4 changes: 4 additions & 0 deletions ticdc/ticdc-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,11 @@ summary: TiCDC 是一款 TiDB 增量数据同步工具,适用于多 TiDB 集

# TiCDC 简介

<<<<<<< HEAD
[TiCDC](https://github.com/pingcap/tiflow/tree/release-7.5/cdc) 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC 可以将数据解析为有序的行级变更数据输出到下游。
=======
[TiCDC](https://github.com/pingcap/tiflow/tree/master/cdc) 是一款 TiDB 增量数据同步工具,通过拉取上游 TiKV 的数据变更日志,TiCDC 可以将数据解析为有序的行级变更数据输出到下游。关于具体的数据同步能力,参见 [TiCDC 数据同步能力详解](/ticdc/ticdc-data-replication-capabilities.md)。
>>>>>>> 16b417f5ba (ticdc: add new doc for TiCDC data replication capabilities (#20345))

## TiCDC 适用场景

Expand Down
Loading