- 关于TiDB
- 快速启动
- 部署
- 迁移
- 维护
- 升级
- 规模
- 备份和恢复
- 使用BR工具(推荐)
- 配置时区
- 每日清单
- 保持Tiflash.
- 使用TiUP维护TiDB
- 在线修改配置
- 监控和警报
- 排除故障
- 性能调优
- 教程
- 一个城市部署中的多个数据中心
- 两城三数据中心部署
- 阅读历史数据
- 使用过时的读取(推荐)
- 使用
tidb_snapshot
系统变量
- 最佳实践
- 使用放置规则
- 使用负载底座拆分
- 使用存储限制
- TiDB生态系统工具
- 参考
- 集群架构
- 主要监测指标
- 安全
- 特权
- SQL
- SQL语言结构和语法
- SQL陈述
添加一列
添加索引
行政
管理员取消DDL
管理校验和表
管理员检查(表|索引)
Admin show DDL [job | queries]
改变数据库
改变指数
更改实例
改变表
改变用户
分析表
备份
开始
改变列
提交
改变排水器
改变泵
创建全局|会话绑定
创建数据库
创建索引
创建角色
创建序列
创建表像
创建表
创建用户
创建视图
释放
删除
去世
描述
做
删除[全局|会话]绑定
删除列
删除数据库
下降索引
下降的作用
下拉序列
数据下降
删除表
删除用户
删除视图
执行
解释分析
解释
闪回表
冲洗的特权
冲洗状态
刷新表
<特权授予>
格兰特> <作用
插入
杀死[TIDB]
加载数据
加载统计数据
修改列
准备
恢复表
重命名索引
重命名表
取代
恢复
撤销<特权>
撤消<角色>
回滚
选择
设置默认角色
设置[名称|字符集]
设置密码
设置角色
设置事务
<变量(全局|会话)>
显示分析状态
显示(备份|恢复)
显示[全局|会话]绑定
显示内置命令
显示字符集
展示融合
显示[完整]列
显示配置
显示创建序列
显示创建表
显示创建用户
显示数据库
显示排水器状态
展示引擎
显示错误
显示[完整]字段
展示补助金
显示索引[来自|在]
显示索引[来自| IN]
显示键[来自| In]
显示主状态
显示插件
显示特权
显示[全部]PROCESSSLIST
显示配置文件
显示泵状态
显示模式
显示stats_healthy.
显示STATS_HISTOGRAMS
显示STATS_META
显示状态
show table next_row_id.
展示桌子区
显示表状态
显示表(完整)
显示全局|会话变量
显示警告
关闭
分裂区域
开始交易
桌子
跟踪
截短
更新
用
和
- 数据类型
- 函数和运算符
- 聚集索引
- 约束
- 生成的列
- SQL模式
- 交易
- 垃圾收集(GC)
- 意见
- 分区
- 字符集和排序
- 系统表
mysql.
- INFORMATION_SCHEMA
- 概述
分析_Status.
client_errors_summary_by_host.
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
character_sets.
cluster_config
CLUSTER_HARDWARE
cluster_info.
cluster_load.
CLUSTER_LOG
CLUSTER_SYSTEMINFO
拼写
COLLATION_CHARACTER_SET_APPLICABILITY
列
data_lock_waits.
ddl_jobs.
死锁
引擎
检查_议程
INSPECTION_RULES
检查_summary.
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
分区
流行列表
REFERENTIAL_CONSTRAINTS
图式
序列
SESSION_VARIABLES
慢_query.
统计数据
桌子
table_constraints.
table_storage_stats.
TIDB_HOT_REGIONS
tidb_indexes.
tidb_servers_info.
tidb_trx.
TIFLASH_REPLICA
tikv_region_peers.
tikv_region_status.
tikv_store_status.
USER_PRIVILEGES
意见
METRICS_SCHEMA
- 用户界面
- CLI
- 命令行标记
- 配置文件参数
- 系统变量
- 存储引擎
- TiUP
- 遥测
- 错误代码
- 表过滤器
- 根据拓扑标签调度副本
- 常见问题解答
- 术语表
- 发布说明
- 所有的版本
- v5.2.
- v5.1.
- v5.0.
- v4.0
- v3.1.
- v3.0.
- v2.1
- v2.0
- v1.0.
TICDC概述
注意:
TICDC是v4.0.6以来一般可用性(GA)的功能。您可以在生产环境中使用它。
Ticdc.是一种复制TIDB增量数据的工具。该工具是通过拉动TIKV更改日志来实现的。它可以将数据恢复到任何上游TSO的一致状态,并提供TiCDC开放协议支持其他系统订阅数据更改。
TiCDC架构
当TICDC正在运行时,它是一个无状态节点,可通过PD中的etcd实现高可用性。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 Sink可以重复执行DDL语句。对于可以在下游重复执行的DDL语句,例如
复制一致性
MySQL水槽
- TICDC不会拆分单表交易和确保单表事务的原子性。
- TiCDC确实不确保下游交易的执行顺序与上游交易的执行顺序相同。
- TICDC在表的单位中分配交叉表事务并进行不确保跨表事务的原子性。
- Ticdc.确保单行更新的顺序与上游中的顺序一致。
卡夫卡水槽
- TiCDC提供了不同的数据分发策略。您可以基于表、主键或时间戳将数据分发到不同的Kafka分区。
- 对于不同的分发策略,不同的使用者实现可以实现不同级别的一致性,包括行级一致性、最终一致性或跨表事务一致性。
- TICDC没有开展KAFKA消费者,但仅提供TiCDC开放协议.你可以根据这个协议来实现Kafka消费者。
限制
TiCDC只复制至少有一个参数的表有效索引.一种有效索引定义如下:
- 主键(
主键
)是有效的索引。 - 唯一的指数(
唯一索引
)同时满足以下条件是有效索引:- 索引的每一列都被明确定义为非空(
非空
). - 索引没有虚拟生成的列(
虚拟生成的列
).
- 索引的每一列都被明确定义为非空(
从v4.0.8开始,TiCDC支持复制表没有有效索引通过修改任务配置。但是,这在一定程度上损害了数据一致性的保证。有关详细信息,请参见复制表无效索引.
不支持的情景
目前不支持以下场景:
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-rc
CDC CLI.
创建复制任务的工具可能会导致群集异常,并将复制任务卡住。如果TiCDC集群版本为v4.0.9或更高版本,请使用v5.0.0-rc
CDC CLI.
创建复制任务的工具将导致默认情况下出乎意料地启用旧值和统一的分拣机功能。
解决方案:使用CDC
可执行文件对应于TICDC群集版本以执行以下操作:
- 删除使用V5.0.0-RC创建的ChangeFeef
CDC CLI.
工具。例如,运行Tiup cdc:v4.0.9 cli changefeed remove -c XXXX——pd=xxxxx——force
命令。 - 如果复制任务已卡住,请重新启动TICDC群集。例如,运行
命令。-R cdc . tiup cluster restart - 重新创建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-dir ChangeFeed的配置将变为无效。 |
您需要配置数据目代 使用疾病预防控制中心服务器 命令行参数(或TiUP)。 |