如何在TIDB中设置CDC
要在 TiDB 中启用 CDC,需要按照以下步骤进行操作:
- 在 TiDB 集群中启用 CDC 功能
要启用 CDC 功能,需要在 TiDB 集群中的 TiKV 节点上添加以下配置:
[cdc]
enable = true
可以通过以下命令检查 TiKV 节点上是否已经添加了该配置:
$ pd-ctl config show | grep enable-cdc
enable-cdc: true
- 创建 CDC 集群表
CDC 需要订阅一个或多个表,因此需要在 TiDB 中创建 CDC 集群表。CDC 集群表是一个系统表,用于记录 CDC 订阅的表名、订阅的起始位置等信息。
可以通过以下命令创建 CDC 集群表:
CREATE TABLE `tidb_cdc`.`cdc_cluster`
(
`capture_id` int(11) NOT NULL COMMENT 'capture id',
`changefeed_id` varchar(64) NOT NULL COMMENT 'changefeed id',
`create_time` bigint(20) NOT NULL COMMENT 'create time',
`start_ts` bigint(20) NOT NULL COMMENT 'start ts',
`finish_ts` bigint(20) NOT NULL COMMENT 'finish ts',
`checkpoint_ts` bigint(20) NOT NULL COMMENT 'checkpoint ts',
`admin_job_type` tinyint(4) NOT NULL COMMENT 'admin job type',
`admin_job_id` bigint(20) NOT NULL COMMENT 'admin job id',
PRIMARY KEY (`capture_id`, `changefeed_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
- 创建 CDC 订阅表
在 TiDB 中创建一个或多个 CDC 订阅表,用于订阅需要进行 CDC 的表。可以通过以下命令创建 CDC 订阅表:
CREATE TABLE `test`.`test_cdc`
(
`id` bigint(20) NOT NULL,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
- 创建 CDC 订阅任务
在 TiDB 中创建 CDC 订阅任务,用于订阅指定的表。可以通过以下命令创建 CDC 订阅任务:
CREATE CHANGEFEED `test_cdc_changefeed`
WITH 'sink-uri'='blackhole://',
'cyclic-replication'='on',
'config'='{"case-sensitive":true,"enable-old-value":true}'
FOR TABLE `test`.`test_cdc`;
在上述命令中,sink-uri 用于设置 CDC 订阅任务的数据输出位置,cyclic-replication 用于设置是否启用循环复制,config 用于设置 CDC 订阅任务的配置信息。
- 启动 CDC 订阅任务
要启动 CDC 订阅任务,需要在 TiDB 集群中的 TiCDC 节点上运行以下命令:
./ticdc --addr=":8300" --pd="http://pd_address:2379"
在上述命令中,--addr 用于设置 TiCDC 节点的监听地址,--pd 用于设置 TiCDC 节点连接的 PD 地址。
- 检查 CDC 订阅任务状态
要检查 CDC 订阅任务的状态,可以通过以下命令在 TiDB 集群中的 TiCDC 节点上查询:
./ticdc changefeed list --pd="http://pd_address:2379"
在上述命令中,--pd 用于设置 TiCDC 节点连接的 PD 地址。
以上就是在 TiDB 中设置 CDC 的步骤。
原文地址: https://www.cveoy.top/t/topic/rBU 著作权归作者所有。请勿转载和采集!