# [KB]关于TiCDC 数据不同步，报错 etcdserver  request is too large的问题

## Description

需要使用 TiCDC 实现数据同步的表的数量为 10k+，使用 v5.1.1 版本的 TiCDC 同步数据到下游 MySQL ，但是数据同步卡住。

```yaml
tiup ctl:v5.1.1 cdc changefeed list --pd=http://xxx.xxx.xxx.xxx:2407
Starting component `ctl`: /home/tidb/.tiup/components/ctl/v5.1.1/ctl cdc changefeed list --pd=http://xxx.xxx.xxx.xxx:2407
[
{
"id": "bw-data",
"summary":
{ "state": "normal", "tso": 426808378119684102, "checkpoint": "2021-08-05 14:25:52.959", "error": null }
}
]
```

在 CDC 的日志中出现如下信息：

```golang

[2021/08/06 14:05:49.290 +08:00] [INFO] [capture.go:242] ["run owner exited"] [error="etcdserver: request is too large"] [errorVerbose="etcdserver: request is too large\ngithub.com/pingcap/errors.AddStack\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/errors.go:174\ngithub.com/pingcap/errors.Trace\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/juju_adaptor.go:15\ngithub.com/pingcap/ticdc/pkg/orchestrator.(*EtcdWorker).applyPatches\n\tgithub.com/pingcap/ticdc/pkg/orchestrator/etcd_worker.go:282\ngithub.com/pingcap/ticdc/pkg/orchestrator.(*EtcdWorker).applyPatchGroups\n\tgithub.com/pingcap/ticdc/pkg/orchestrator/etcd_worker.go:235\ngithub.com/pingcap/ticdc/pkg/orchestrator.(*EtcdWorker).Run\n\tgithub.com/pingcap/ticdc/pkg/orchestrator/etcd_worker.go:146\ngithub.com/pingcap/ticdc/cdc/capture.(*Capture).runEtcdWorker\n\tgithub.com/pingcap/ticdc/cdc/capture/capture.go:261\ngithub.com/pingcap/ticdc/cdc/capture.(*Capture).campaignOwner\n\tgithub.com/pingcap/ticdc/cdc/capture/capture.go:240\ngithub.com/pingcap/ticdc/cdc/capture.(*Capture).run.func2\n\tgithub.com/pingcap/ticdc/cdc/capture/capture.go:169\nruntime.goexit\n\truntime/asm_amd64.s:1371"]
[2021/08/06 14:05:49.291 +08:00] [INFO] [capture.go:170] ["the owner routine has exited"] [error="etcdserver: request is too large"] [errorVerbose="etcdserver: request is too large\ngithub.com/pingcap/errors.AddStack\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/errors.go:174\ngithub.com/pingcap/errors.Trace\n\tgithub.com/pingcap/errors@v0.11.5-0.20201126102027-b0a155152ca3/juju_adaptor.go:15\ngithub.com/pingcap/ticdc/pkg/orchestrator.(*EtcdWorker).applyPatches\n\tgithub.com/pingcap/ticdc/pkg/orchestrator/etcd_worker.go:282\ngithub.com/pingcap/ticdc/pkg/orchestrator.(*EtcdWorker).applyPatchGroups\n\tgithub.com/pingcap/ticdc/pkg/orchestrator/etcd_worker.go:235\ngithub.com/pingcap/ticdc/pkg/orchestrator.(*EtcdWorker).Run\n\tgithub.com/pingcap/ticdc/pkg/orchestrator/etcd_worker.go:146\ngithub.com/pingcap/ticdc/cdc/capture.(*Capture).runEtcdWorker\n\tgithub.com/pingcap/ticdc/cdc/capture/capture.go:261\ngithub.com/pingcap/ticdc/cdc/capture.(*Capture).campaignOwner\n\tgithub.com/pingcap/ticdc/cdc/capture/capture.go:240\ngithub.com/pingcap/ticdc/cdc/capture.(*Capture).run.func2\n\tgithub.com/  pingcap/ticdc/cdc/capture/capture.go:169\nruntime.goexit\n\truntime/asm_amd64.s:1371"]

```

## Root Cause

目前 TiCDC 集群无法支撑超过 10k+ 的表数量进行数据同步，即使拆分 changefeed，也无法支撑数据增量同步。

github issue：[https://github.com/pingcap/ticdc/issues/2083](https://github.com/pingcap/ticdc/issues/2083)

## Diagnostic Steps

查看 TiCDC 的 log，是否出现 etcdserver: request is too large 报错。
确认 changefeed 同步的 schema 下的 table 数量是否超过 10k+。

## Resolution

升级至 v5.4.0 及以后版本。

## Workaround

1. 减少通过 TiCDC 集群同步的表的数量

2. 使用 TiDB-Binlog 同步数据到 MySQL，需要注意 TiDB-Binlog 新特性的兼容性问题：

3. 在 v5.0 版本中，聚簇索引不支持与 TiDB Binlog 一起使用。开启 TiDB Binlog 后，TiDB 只允许创建单个整数列作为主键的聚簇索引；已创建的聚簇索引表的数据插入、删除和更新动作不会通过 TiDB Binlog 同步到下游。如需同步聚簇索引表，请升级至 v5.1 版本。

## Affect Version(optional)

v5.1.1