自建MySQL到自建MySQL

一、支持的版本及架构

  • 支持数据库版本为5.6、5.7或8.0,支持单机或基于gtid的主从架构

二、注意事项

2.1数据库权限设置

(即同步数据库账号的权限要求)

  • 源数据库要求
    • 库表结构最小权限
      • SELECT权限
    • 全量最小权限
      • SELECT权限
    • 增量最小权限
      • 待同步对象的SELECT权限。
      • REPLICATION SLAVE 、 REPLICATION CLIENT
  • 目标数据库要求
    • SELECT、CREATE、INSERT、DELETE、UPDATE、ALTER、DROP、INDEX

2.2源库要求

  • 目前实现的是表级同步。如果表太多,建议您分批配置多个任务,每个任务同步一部分表。

  • 如果需要采集增量,需要开启binlog

    • 且binlog_format为row
    • binlog_row_image=full
    • 全量同步期间必须保留binlog
    • 在磁盘空间允许的情况下,建议源数据库binlog保存时间越长越好,建议为3天
  • 在同步全量时,不要变更库及表结构。
  • 如果仅执行全量数据迁移,请勿再向源实例中写入新的数据,否则会导致源和目标数据不一致。为实时保持数据一致性,建议选择全量数据迁移(同步)和增量数据迁移(同步)。
  • 全量同步支持分片,分片仅支持单主键表格,支持列类型为tinyint、smallint、mediumint、int、bigint、char、varchar、float、double、decimal、date、time、year、datetime、timestamp
  • 增量采集时任务自动设置的server-id值大于268,435,456,请留意是否会与mysql节点server-id有重复。

2.3目标库要求

  • 在DTS同步期间,不建议有除DTS外的数据写入目标表格,否则会导致源库表格与目标库表格数据不一致。
  • 建议源和目标库版本保持一致,或者从低版本同步到高版本以保障兼容性。如为高版本同步至低版本,可能存在数据库兼容性问题。

2.4功能约束

2.4.1同步对象约束

  • 支持同步表结构、dml、ddl。
  • 不支持同步视图、存储过程、存储函数、触发器、事件等。

2.4.2其他约束

  • 浮点数类型的字段(double,float,decimal,numeric,real)作为主键或无主键表中使用,因为目前不支持浮点类型的按精度比较,有可能无法精确匹配删除记录,造成源端和目的端数据不一致。

三、字段类型

支持的字段类型

  • 整型: tinyint,smallint,mediumint,int,bigint,integer,year,bool
  • 浮点数: double,float,decimal,numeric,real
  • 字符串: varchar,char,binary,bit,varbianry,set,enum,
  • 时间类型: datetime,date,time,timestamp
  • 大对象类型(支持小于10M的数据对象): tinyblob,mediumblob,blob,longblob,tinytext,mediumtext,text,longtext

不支持的字段类型

  • json

四、支持同步的SQL语句

操作类型 SQL操作语句 备注
DML INSERT、DELETE、UPDATE
DDL ALTER TABLE ADD COLUMN、ALTER TABLE CHANGE COLUMN、ALTER TABLE RENAME COLUMN、ALTER TABLE DROP COLUMN

五、支持的拓扑

  • 一对一单向同步