Skip to content

Commit

Permalink
ticdc: add more docs about unified sorter (#6258)
Browse files Browse the repository at this point in the history
  • Loading branch information
overvenus authored May 28, 2021
1 parent 95f247a commit 068d8ad
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 8 deletions.
3 changes: 3 additions & 0 deletions ticdc/deploy-ticdc.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ cdc server --pd=http://10.0.10.25:2379 --log-file=ticdc_2.log --addr=0.0.0.0:830
cdc server --pd=http://10.0.10.25:2379 --log-file=ticdc_3.log --addr=0.0.0.0:8303 --advertise-addr=127.0.0.1:8303
```

## TiCDC `cdc server` 命令行参数说明

对于 `cdc server` 命令中可用选项解释如下:

- `gc-ttl`:TiCDC 在 PD 设置的服务级别 GC safepoint 的 TTL (Time To Live) 时长,单位为秒,默认值为 `86400`,即 24 小时。
Expand All @@ -59,3 +61,4 @@ cdc server --pd=http://10.0.10.25:2379 --log-file=ticdc_3.log --addr=0.0.0.0:830
- `cert`:TiCDC 使用的证书文件路径,PEM 格式,可选。
- `key`:TiCDC 使用的证书密钥文件路径,PEM 格式,可选。
- `config`:可选项,表示 TiCDC 使用的配置文件地址。TiCDC 从 v5.0.0 开始支持该选项,TiUP 从 v1.4.0 开始支持在部署 TiCDC 时使用该配置。
- `sort-dir`:指定排序引擎使用的临时文件目录。该配置项的默认值为 `/tmp/cdc_sort`。在开启 Unified Sorter 的情况下,如果服务器的该目录不可写或可用空间不足,请手动指定 `sort-dir`。需确保 TiCDC 在该 `sort-dir` 路径下可读写数据。
29 changes: 21 additions & 8 deletions ticdc/manage-ticdc.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,13 @@ tiup cluster upgrade <cluster-name> v4.0.6
{{< copyable "shell-regular" >}}

```shell
cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri="mysql://root:[email protected]:3306/" --changefeed-id="simple-replication-task"
cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri="mysql://root:[email protected]:3306/" --changefeed-id="simple-replication-task" --sort-engine="unified"
```

```shell
Create changefeed successfully!
ID: simple-replication-task
Info: {"sink-uri":"mysql://root:[email protected]:3306/","opts":{},"create-time":"2020-03-12T22:04:08.103600025+08:00","start-ts":415241823337054209,"target-ts":0,"admin-job-type":0,"sort-engine":"memory","sort-dir":".","config":{"case-sensitive":true,"filter":{"rules":["*.*"],"ignore-txn-start-ts":null,"ddl-allow-list":null},"mounter":{"worker-num":16},"sink":{"dispatchers":null,"protocol":"default"},"cyclic-replication":{"enable":false,"replica-id":0,"filter-replica-ids":null,"id-buckets":0,"sync-ddl":false},"scheduler":{"type":"table-number","polling-time":-1}},"state":"normal","history":null,"error":null}
Info: {"sink-uri":"mysql://root:[email protected]:3306/","opts":{},"create-time":"2020-03-12T22:04:08.103600025+08:00","start-ts":415241823337054209,"target-ts":0,"admin-job-type":0,"sort-engine":"unified","sort-dir":".","config":{"case-sensitive":true,"filter":{"rules":["*.*"],"ignore-txn-start-ts":null,"ddl-allow-list":null},"mounter":{"worker-num":16},"sink":{"dispatchers":null,"protocol":"default"},"cyclic-replication":{"enable":false,"replica-id":0,"filter-replica-ids":null,"id-buckets":0,"sync-ddl":false},"scheduler":{"type":"table-number","polling-time":-1}},"state":"normal","history":null,"error":null}
```

- `--changefeed-id`:同步任务的 ID,格式需要符合正则表达式 `^[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*$`。如果不指定该 ID,TiCDC 会自动生成一个 UUID(version 4 格式)作为 ID。
Expand All @@ -98,13 +98,13 @@ Info: {"sink-uri":"mysql://root:[email protected]:3306/","opts":{},"create-time":

- `--start-ts`:指定 changefeed 的开始 TSO。TiCDC 集群将从这个 TSO 开始拉取数据。默认为当前时间。
- `--target-ts`:指定 changefeed 的目标 TSO。TiCDC 集群拉取数据直到这个 TSO 停止。默认为空,即 TiCDC 不会自动停止。
- `--sort-engine`:指定 changefeed 使用的排序引擎。因 TiDB 和 TiKV 使用分布式架构,TiCDC 需要对数据变更记录进行排序后才能输出。该项支持 `memory`/`unified`/`file`(默认为 `unified`
- `--sort-engine`:指定 changefeed 使用的排序引擎。因 TiDB 和 TiKV 使用分布式架构,TiCDC 需要对数据变更记录进行排序后才能输出。该项支持 `unified`(默认)/`memory`/`file`

- `memory`:在内存中进行排序。
- `unified`:优先使用内存排序,内存不足时则自动使用硬盘暂存数据。该选项默认开启。
- `memory`:在内存中进行排序。 **不建议使用,同步大量数据时易引发 OOM。**
- `file`:完全使用磁盘暂存数据。**已经弃用,不建议在任何情况使用。**

- `--sort-dir`: 指定排序引擎使用的临时文件目录。**不建议在 `cdc cli changefeed create` 中使用该选项**,建议在 `cdc server` 命令中使用该选项来设置临时文件目录。该配置项的默认值为 `/tmp/cdc_sort`。在开启 Unified Sorter 的情况下,如果服务器的该目录不可写或可用空间不足,请手动指定 `sort-dir`。如果 `sort-dir` 对应的目录不可写入,changefeed 将会自动停止。
- `--sort-dir`: 指定排序引擎使用的临时文件目录。**不建议在 `cdc cli changefeed create` 中使用该选项**,建议在 [`cdc server` 命令中使用该选项来设置临时文件目录](/ticdc/deploy-ticdc.md#ticdc-cdc-server-命令行参数说明)。该配置项的默认值为 `/tmp/cdc_sort`。在开启 Unified Sorter 的情况下,如果服务器的该目录不可写或可用空间不足,请手动指定 `sort-dir`。如果 `sort-dir` 对应的目录不可写入,changefeed 将会自动停止。
- `--config`:指定 changefeed 配置文件。

#### Sink URI 配置 `mysql`/`tidb`
Expand Down Expand Up @@ -299,7 +299,7 @@ cdc cli changefeed query --pd=http://10.0.10.25:2379 --changefeed-id=simple-repl
"start-ts": 419036036249681921,
"target-ts": 0,
"admin-job-type": 0,
"sort-engine": "memory",
"sort-engine": "unified",
"sort-dir": ".",
"config": {
"case-sensitive": true,
Expand Down Expand Up @@ -742,7 +742,7 @@ sync-ddl = true
2. 开启环形同步的数据表名字需要符合正则表达式 `^[a-zA-Z0-9_]+$`
3. 在创建环形同步任务前,开启环形复制的数据表必须已创建完毕。
4. 开启环形复制后,不能创建一个会被环形同步任务同步的表。
5. 在多集群同时写入时,为了避免业务出错,请避免执行 DDL 语句,比如 `ADD COLUMN`/`DROP COLUMN` 等。
5. 在多集群同时写入时,为了避免业务出错,请避免执行 DDL 语句,比如 `ADD COLUMN`/`DROP COLUMN` 等。
6. 如果想在线执行 DDL 语句,需要确保满足以下条件:
+ 业务兼容 DDL 语句执行前后的表结构。
+ 多个集群的 TiCDC 组件构成一个单向 DDL 同步链,不能成环。例如以上在 TiDB 集群 A,B 和 C 上创建环形同步任务的示例中,只有 C 集群的 TiCDC 组件关闭了 `sync-ddl`
Expand Down Expand Up @@ -783,13 +783,26 @@ force-replicate = true

## Unified Sorter 功能

Unified Sorter 是 TiCDC 中的排序引擎功能,目前默认开启,用于缓解以下场景造成的内存溢出问题:
Unified Sorter 是 TiCDC 中的排序引擎功能,用于缓解以下场景造成的内存溢出问题:

+ 如果 TiCDC 数据订阅任务的暂停中断时间长,其间积累了大量的增量更新数据需要同步。
+ 从较早的时间点启动数据订阅任务,业务写入量大,积累了大量的更新数据需要同步。

对 v4.0.13 版本之后的 `cdc cli` 创建的 changefeed,默认开启 Unified Sorter。对 v4.0.13 版本前已经存在的 changefeed,则使用之前的配置。

要确定一个 changefeed 上是否开启了 Unified Sorter 功能,可执行以下示例命令查看(假设 PD 实例的 IP 地址为 `http://10.0.10.25:2379`):

{{< copyable "shell-regular" >}}

```shell
cdc cli --pd="http://10.0.10.25:2379" changefeed query --changefeed-id=simple-replication-task | grep 'sort-engine'
```

以上命令的返回结果中,如果 `sort-engine` 的值为 "unified",则说明 Unified Sorter 已在该 changefeed 上开启。

> **注意:**
>
> + 如果服务器使用机械硬盘或其他有延迟或吞吐有瓶颈的存储设备,请谨慎开启 Unified Sorter。
> + 请保证硬盘的空闲容量大于等于 128G。如果需要同步大量历史数据,请确保每个节点的空闲容量大于等于要追赶的同步数据。
> + Unified Sorter 默认开启,如果您的服务器不符合以上条件,并希望关闭 Unified Sorter,请手动将 changefeed 的 `sort-engine` 设为 `memory`
> + 如需在已有的 changefeed 上开启 Unified Sorter,参见[同步任务中断,尝试再次启动后 TiCDC 发生 OOM,如何处理](/ticdc/troubleshoot-ticdc.md#同步任务中断尝试再次启动后-ticdc-发生-oom如何处理)回答中提供的方法。

0 comments on commit 068d8ad

Please sign in to comment.