文件菜单

TICDC概述

注意:

TICDC是v4.0.6以来一般可用性(GA)的功能。您可以在生产环境中使用它。

Ticdc.是一种复制TIDB增量数据的工具。该工具是通过拉动TIKV更改日志来实现的。它可以将数据恢复到任何上游TSO的一致状态,并提供TiCDC开放协议支持其他系统订阅数据更改。

TiCDC架构

当TICDC正在运行时,它是一个无状态节点,可通过PD中的etcd实现高可用性。TICDC群集支持创建多个复制任务以将数据复制到多个不同的下游平台。

TiCDC的架构如下图所示:

TiCDC架构

系统角色

  • TiKV CDC组件:只输出key-value (KV)变更日志。

    • 组装内部逻辑中的kv更改日志。
    • 提供KV变更日志输出接口。发送的数据包括实时更改日志和增量扫描更改日志。
  • 捕获: TiCDC的运行流程。多个捕获s表格复制kV更改日志的TICDC集群。

    • 每个捕获拉动kV更改日志的一部分。
    • 对拉出的KV变化日志进行排序。
    • 将事务恢复到下游或根据TICDC开放协议输出日志。

复制特征

介绍TiCDC的复制特性。

水槽的支持

目前,TiCDC汇聚组件支持向以下下游平台复制数据:

  • 数据库兼容MySQL协议。接收组件提供最终的一致性支持。
  • 基于TiCDC Open协议的Kafka。接收器组件确保行级顺序、最终一致性或严格事务一致性。
  • cdclog.(实验性):写在本地文件系统或Amazon s3兼容存储上的文件。
  • Apache脉冲星(实验)

确保复制顺序和一致性

复制命令

  • 对于所有DDL或DML语句,TiCDC都输出它们至少一次

  • 当TiKV或TiCDC集群发生故障时,TiCDC可能会重复发送相同的DDL/DML语句。对于重复的DDL/DML语句:

    • MySQL Sink可以重复执行DDL语句。对于可以在下游重复执行的DDL语句,例如截断表,该声明已成功执行。对于那些不能重复执行的人,例如创建表,执行失败,TICDC忽略错误并继续复制。
    • Kafka sink重复发送消息,但是重复的消息并不影响约束解决了Ts.用户可以从Kafka消费者过滤重复的消息。

复制一致性

  • MySQL水槽

    • TICDC不会拆分单表交易和确保单表事务的原子性。
    • TiCDC确实不确保下游交易的执行顺序与上游交易的执行顺序相同。
    • TICDC在表的单位中分配交叉表事务并进行不确保跨表事务的原子性。
    • Ticdc.确保单行更新的顺序与上游中的顺序一致。
  • 卡夫卡水槽

    • TiCDC提供了不同的数据分发策略。您可以基于表、主键或时间戳将数据分发到不同的Kafka分区。
    • 对于不同的分发策略,不同的使用者实现可以实现不同级别的一致性,包括行级一致性、最终一致性或跨表事务一致性。
    • TICDC没有开展KAFKA消费者,但仅提供TiCDC开放协议.你可以根据这个协议来实现Kafka消费者。

限制

TiCDC只复制至少有一个参数的表有效索引.一种有效索引定义如下:

  • 主键(主键)是有效的索引。
  • 唯一的指数(唯一索引)同时满足以下条件是有效索引:
    • 索引的每一列都被明确定义为非空(非空).
    • 索引没有虚拟生成的列(虚拟生成的列).

从v4.0.8开始,TiCDC支持复制表没有有效索引通过修改任务配置。但是,这在一定程度上损害了数据一致性的保证。有关详细信息,请参见复制表无效索引

不支持的情景

目前不支持以下场景:

  • 仅使用RawKV的TiKV集群。
  • DDL操作创建序列序列功能在TIDB。当上游TIDB使用时序列,Ticdc忽略了序列DDL操作/函数在上游执行。但是,使用DML操作序列可以正确复制函数。

TiCDC仅为上游的大型事务场景提供部分支持。详情请参见常见问题:TICDC是否支持复制大型交易?有风险吗?

兼容性问题的通知

使用TICDC V5.0.0-RC引起的不兼容问题CDC CLI.操作v4.0.x群集的工具

当使用CDC CLI.工具的TiCDC v5.0.0-rc操作v4.0。x TiCDC集群,可能会出现以下异常情况:

  • 如果TiCDC集群是v4.0.8或更早的版本,请使用v5.0.0-rcCDC CLI.创建复制任务的工具可能会导致群集异常,并将复制任务卡住。

  • 如果TiCDC集群版本为v4.0.9或更高版本,请使用v5.0.0-rcCDC CLI.创建复制任务的工具将导致默认情况下出乎意料地启用旧值和统一的分拣机功能。

解决方案:使用CDC可执行文件对应于TICDC群集版本以执行以下操作:

  1. 删除使用V5.0.0-RC创建的ChangeFeefCDC CLI.工具。例如,运行Tiup cdc:v4.0.9 cli changefeed remove -c XXXX——pd=xxxxx——force命令。
  2. 如果复制任务已卡住,请重新启动TICDC群集。例如,运行 -R cdc . tiup cluster restart 命令。
  3. 重新创建changefeed。例如,运行TIUP CDC:v4.0.9 CLI ChangeFeed create --sink-uri = xxxx --pd = xxx命令。

注意:

上述问题仅存在CDC CLI.v5.0.0-rc。其他v5.0.xCDC CLI.工具可以与v4.0兼容。x集群。

安装部署TiCDC

您可以将TiCDC与新的TiDB集群一起部署,也可以将TiCDC组件添加到现有TiDB集群中。有关详细信息,请参见部署TiCDC

管理TICDC群集和复制任务

目前,您可以使用CDC CLI.工具来管理TICDC集群和数据复制任务的状态。有关详细信息,请参阅:

排除TiCDC

详情请参见排除TiCDC

TiCDC开放协议

TICDC开放协议是一个行级数据更改通知协议,用于在不同数据库之间监视,缓存,全文索引,分析引擎和主辅助复制的数据源。TICDC符合TICDC开放协议,并将TIDB的数据变化复制到第三方数据介质(如MQ)(消息队列)。有关更多信息,请参阅TiCDC开放协议

兼容性说明sort-dir数据目代

sort-dir配置用于指定TICDC分拣机的临时文件目录。其功能可能因不同版本而异。下表列表sort-dir的兼容性在不同版本之间变化。

版本 排序引擎功能 请注意 建议
V4.0.11或早期的V4.0版本,V5.0.0-RC 它是一个changefeed配置项,并为文件分拣机和统一分拣机。 在这些版本中,文件分拣机和统一分拣机是实验特征不是推荐用于生产环境。

如果多个转换留下使用统一分拣机是它的排序引擎,实际的临时文件目录可能是sort-dir任何changefeed的配置,每个TiCDC节点使用的目录可能不同。
不建议使用统一生产环境中的排序器。
V4.0.12,V4.0.13,V5.0.0和V5.0.1 它是changefeed或的配置项疾病预防控制中心服务器 默认情况下,sort-dir配置的配置不会生效,而且sort-dir的配置疾病预防控制中心服务器默认为/ tmp / cdc_sort.建议只配置疾病预防控制中心服务器在生产环境中。

如果使用TiUP部署TiCDC,建议使用最新的TiUP版本和设置sorter.sort-dir.在TiCDC服务器配置中。

统一默认情况下,v4.0.13,v5.0.0和v5.0.1中的默认情况下启用了分拣机。如果要将群集升级到这些版本,请确保已正确配置sorter.sort-dir.在TiCDC服务器配置中。
您需要配置sort-dir使用疾病预防控制中心服务器命令行参数(或TiUP)。
V4.0.14及更高版本V4.0版本,V5.0.2及更高版本V5.0版本,稍后TIDB版本 sort-dir弃用。建议配置数据目代 您可以配置数据目代使用TiUP的最新版本。在这些TiDB版本中,统一默认情况下,Sorter是启用的。确保数据目代升级群集时已正确配置。除此以外,/ tmp / cdc_data默认情况下将使用临时文件目录。

如果目录所在设备的存储容量不足,可能会出现硬盘空间不足的问题。在这种情况下,前一个sort-dirChangeFeed的配置将变为无效。
您需要配置数据目代使用疾病预防控制中心服务器命令行参数(或TiUP)。