From 068d8ad85446b2a6c4fc2711a3d9cd9f7b8aef53 Mon Sep 17 00:00:00 2001 From: Neil Shen Date: Fri, 28 May 2021 13:53:35 +0800 Subject: [PATCH] ticdc: add more docs about unified sorter (#6258) --- ticdc/deploy-ticdc.md | 3 +++ ticdc/manage-ticdc.md | 29 +++++++++++++++++++++-------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ticdc/deploy-ticdc.md b/ticdc/deploy-ticdc.md index 472bced992be..1705ae1e2d79 100644 --- a/ticdc/deploy-ticdc.md +++ b/ticdc/deploy-ticdc.md @@ -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 小时。 @@ -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` 路径下可读写数据。 diff --git a/ticdc/manage-ticdc.md b/ticdc/manage-ticdc.md index 99e128ef4c0d..68d7325a0ddc 100644 --- a/ticdc/manage-ticdc.md +++ b/ticdc/manage-ticdc.md @@ -76,13 +76,13 @@ tiup cluster upgrade v4.0.6 {{< copyable "shell-regular" >}} ```shell -cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="simple-replication-task" +cdc cli changefeed create --pd=http://10.0.10.25:2379 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --changefeed-id="simple-replication-task" --sort-engine="unified" ``` ```shell Create changefeed successfully! ID: simple-replication-task -Info: {"sink-uri":"mysql://root:123456@127.0.0.1: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:123456@127.0.0.1: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。 @@ -98,13 +98,13 @@ Info: {"sink-uri":"mysql://root:123456@127.0.0.1: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` @@ -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, @@ -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`。 @@ -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如何处理)回答中提供的方法。