使用限制

限制

  • 仅支持 MySQL 5.6/5.7 版本
  • 仅支持 InnoDB 引擎
  • 仅支持以下字符集:
    • latin1
    • latin2
    • gb2312, gbk, gb18030
    • utf8, utf8mb4
    • utf32
    • binary
  • 在latin1/2表中,不支持非latin字符(如中文)(#388)
  • 对于非UTF8编码执行的DDL,不支持DDL中含有混合编码字符串,如(col varchar default _utf32"...")
  • binlog 仅支持row模式
  • binlog image 仅支持FULL模式
  • 源端和目标端大小写敏感配置 (lower_case_table_names) 需保持一致
  • 需要开启 GTID
  • 不支持 Trigger
  • 暂不支持 View
  • 支持procedure,function,event的增量部分迁移(须创建库级别的迁移job),但存在源端与目标端字符集不完全一致的问题#357
  • 支持user增量部分的迁移(须创建实例级别的迁移job),且支持grant,revoke(要求回放用户有grant option
  • 支持MySQL认证方式 mysql_native_password(MySQL 5.7)和caching_sha2_password(MySQL 8.0),其他认证方式不详
  • 在dtle的增量复制过程中,如果源端执行replace into语句或者执行产生Duplicate entry冲突insert语句,可能导致目标端的 AUTO_INCREMENT值和源端不一致(MySQL Bug#83030

源端 MySQL 需配置如下参数

参数 检查方式
log_bin ON (my.cnf中填写合法文件名) show global variables like 'log_bin'
binlog_format ROW show global variables like 'binlog_format';
binlog_row_image FULL show global variables like 'binlog_row_image';
log_slave_updates ON show global variables like 'log_slave_updates';
gtid_mode ON show global variables like 'gtid_mode';
  • 对于 lower_case_table_names参数, dtle支持的值为01
    • 原则上要求源端和目标端设置相同。
    • 且job存续期间,MySQL上该参数的值不可改变。
    • 允许设置参数值2, 但不支持大小写混用。

关于外键 (foreign key)

在3.21.10.0以前,dtle回放时会设置set @@foreign_key_checks=OFF。外键的级连操作(如on update cascade)将无法生效。

从3.21.10.0开始,dtle增量回放时,默认set @@foreign_key_checks=ON。可以触发外键级连操作。

对于存在外键关系的一系列表,需要这些表在同一个job的复制范围内,才能正常执行。

该行为可用job配置中dest部分ForeignKeyChecks控制,默认为true。如有必要,可将其设为false。

涉及外键引用父表的事务,回放时会单独回放,不能并行。

遗留问题:在外键子表上alter table drop foreign key后,原外键父表依然会被认为是外键父表。

results matching ""

    No results matching ""