跳到主要内容

TiDB

支持的对端数据源及功能

请选择对端数据源,文档相关内容会根据对端数据源不同而调整。

选择对端:

核心能力

功能MySQL
结构迁移

全量数据迁移

增量实时同步

数据校验

数据订正

DDL实时同步
  • 增/减列
  • 增/减索引
  • 修改列
  • 重命名列
  • 重命名表
  • 创建表

使用限制与注意点

说明
增量同步

待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能导致同步到目标数据库数据不一致的情况,例如无主键表的增量同步

影响数据一致性的因素
  1. TiKV通过gRPC推送CDC事件到CloudCanal,若PD节点或者TiKV节点处于繁忙状态或者存在网络波动,有概率导致推送的数据块丢失,造成数据的不一致。
  2. 若TiKV中的缓存事件超过了单个节点的缓存队列大小,TiKV将以FIFO(先进先出)策略淘汰掉旧的事件,若该事件还未被CloudCanal消费,则将导致数据的不一致。
历史变更数据缓存

TiDB 的所有历史变更数据缓存在TiKV节点中,默认的TiKV缓存数据变更事件占用内存的上限为512MB,默认的TiKV缓存TiCDC Old Value的条目占用内存的上限为512MB,超出限定阈值的数据将会被TiKV GC 回收,造成数据丢失。 用户可通过修改集群部署配置文件,设置参数大小(建议设置为2~5G)

  • old-value-cache-memory-quota:设置缓存在内存中的TiCDC Old Value 的条目占用内存的上限
  • sink-memory-quota:设置缓存在内存中的TiCDC数据变更事件占用内存的上限
TiDB Server GC 设置

TiDB 默认的GC频率是10分钟一次,若任务延迟大于该阈值时,部分的旧数据就可能会被回收,造成数据不一致。因此建议对所有的TiDB Server修改GC周期时间为3小时以上。

  • set global tidb_gc_life_time = '3h0m0s';

字段类型与映射

TiDBMySQL
BIGINTBIGINT
BINARYBINARY
BITBIT
BLOBBLOB
CHARCHAR
DATEDATE
DATETIMEDATETIME
DECIMALDECIMAL
DOUBLEDOUBLE
ENUMENUM
FLOATFLOAT
INTINT
JSONJSON
LONGBLOBLONGBLOB
LONGTEXTLONGTEXT
MEDIUMBLOBMEDIUMBLOB
MEDIUMINTMEDIUMINT
MEDIUMTEXTMEDIUMTEXT
SETSET
SMALLINTSMALLINT
TEXTTEXT
TIMETIME
TIMESTAMPTIMESTAMP
TINYBLOBTINYBLOB
TINYINTTINYINT
TINYTEXTTINYTEXT
VARBINARYVARBINARY
VARCHARVARCHAR
YEARYEAR

必要条件

必要条件说明
账号权限全量迁移:迁移库表的 SELECT 权限,information_schema SELECT 权限

例:grant SELECT on testdb.* to common_user@'%'
填写PD主节点地址CloudCanal订阅源端TiDB增量主要与 PD主节点进行通讯,请确保CanalCanal与PD主节点通讯正常。

例: telnet [pd主节点:ip][pd主节点:端口号]

数据源添加参数说明

项名称说明
网络地址类型分为内网地址和外网地址。一个数据源可以包含一个内网地址和一个外网地址。网络地址格式为ip地址和port。默认添加的为内网地址,需要添加外网地址可以点击右侧+号
认证方式支持选择不同的认证方式,例如有账号无密码或者无账号无密码
账号数据库服务端账号
密码数据库服务端密码
描述非必填项,填写描述信息,方便管理数据源
物理位置物理位置仅仅是一个标记,在管理多地域数据库时方便识别

数据源额外参数

参数名称说明
pdHostPD主节点的连接地址,格式为ip:port,如果需要订阅增量,该参数不可为空
cdcEventBufferSizeCloudCanal接收TiKV推送的CDC事件的缓冲池大小,默认为20000,建议不低于10240
cdcBatchMaxSizeCloudCanal从CDC缓冲池中消费的事件数量的最大值,默认为1000

常用源端任务参数

Tips: 所有数据源均有的通用参数配置请参考 通用参数配置