Repository: pingcap/docs
Pull request #21019: ticdc: add new doc for TiCDC data replication capabilities (#20967)
Author: login: ti-chi-bot
Labels: name: type/enhancement
description: The issue or PR belongs to an enhancement.
name: needs-cherry-pick-master
description: Should cherry pick this PR to master branch.
name: size/M
description: Denotes a PR that changes 30-99 lines, ignoring generated files.
name: ONCALL
description: Relates to documentation oncall.
name: area/ticdc
description: Indicates that the Issue or PR belongs to the area of TiCDC.
name: needs-1-more-lgtm
description: Indicates a PR needs 1 more LGTM.
name: approved
name: lgtm
name: type/cherry-pick-for-release-8.5
description: This PR is cherry-picked to release-8.5 from a source PR.
Created: 2025-05-23T02:47:13Z | Merged: 2025-05-23T04:13:04Z

This is an automated cherry-pick of #20967

<!--Thanks for your contribution to TiDB documentation. Please answer the following questions.-->
<!--
We provide several doc templates for you to use to create documentation that aligns with our style.
Please check out these templates before you submit the pull request:
https://github.com/pingcap/docs/tree/master/resources/doc-templates
-->

### First-time contributors' checklist <!--Remove this section if you're not a first-time contributor.-->

- [ ] I've signed [**Contributor License Agreement**](https://cla-assistant.io/pingcap/docs) that's required for repo owners to accept my contribution.

### What is changed, added or deleted? (Required)

<!--Tell us what you did and why.-->

### Which TiDB version(s) do your changes apply to? (Required)

<!-- Fill in "x" in [] to tick the checkbox below.-->

**Tips for choosing the affected version(s):**

By default, **CHOOSE MASTER ONLY** so your changes will be applied to the next TiDB major or minor releases. If your PR involves a product feature behavior change or a compatibility change, **CHOOSE THE AFFECTED RELEASE BRANCH(ES) AND MASTER**.

For details, see [tips for choosing the affected versions](https://github.com/pingcap/docs/blob/master/CONTRIBUTING.md#guideline-for-choosing-the-affected-versions).

- [x] master (the latest development version)
- [ ] v9.0 (TiDB 9.0 versions)
- [x] v8.5 (TiDB 8.5 versions)
- [ ] v8.4 (TiDB 8.4 versions)
- [ ] v8.3 (TiDB 8.3 versions)
- [x] v8.1 (TiDB 8.1 versions)
- [x] v7.5 (TiDB 7.5 versions)
- [x] v7.1 (TiDB 7.1 versions)
- [x] v6.5 (TiDB 6.5 versions)
- [x] v6.1 (TiDB 6.1 versions)
- [ ] v5.4 (TiDB 5.4 versions)

### What is the related PR or file link(s)?

<!--Reference link(s) will help reviewers review your PR quickly.-->

- This PR is translated from: https://github.com/pingcap/docs-cn/pull/20345
- Other reference link(s):

### Do your changes match any of the following descriptions?

- [ ] Delete files
- [ ] Change aliases
- [ ] Need modification after applied to another branch <!-- If yes, please comment "/label version-specific-changes-required" below to trigger the bot to add the label. -->
- [ ] Might cause conflicts after applied to another branch



Diff:
diff --git a/TOC.md b/TOC.md
index 92f40c856b42c..f23ce0bab4d90 100644
--- a/TOC.md
+++ b/TOC.md
@@ -193,6 +193,7 @@
     - [Integrate with Apache Kafka and Apache Flink](/replicate-data-to-kafka.md)
   - Reference
     - [TiCDC Architecture](/ticdc/ticdc-architecture.md)
+    - [TiCDC Data Replication Capabilities](/ticdc/ticdc-data-replication-capabilities.md)
     - [TiCDC Server Configurations](/ticdc/ticdc-server-config.md)
     - [TiCDC Changefeed Configurations](/ticdc/ticdc-changefeed-config.md)
     - [TiCDC Client Authentication](/ticdc/ticdc-client-authentication.md)
diff --git a/ticdc/ticdc-data-replication-capabilities.md b/ticdc/ticdc-data-replication-capabilities.md
new file mode 100644
index 0000000000000..e0b2cb879f259
--- /dev/null
+++ b/ticdc/ticdc-data-replication-capabilities.md
@@ -0,0 +1,48 @@
+---
+title: TiCDC Data Replication Capabilities
+summary: Learn the data replication capabilities of TiCDC.
+---
+
+# TiCDC Data Replication Capabilities
+
+[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) is a core component in the TiDB ecosystem for real-time data replication. This document provides a detailed explanation of TiCDC data replication capabilities.
+
+## How TiCDC works
+
+- TiCDC listens to TiKV change logs (Raft logs) and converts row-level data changes (`INSERT`, `UPDATE`, and `DELETE` operations) into downstream-compatible SQL statements. TiCDC does not rely on the original SQL statements executed on the upstream database. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC generates logical operations (such as `INSERT`, `UPDATE`, and `DELETE`) equivalent to SQL semantics, rather than restoring the original SQL statements executed on the upstream database one by one. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC ensures eventual consistency of transactions. With [redo log](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) enabled, TiCDC can guarantee eventual consistency in disaster recovery scenarios. With [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#enable-syncpoint) enabled, TiCDC supports consistent snapshot reads and data consistency validation.
+
+## Supported downstream systems
+
+TiCDC supports replicating data to various downstream systems, including the following:
+
+- [TiDB database or other MySQL-compatible databases](/ticdc/ticdc-sink-to-mysql.md)
+- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
+- [Message Queue (MQ)-type sinks](/ticdc/ticdc-changefeed-config.md#sink), such as [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
+- [Storage services (Amazon S3, GCS, Azure Blob Storage, and NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
+- [Snowflake, ksqlDB, SQL Server via Confluent Cloud integration](/ticdc/integrate-confluent-using-ticdc.md)
+- [Apache Flink for consuming Kafka-replicated data](/replicate-data-to-kafka.md)
+
+## Scope of data replication
+
+TiCDC supports the following types of upstream data changes:
+
++ **Supported:**
+
+    - DDL and DML statements (excluding system tables).
+    - Index operations (`ADD INDEX`, `CREATE INDEX`): to reduce the impact on changefeed replication latency, if the downstream is TiDB, TiCDC [asynchronously executes the `ADD INDEX` and `CREATE INDEX` DDL operations](/ticdc/ticdc-ddl.md#asynchronous-execution-of-add-index-and-create-index-ddls).
+    - Foreign key constraint DDL statements (`ADD FOREIGN KEY`): TiCDC does **not** replicate upstream system variable settings. You need to manually configure [`foreign_key_checks`](/system-variables.md#foreign_key_checks) in the downstream to determine whether the downstream foreign key constraint check is enabled. TiCDC does **not** validate whether the data complies with foreign key constraints.
+
++ **Not supported**:
+
+    - DDL and DML statements executed in upstream system tables (including `mysql.*` and `information_schema.*`).
+    - DDL and DML statements executed in upstream temporary tables.
+    - DQL (Data Query Language) and DCL (Data Control Language) statements.
+
+## Limitations
+
+- TiCDC does not support certain scenarios. For details, see [unsupported scenarios](/ticdc/ticdc-overview.md#unsupported-scenarios).
+- TiCDC only verifies the integrity of upstream data changes. It does not validate whether the changes conform to upstream or downstream constraints. If the data violates downstream constraints, TiCDC will return an error when writing to the downstream. For example, TiCDC does **not** perform any foreign key validation.
\ No newline at end of file
diff --git a/ticdc/ticdc-overview.md b/ticdc/ticdc-overview.md
index dd5221eb1c2a2..970ec1b37ac55 100644
--- a/ticdc/ticdc-overview.md
+++ b/ticdc/ticdc-overview.md
@@ -5,7 +5,7 @@ summary: Learn what TiCDC is, what features TiCDC provides, and how to install a
 
 # TiCDC Overview
 
-[TiCDC](https://github.com/pingcap/tiflow/tree/release-8.5/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases.
+[TiCDC](https://github.com/pingcap/tiflow/tree/release-8.5/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases. For detailed data replication capabilities, see [TiCDC Data Replication Capabilities](/ticdc/ticdc-data-replication-capabilities.md).
 
 ## Usage scenarios
 


Reviews:
user: login: gemini-code-assist[bot]
body: Hello @ti-chi-bot, I'm Gemini Code Assist[^1]! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

## Summary of Changes
Hello team, gemini-code-assist here to provide a summary of this pull request. This PR, which is an automated cherry-pick, focuses on enhancing the TiCDC documentation. The primary goal is to add a new document specifically detailing the data replication capabilities of TiCDC. This new document covers how TiCDC works, the various downstream systems it supports, the scope of data changes it can replicate (both supported and unsupported), and known limitations. Additionally, the PR updates the table of contents and the TiCDC overview document to include links to this new capability guide.

### Highlights
* **New Documentation**: Adds a comprehensive new document (`ticdc/ticdc-data-replication-capabilities.md`) detailing TiCDC's data replication features.
* **Replication Capabilities Detailed**: The new document explains TiCDC's working mechanism, supported downstream systems (MySQL, Kafka, Cloud Storage, etc.), and the types of DDL/DML operations it handles.
* **Documentation Navigation Updates**: Updates the main table of contents (`TOC.md`) and the TiCDC overview page (`ticdc/ticdc-overview.md`) to link to the new capabilities document, improving discoverability.

### Changelog
* **TOC.md**
  * Added a new entry for 'TiCDC Data Replication Capabilities' under the 'TiCDC -> Reference' section (added at line 196).
* **ticdc/ticdc-data-replication-capabilities.md**
  * Added a completely new markdown file (lines 1-48) containing detailed documentation on:
  * - How TiCDC works (lines 10-16)
  * - Supported downstream systems (lines 18-27)
  * - Scope of data replication (supported/unsupported DDL/DML, index ops, foreign keys) (lines 29-43)
  * - Limitations (lines 45-48)
* **ticdc/ticdc-overview.md**
  * Modified the introductory paragraph (lines 8-12) to include a link to the newly added 'TiCDC Data Replication Capabilities' document.


<details>

<summary><b>Using Gemini Code Assist</b></summary>
<br>

The full guide for Gemini Code Assist can be found on our [documentation page](https://developers.google.com/gemini-code-assist/docs/review-github-code), here are some quick tips.

<b>Invoking Gemini</b>

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either `/gemini <command>` or `@gemini-code-assist <command>`. Below is a summary of the supported commands.

Feature | Command | Description
--- | --- | ---
Code Review | `/gemini review` | Performs a code review for the current pull request in its current state.
Pull Request Summary | `/gemini summary` | Provides a summary of the current pull request in its current state.
Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments.
Help | `/gemini help` | Displays a list of available commands.

<b>Customization</b>

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a `.gemini/` folder in the base of the repository. Detailed instructions can be found [here](https://developers.google.com/gemini-code-assist/docs/customize-gemini-behavior-github).

<b>Limitations & Feedback</b>

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with :thumbsup: and :thumbsdown: on @gemini-code-assist comments to provide feedback.

</details>

<b>You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the [Gemini Code Assist IDE Extension](https://cloud.google.com/products/gemini/code-assist).</b>


[^1]: Review the [Privacy Notices](https://policies.google.com/privacy), [Generative AI Prohibited Use Policy](https://policies.google.com/terms/generative-ai/use-policy), [Terms of Service](https://policies.google.com/terms), and learn how to configure Gemini Code Assist in GitHub [here](https://developers.google.com/gemini-code-assist/docs/review-github-code). Gemini can make mistakes, so double check it and [use code with caution](https://support.google.com/legal/answer/13505487).

state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T02:47:32Z
user: login: gemini-code-assist[bot]
body: ## Code Review
This pull request introduces a new document detailing TiCDC's data replication capabilities and updates the table of contents and overview page accordingly. The new documentation is informative and well-organized.

However, there's a **critical merge conflict** in `ticdc/ticdc-overview.md` that must be resolved before this PR can be merged. I've also included a few suggestions for the new markdown file to improve formatting and address minor issues.

### Summary of Findings
* **Merge Conflict**: A critical merge conflict exists in `ticdc/ticdc-overview.md` that must be resolved.
* **Markdown Formatting**: The new document `ticdc/ticdc-data-replication-capabilities.md` uses unconventional `+ ` prefixes for sections. Standard Markdown (bold text or subheadings with standard lists) should be used for better readability and consistency.
* **Minor Punctuation and EOF**: A missing space and a zero-width space were found in `ticdc/ticdc-data-replication-capabilities.md`. Also, a newline at the end of the file is recommended.

### Merge Readiness
This pull request cannot be merged in its current state due to a **critical merge conflict** in `ticdc/ticdc-overview.md`. Once this conflict is resolved, and the minor formatting suggestions for the new document are considered, the PR should be in good shape. I am unable to approve pull requests, so please ensure other reviewers approve the changes after the conflict is fixed.
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-23T02:48:54Z
user: login: lilin90
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-23T04:06:03Z
user: login: lilin90
body: /approve
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-23T04:07:03Z

Review comments:
diff_hunk: @@ -5,7 +5,11 @@ summary: Learn what TiCDC is, what features TiCDC provides, and how to install a
 
 # TiCDC Overview
 
+<<<<<<< HEAD
 [TiCDC](https://github.com/pingcap/tiflow/tree/release-8.5/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases.
+=======
+[TiCDC](https://github.com/pingcap/tiflow/tree/master/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases. For detailed data replication capabilities, see [TiCDC Data Replication Capabilities](/ticdc/ticdc-data-replication-capabilities.md).
+>>>>>>> 2ebdc6db76 (ticdc: add new doc for TiCDC data replication capabilities (#20967))
path: ticdc/ticdc-overview.md
user: login: gemini-code-assist[bot]
body: ![critical](https://img.shields.io/badge/priority-critical-red)

This file contains unresolved merge conflict markers (`<<<<<<< HEAD`, `=======`, `>>>>>>>`). This is a critical issue that needs to be resolved before merging. 

Please resolve the conflict. Based on the PR's intent, the version after `=======` which includes the link to the new documentation and updates the GitHub link to point to `master` seems to be the correct one for the `master` branch documentation.
created_at: 2025-05-23T02:48:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,48 @@
+---
+title: TiCDC Data Replication Capabilities
+summary: Learn the data replication capabilities of TiCDC.
+---
+
+# TiCDC Data Replication Capabilities
+
+[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) is a core component in the TiDB ecosystem for real-time data replication. This document provides a detailed explanation of TiCDC data replication capabilities.
+
+## How TiCDC works
+
+- TiCDC listens to TiKV change logs (Raft logs) and converts row-level data changes (`INSERT`, `UPDATE`, and `DELETE` operations) into downstream-compatible SQL statements. TiCDC does not rely on the original SQL statements executed on the upstream database. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC generates logical operations (such as `INSERT`, `UPDATE`, and `DELETE`) equivalent to SQL semantics, rather than restoring the original SQL statements executed on the upstream database one by one. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC ensures eventual consistency of transactions. With [redo log](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) enabled, TiCDC can guarantee eventual consistency in disaster recovery scenarios. With [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#enable-syncpoint) enabled, TiCDC supports consistent snapshot reads and data consistency validation.
+
+## Supported downstream systems
+
+TiCDC supports replicating data to various downstream systems, including the following:
+
+- [TiDB database or other MySQL-compatible databases](/ticdc/ticdc-sink-to-mysql.md)
+- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
+- [Message Queue (MQ)-type sinks](/ticdc/ticdc-changefeed-config.md#sink), such as [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
+- [Storage services (Amazon S3, GCS, Azure Blob Storage, and NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
+- [Snowflake, ksqlDB, SQL Server via Confluent Cloud integration](/ticdc/integrate-confluent-using-ticdc.md)
+- [Apache Flink for consuming Kafka-replicated data](/replicate-data-to-kafka.md)
+
+## Scope of data replication
+
+TiCDC supports the following types of upstream data changes:
+
++ **Supported:**
path: ticdc/ticdc-data-replication-capabilities.md
user: login: gemini-code-assist[bot]
body: ![medium](https://img.shields.io/badge/priority-medium-yellow)

The use of `+ ` for these sub-sections is a bit unconventional for Markdown. Consider using standard list items or bolded text for "Supported" and "Not supported" for better readability and consistency with common Markdown practices. [^1]

For example, you could use:

```markdown
**Supported:**

- DDL and DML statements...
- Index operations...
```

Or as subheadings:

```markdown
### Supported

- DDL and DML statements...
- Index operations...
```

Given the current structure, using bolded text followed by standard bullet points seems most appropriate.

#### Style Guide References
[^1]: Style guide suggests adding a blank line before and after lists. While not explicitly a list here, standard Markdown list/section formatting is preferred over `+`. [(link)](https://github.com/pingcap/docs/blob/master/.gemini/styleguide.md?plain=1#L38-L38)

```suggestion
**Supported:**
```
created_at: 2025-05-23T02:48:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,48 @@
+---
+title: TiCDC Data Replication Capabilities
+summary: Learn the data replication capabilities of TiCDC.
+---
+
+# TiCDC Data Replication Capabilities
+
+[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) is a core component in the TiDB ecosystem for real-time data replication. This document provides a detailed explanation of TiCDC data replication capabilities.
+
+## How TiCDC works
+
+- TiCDC listens to TiKV change logs (Raft logs) and converts row-level data changes (`INSERT`, `UPDATE`, and `DELETE` operations) into downstream-compatible SQL statements. TiCDC does not rely on the original SQL statements executed on the upstream database. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC generates logical operations (such as `INSERT`, `UPDATE`, and `DELETE`) equivalent to SQL semantics, rather than restoring the original SQL statements executed on the upstream database one by one. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC ensures eventual consistency of transactions. With [redo log](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) enabled, TiCDC can guarantee eventual consistency in disaster recovery scenarios. With [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#enable-syncpoint) enabled, TiCDC supports consistent snapshot reads and data consistency validation.
+
+## Supported downstream systems
+
+TiCDC supports replicating data to various downstream systems, including the following:
+
+- [TiDB database or other MySQL-compatible databases](/ticdc/ticdc-sink-to-mysql.md)
+- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
+- [Message Queue (MQ)-type sinks](/ticdc/ticdc-changefeed-config.md#sink), such as [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
+- [Storage services (Amazon S3, GCS, Azure Blob Storage, and NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
+- [Snowflake, ksqlDB, SQL Server via Confluent Cloud integration](/ticdc/integrate-confluent-using-ticdc.md)
+- [Apache Flink for consuming Kafka-replicated data](/replicate-data-to-kafka.md)
+
+## Scope of data replication
+
+TiCDC supports the following types of upstream data changes:
+
++ **Supported:**
+
+    - DDL and DML statements(excluding system tables).
+    - Index operations (`ADD INDEX`, `CREATE INDEX`): to reduce the impact on changefeed replication latency, if the downstream is TiDB, TiCDC [asynchronously executes the `ADD INDEX` and `CREATE INDEX` DDL operations](/ticdc/ticdc-ddl.md#asynchronous-execution-of-add-index-and-create-index-ddls).
+    - Foreign key constraint DDL statements (`ADD FOREIGN KEY`): TiCDC does **not** replicate upstream system variable settings. You need to manually configure [`foreign_key_checks`](/system-variables.md#foreign_key_checks) in the downstream to determine whether the downstream foreign key constraint check is enabled. TiCDC does **not** validate whether the data complies with foreign key constraints.
+
++ **Not supported**:
path: ticdc/ticdc-data-replication-capabilities.md
user: login: gemini-code-assist[bot]
body: ![medium](https://img.shields.io/badge/priority-medium-yellow)

Similar to the "Supported" section, using `+ ` here is unconventional. Consider using standard list items or bolded text. [^1]

Suggesting a change to bolded text followed by standard bullet points for consistency.

#### Style Guide References
[^1]: Style guide suggests adding a blank line before and after lists. Standard Markdown list/section formatting is preferred. [(link)](https://github.com/pingcap/docs/blob/master/.gemini/styleguide.md?plain=1#L38-L38)

```suggestion
**Not supported**:
```
created_at: 2025-05-23T02:48:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,48 @@
+---
+title: TiCDC Data Replication Capabilities
+summary: Learn the data replication capabilities of TiCDC.
+---
+
+# TiCDC Data Replication Capabilities
+
+[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) is a core component in the TiDB ecosystem for real-time data replication. This document provides a detailed explanation of TiCDC data replication capabilities.
+
+## How TiCDC works
+
+- TiCDC listens to TiKV change logs (Raft logs) and converts row-level data changes (`INSERT`, `UPDATE`, and `DELETE` operations) into downstream-compatible SQL statements. TiCDC does not rely on the original SQL statements executed on the upstream database. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC generates logical operations (such as `INSERT`, `UPDATE`, and `DELETE`) equivalent to SQL semantics, rather than restoring the original SQL statements executed on the upstream database one by one. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC ensures eventual consistency of transactions. With [redo log](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) enabled, TiCDC can guarantee eventual consistency in disaster recovery scenarios. With [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#enable-syncpoint) enabled, TiCDC supports consistent snapshot reads and data consistency validation.
+
+## Supported downstream systems
+
+TiCDC supports replicating data to various downstream systems, including the following:
+
+- [TiDB database or other MySQL-compatible databases](/ticdc/ticdc-sink-to-mysql.md)
+- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
+- [Message Queue (MQ)-type sinks](/ticdc/ticdc-changefeed-config.md#sink), such as [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
+- [Storage services (Amazon S3, GCS, Azure Blob Storage, and NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
+- [Snowflake, ksqlDB, SQL Server via Confluent Cloud integration](/ticdc/integrate-confluent-using-ticdc.md)
+- [Apache Flink for consuming Kafka-replicated data](/replicate-data-to-kafka.md)
+
+## Scope of data replication
+
+TiCDC supports the following types of upstream data changes:
+
++ **Supported:**
+
+    - DDL and DML statements(excluding system tables).
path: ticdc/ticdc-data-replication-capabilities.md
user: login: gemini-code-assist[bot]
body: ![low](https://img.shields.io/badge/priority-low-green)

There's a missing space between "statements" and "(excluding system tables)". Adding a space would improve readability. [^1]

#### Style Guide References
[^1]: Style guide emphasizes correct punctuation. A missing space affects readability. [(link)](https://github.com/pingcap/docs/blob/master/.gemini/styleguide.md?plain=1#L20-L20)

```suggestion
    - DDL and DML statements (excluding system tables).
```
created_at: 2025-05-23T02:48:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,48 @@
+---
+title: TiCDC Data Replication Capabilities
+summary: Learn the data replication capabilities of TiCDC.
+---
+
+# TiCDC Data Replication Capabilities
+
+[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) is a core component in the TiDB ecosystem for real-time data replication. This document provides a detailed explanation of TiCDC data replication capabilities.
+
+## How TiCDC works
+
+- TiCDC listens to TiKV change logs (Raft logs) and converts row-level data changes (`INSERT`, `UPDATE`, and `DELETE` operations) into downstream-compatible SQL statements. TiCDC does not rely on the original SQL statements executed on the upstream database. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC generates logical operations (such as `INSERT`, `UPDATE`, and `DELETE`) equivalent to SQL semantics, rather than restoring the original SQL statements executed on the upstream database one by one. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC ensures eventual consistency of transactions. With [redo log](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) enabled, TiCDC can guarantee eventual consistency in disaster recovery scenarios. With [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#enable-syncpoint) enabled, TiCDC supports consistent snapshot reads and data consistency validation.
+
+## Supported downstream systems
+
+TiCDC supports replicating data to various downstream systems, including the following:
+
+- [TiDB database or other MySQL-compatible databases](/ticdc/ticdc-sink-to-mysql.md)
+- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
+- [Message Queue (MQ)-type sinks](/ticdc/ticdc-changefeed-config.md#sink), such as [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
+- [Storage services (Amazon S3, GCS, Azure Blob Storage, and NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
+- [Snowflake, ksqlDB, SQL Server via Confluent Cloud integration](/ticdc/integrate-confluent-using-ticdc.md)
+- [Apache Flink for consuming Kafka-replicated data](/replicate-data-to-kafka.md)
+
+## Scope of data replication
+
+TiCDC supports the following types of upstream data changes:
+
++ **Supported:**
+
+    - DDL and DML statements(excluding system tables).
+    - Index operations (`ADD INDEX`, `CREATE INDEX`): to reduce the impact on changefeed replication latency, if the downstream is TiDB, TiCDC [asynchronously executes the `ADD INDEX` and `CREATE INDEX` DDL operations](/ticdc/ticdc-ddl.md#asynchronous-execution-of-add-index-and-create-index-ddls).
+    - Foreign key constraint DDL statements (`ADD FOREIGN KEY`): TiCDC does **not** replicate upstream system variable settings. You need to manually configure [`foreign_key_checks`](/system-variables.md#foreign_key_checks) in the downstream to determine whether the downstream foreign key constraint check is enabled. TiCDC does **not** validate whether the data complies with foreign key constraints.
+
++ **Not supported**:
+
+    - DDL and DML statements executed in upstream system tables (including `mysql.*` and `information_schema.*`).
+    - DDL and DML statements executed in upstream temporary tables.
+    - DQL (Data Query Language) and DCL (Data Control Language) statements.
+
+## Limitations​
path: ticdc/ticdc-data-replication-capabilities.md
user: login: gemini-code-assist[bot]
body: ![low](https://img.shields.io/badge/priority-low-green)

The heading "Limitations​" contains a zero-width space (U+200B) character at the end. This character is invisible but can cause issues with some tools or search functionality. It should be removed. [^1]

#### Style Guide References
[^1]: Ensuring correct punctuation and avoiding non-standard characters improves document quality. [(link)](https://github.com/pingcap/docs/blob/master/.gemini/styleguide.md?plain=1#L20-L20)

```suggestion
## Limitations
```
created_at: 2025-05-23T02:48:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,48 @@
+---
+title: TiCDC Data Replication Capabilities
+summary: Learn the data replication capabilities of TiCDC.
+---
+
+# TiCDC Data Replication Capabilities
+
+[TiCDC](/ticdc/ticdc-overview.md) (TiDB Change Data Capture) is a core component in the TiDB ecosystem for real-time data replication. This document provides a detailed explanation of TiCDC data replication capabilities.
+
+## How TiCDC works
+
+- TiCDC listens to TiKV change logs (Raft logs) and converts row-level data changes (`INSERT`, `UPDATE`, and `DELETE` operations) into downstream-compatible SQL statements. TiCDC does not rely on the original SQL statements executed on the upstream database. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC generates logical operations (such as `INSERT`, `UPDATE`, and `DELETE`) equivalent to SQL semantics, rather than restoring the original SQL statements executed on the upstream database one by one. For details, see [how TiCDC processes data changes](/ticdc/ticdc-overview.md#implementation-of-processing-data-changes).
+
+- TiCDC ensures eventual consistency of transactions. With [redo log](/ticdc/ticdc-sink-to-mysql.md#eventually-consistent-replication-in-disaster-scenarios) enabled, TiCDC can guarantee eventual consistency in disaster recovery scenarios. With [Syncpoint](/ticdc/ticdc-upstream-downstream-check.md#enable-syncpoint) enabled, TiCDC supports consistent snapshot reads and data consistency validation.
+
+## Supported downstream systems
+
+TiCDC supports replicating data to various downstream systems, including the following:
+
+- [TiDB database or other MySQL-compatible databases](/ticdc/ticdc-sink-to-mysql.md)
+- [Apache Kafka](/ticdc/ticdc-sink-to-kafka.md)
+- [Message Queue (MQ)-type sinks](/ticdc/ticdc-changefeed-config.md#sink), such as [Pulsar](/ticdc/ticdc-sink-to-pulsar.md)
+- [Storage services (Amazon S3, GCS, Azure Blob Storage, and NFS)](/ticdc/ticdc-sink-to-cloud-storage.md)
+- [Snowflake, ksqlDB, SQL Server via Confluent Cloud integration](/ticdc/integrate-confluent-using-ticdc.md)
+- [Apache Flink for consuming Kafka-replicated data](/replicate-data-to-kafka.md)
+
+## Scope of data replication
+
+TiCDC supports the following types of upstream data changes:
+
++ **Supported:**
+
+    - DDL and DML statements(excluding system tables).
+    - Index operations (`ADD INDEX`, `CREATE INDEX`): to reduce the impact on changefeed replication latency, if the downstream is TiDB, TiCDC [asynchronously executes the `ADD INDEX` and `CREATE INDEX` DDL operations](/ticdc/ticdc-ddl.md#asynchronous-execution-of-add-index-and-create-index-ddls).
+    - Foreign key constraint DDL statements (`ADD FOREIGN KEY`): TiCDC does **not** replicate upstream system variable settings. You need to manually configure [`foreign_key_checks`](/system-variables.md#foreign_key_checks) in the downstream to determine whether the downstream foreign key constraint check is enabled. TiCDC does **not** validate whether the data complies with foreign key constraints.
+
++ **Not supported**:
+
+    - DDL and DML statements executed in upstream system tables (including `mysql.*` and `information_schema.*`).
+    - DDL and DML statements executed in upstream temporary tables.
+    - DQL (Data Query Language) and DCL (Data Control Language) statements.
+
+## Limitations​
+
+- TiCDC does not support certain scenarios. For details, see [unsupported scenarios](/ticdc/ticdc-overview.md#unsupported-scenarios).
+- TiCDC only verifies the integrity of upstream data changes. It does not validate whether the changes conform to upstream or downstream constraints. If the data violates downstream constraints, TiCDC will return an error when writing to the downstream. For example, TiCDC does **not** perform any foreign key validation.
path: ticdc/ticdc-data-replication-capabilities.md
user: login: gemini-code-assist[bot]
body: ![low](https://img.shields.io/badge/priority-low-green)

It's good practice to end Markdown files with a newline character. This can prevent issues with some tools and is a common convention. [^1]

#### Style Guide References
[^1]: While not explicitly about EOF newlines, general good Markdown practice includes a final newline for better compatibility and processing by various tools. [(link)](https://github.com/pingcap/docs/blob/master/.gemini/styleguide.md?plain=1#L38-L40)

```suggestion
- TiCDC only verifies the integrity of upstream data changes. It does not validate whether the changes conform to upstream or downstream constraints. If the data violates downstream constraints, TiCDC will return an error when writing to the downstream. For example, TiCDC does **not** perform any foreign key validation.

```
created_at: 2025-05-23T02:48:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -5,7 +5,11 @@ summary: Learn what TiCDC is, what features TiCDC provides, and how to install a
 
 # TiCDC Overview
 
+<<<<<<< HEAD
 [TiCDC](https://github.com/pingcap/tiflow/tree/release-8.5/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases.
+=======
+[TiCDC](https://github.com/pingcap/tiflow/tree/master/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases. For detailed data replication capabilities, see [TiCDC Data Replication Capabilities](/ticdc/ticdc-data-replication-capabilities.md).
+>>>>>>> 2ebdc6db76 (ticdc: add new doc for TiCDC data replication capabilities (#20967))
path: ticdc/ticdc-overview.md
user: login: lilin90
body: ```suggestion
[TiCDC](https://github.com/pingcap/tiflow/tree/release-8.5/cdc) is a tool used to replicate incremental data from TiDB. Specifically, TiCDC pulls TiKV change logs, sorts captured data, and exports row-based incremental data to downstream databases. For detailed data replication capabilities, see [TiCDC Data Replication Capabilities](/ticdc/ticdc-data-replication-capabilities.md).
```
created_at: 2025-05-23T04:05:59Z
author_association: MEMBER

PR comments:
user: login: ti-chi-bot
created_at: 2025-05-23T02:47:16Z
body: @hongyunyan This PR has conflicts, I have hold it.
Please resolve them or ask others to resolve them, then comment `/unhold` to remove the hold label.
author_association: MEMBER
user: login: ti-chi-bot[bot]
created_at: 2025-05-23T02:48:57Z
body: @gemini-code-assist[bot]: adding LGTM is restricted to approvers and reviewers in OWNERS files.

<details>

In response to [this](https://github.com/pingcap/docs/pull/21019#pullrequestreview-2863011212):

>## Code Review
>This pull request introduces a new document detailing TiCDC's data replication capabilities and updates the table of contents and overview page accordingly. The new documentation is informative and well-organized.
>
>However, there's a **critical merge conflict** in `ticdc/ticdc-overview.md` that must be resolved before this PR can be merged. I've also included a few suggestions for the new markdown file to improve formatting and address minor issues.
>
>### Summary of Findings
>* **Merge Conflict**: A critical merge conflict exists in `ticdc/ticdc-overview.md` that must be resolved.
>* **Markdown Formatting**: The new document `ticdc/ticdc-data-replication-capabilities.md` uses unconventional `+ ` prefixes for sections. Standard Markdown (bold text or subheadings with standard lists) should be used for better readability and consistency.
>* **Minor Punctuation and EOF**: A missing space and a zero-width space were found in `ticdc/ticdc-data-replication-capabilities.md`. Also, a newline at the end of the file is recommended.
>
>### Merge Readiness
>This pull request cannot be merged in its current state due to a **critical merge conflict** in `ticdc/ticdc-overview.md`. Once this conflict is resolved, and the minor formatting suggestions for the new document are considered, the PR should be in good shape. I am unable to approve pull requests, so please ensure other reviewers approve the changes after the conflict is fixed.


Instructions for interacting with me using PR comments are available [here](https://git.k8s.io/community/contributors/guide/pull-requests.md).  If you have questions or suggestions related to my behavior, please file an issue against the [kubernetes-sigs/prow](https://github.com/kubernetes-sigs/prow/issues/new?title=Prow%20issue:) repository.
</details>
author_association: NONE
user: login: ti-chi-bot[bot]
created_at: 2025-05-23T04:07:07Z
body: [APPROVALNOTIFIER] This PR is **APPROVED**

This pull-request has been approved by: *<a href="https://github.com/pingcap/docs/pull/21019#pullrequestreview-2863088735" title="Approved">lilin90</a>*

The full list of commands accepted by this bot can be found [here](https://prow.tidb.net/command-help?repo=pingcap%2Fdocs).

The pull request process is described [here](https://book.prow.tidb.net/#/workflows/pr)

<details >
Needs approval from an approver in each of these files:

- ~~[OWNERS](https://github.com/pingcap/docs/blob/release-8.5/OWNERS)~~ [lilin90]

Approvers can indicate their approval by writing `/approve` in a comment
Approvers can cancel approval by writing `/approve cancel` in a comment
</details>
<!-- META={"approvers":[]} -->
author_association: NONE
user: login: ti-chi-bot
created_at: 2025-05-23T06:15:29Z
body: In response to a cherrypick label: new pull request created to branch `master`: #21024.
But this PR has conflicts, please resolve them!
author_association: MEMBER