Skip to content

Latest commit

 

History

History
70 lines (44 loc) · 2.77 KB

README_TiCDC.md

File metadata and controls

70 lines (44 loc) · 2.77 KB

TiCDC

TiCDC is TiDB's change data capture framework. It replicates change data to various downstream systems, such as MySQL protocol-compatible databases and Kafka.

Architecture

architecture

See a detailed introduction to the TiCDC architecture.

Documentation

Blog

Build

To check the source code, run test cases and build binaries, you can simply run:

$ make cdc
$ make test

Note that TiCDC supports building with the Go version Go >= 1.21.

When TiCDC is built successfully, you can find binary in the bin directory. Instructions for unit test and integration test can be found in Running tests.

Deploy

You can set up a CDC cluster for replication test manually as following:

  1. Set up a TiDB cluster.
  2. Start a CDC cluster, which contains one or more CDC servers. The command to start on CDC server is cdc server --pd http://10.0.10.25:2379, where http://10.0.10.25:2379 is the client-url of pd-server.
  3. Start a replication changefeed by cdc cli changefeed create --pd http://10.0.10.25:2379 --start-ts 413105904441098240 --sink-uri mysql://root:[email protected]:3306/. The TSO is TiDB timestamp oracle. If it is not provided or set to zero, the TSO of start time will be used. Currently, TiCDC supports MySQL protocol-compatible databases as downstream sinks only, and we will add more sink types in the future.

For details, see Deploy TiCDC.

Quick start

# Start TiDB cluster
$ docker-compose -f ./deployments/ticdc/docker-compose/docker-compose-mysql.yml up -d

# Attach to control container to run TiCDC
$ docker exec -it ticdc_controller sh

# Start to feed the changes on the upstream tidb, and sink to the downstream tidb
$ ./cdc cli changefeed create --pd http://upstream-pd:2379 --sink-uri mysql://root@downstream-tidb:4000/

# Exit the control container
$ exit

# Load data to the upstream tidb
$ sysbench --mysql-host=127.0.0.1 --mysql-user=root --mysql-port=4000 --mysql-db=test oltp_insert --tables=1 --table-size=100000 prepare

# Check sync progress
$ mysql -h 127.0.0.1 -P 5000 -u root -e "SELECT COUNT(*) FROM test.sbtest1"

Contributing

We welcome and greatly appreciate contributions. See CONTRIBUTING.md for details on submitting patches and the contribution workflow.