更新时间:2024-06-21 GMT+08:00
分享

DRS预检查项一览表

DRS同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,DRS在任务正式启动前,会对任务源数据库、目标数据库中的参数、对象等信息进行自动化的扫描和检测,帮助您提高数据同步的成功率。

概览

根据同步任务的源数据库类型,查看预检查信息:

MySQL->MySQL

表1 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量、增量同步需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 提供的目标数据库账号必须拥有如下权限:

    SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES。

    RDS for MySQL实例的root账户默认已具备上述权限。

  • 当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

详见MySQL权限授权方法

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

DRS在同步数据量大或同步大字段情况下,目标数据库的max_allowed_packet参数值过小导致目标库数据无法写入造成全量同步失败。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

附加列检查

单增量同步任务中如果目标数据库不存在新增附加列,会导致任务失败。

详见目标数据库附加列检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时钟

目标库和源库的时钟需要一致。

-

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件(EVENT)和触发器(TRIGGER)的同步。
  • 不支持数据库参数和系统数据库同步。

-

库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 源数据库中的库名不能包含:'<`>/\"以及非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>/\"以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 映射到目标库中的库名不能包含:“.”、 “<”、“>”、“”、和“'”。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MySQL->PostgreSQL

表2 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下最小权限:SELECT。
  • 全量+增量同步需要具备如下最小权限:

    SELECT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

RDS for PostgreSQL实例的账号默认已具有权限。

-

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持9.5、9.6、10、11版本

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

  • 同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。
  • 源数据库中不支持的表字段类型有:xml、geometry、point、lineString、polygon、geometrycollection、multipoint、multilinestring、multipolygon、json。

-

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

表结构检查

目标库和源库的表结构需要一致。

详见表结构一致性检查

同步对象类

选择对象检查

  • 仅支持同步表结构、表数据、索引信息。
  • 仅支持同步MyISAM和InnoDB表。
  • 不支持同步存储过程等其他数据库对象。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

有主键表正确性检查

不建议在数据库中使用非精确数值类型做主键,该特性影响 DRS 增量场景下对 UPDATE、DELETE语句的同步,导致任务失败。

-

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

源数据库中的库名和表名不能包含:'<`>/\"以及非ASCII字符。

-

对象名长度检查

目标数据库对象名最大支持63个字符。

详见源数据库对象名长度检查

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MySQL->GaussDB主备版

表3 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 库级权限:需要使用root或其他有Sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。
  • SCHEMA级权限:需要使用root、或其他有Sysadmin角色的DATABASE用户、或使用对象的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。
  • 表级权限:需要使用root、或其他有Sysadmin角色的DATABASE用户、或使用对象的OWNER用户登录数据库 ,赋予用户SCHEMA下所有表的SELECT,UPDATE,INSERT,ALTER、INDEX和DELETE权限。

-

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

不支持的数据类型有:xml、包含bit类型的json、geometry、point、lineString、polygon、geometrycollection、multipoint、multilinestring、multipolygon。

详见源数据库字段类型检查

数据库兼容类型检查

目标数据库创建时指定兼容模式,并与源数据库保持兼容。

详见数据库兼容类型检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

表结构检查

目标库和源库的表结构需要一致。

详见表结构一致性检查

同步对象类

选择对象检查

  • 仅支持同步表结构、表数据、索引信息。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持同步存储过程等其他数据库对象。
  • 不支持同步MySQL含虚拟列的表。
  • 不支持同步既是无主键表,又是分区表的自建表,可能会导致任务失败。

-

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 源数据库中的库名和表名不能包含:.<'>/\以及非ASCII字符。
  • 对象名同步到目标库后会转换成小写,因此选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

对象名长度检查

目标数据库对象名最大支持63个字符。

详见源数据库对象名长度检查

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

目标数据库检查

任务配置的映射数据库必须在目标库已经存在。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MySQL->GaussDB(DWS)

表4 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

目标数据库账号必须具有每张表的如下权限:INSERT、SELECT、UPDATE、DELETE、CONNECT、CREATE。

-

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持8.1.3、8.2.0版本

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

不支持的数据类型有:xml、包含bit类型的json、geometry、point、lineString、polygon、geometrycollection、multipoint、multilinestring、multipolygon。

详见源数据库字段类型检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

数据库兼容类型检查

目标数据库创建时指定兼容模式,并与源数据库保持兼容。

详见数据库兼容类型检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

表结构检查

目标库和源库的表结构需要一致。

详见表结构一致性检查

同步对象类

选择对象检查

  • 支持同步表、索引、约束(主键、空、非空)。
  • 支持同步MyISAM和InnoDB表。
  • 不支持同步视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束和唯一索引。
  • 不支持同步既是无主键表,又是分区表的自建表。

-

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 源数据库中的库名和表名不能包含:.<'>/\以及非ASCII字符。
  • 库级同步,在增量同步过程中,不能在源库创建名称字母相同但大小写不同的表。
  • 对象名同步到目标库后会转换成小写,因此选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

对象名长度检查

目标数据库对象名最大支持63个字符。

详见源数据库对象名长度检查

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MySQL->GaussDB(for MySQL)

表5 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

需要具备如下权限:

SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 目标数据库账号必须拥有如下权限:

    SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES。GaussDB(for MySQL)实例的root账户默认已具备上述权限。

  • 当目标数据库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

-

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持8.0版本

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

DRS在同步数据量大或同步大字段情况下,目标数据库的max_allowed_packet参数值过小导致目标库数据无法写入造成全量同步失败。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

附加列检查

对目标库中缺少附加列的库表添加对应列。

详见目标数据库附加列检查

目标数据库检查

状态检查

目标数据库实例的状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时钟

目标库和源库的时钟需要一致。

-

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件(EVENT)和触发器(TRIGGER)的同步。
  • 不支持数据库参数和系统数据库同步。

-

库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中如果存在与源库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 源数据库中的库名、表名、视图名不能包含:'<`>/\以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MySQL->MariaDB

表6 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量、增量同步需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 提供的目标数据库账号必须拥有如下权限:

    SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES、INDEX。

    RDS for MariaDB实例的root账户默认已具备上述权限。

-

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持10.5版本

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

附加列检查

单增量同步任务中如果目标数据库不存在新增附加列,会导致任务失败。

详见目标数据库附加列检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例实例状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时钟

目标库和源库的时钟需要一致。

-

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件(EVENT)和触发器(TRIGGER)的同步。
  • 不支持数据库参数和系统数据库同步。

-

库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 源数据库中的库名不能包含:'<`>/\"以及非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>/\"以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 映射到目标库中的库名不能包含:“.”、 “<”、“>”、“”、和“'”。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MySQL->GaussDB分布式版

表7 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步:SELECT。
  • 全量+增量和增量同步:SELECT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

详见MySQL权限授权方法

目标数据库权限

  • 库级权限:需要使用root或其他有Sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。
  • SCHEMA级权限:需要使用 root、或其他有Sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。
  • 表级权限:需要使用 root、或其他有Sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下表的DML相关权限(SELECT权限在处理无主键表时需要)。
  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

  • 源数据库为自建MySQL时,通过设置expire_logs_days参数设置Binlog保留时间。建议将expire_logs_day参数设置在合理的范围,确保恢复时断点处的Binlog尚未过期,以保证任务中断后的顺利恢复。
  • 源数据库为RDS for MySQL时,设置Binlog保留时间可参考设置RDS for MySQL本地Binlog日志清理

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MySQL源数据库的server_id。

  • 如果源数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

不支持的数据类型有:xml、包含bit类型的json、geometry、point、lineString、polygon、geometrycollection、multipoint、multilinestring、multipolygon、interval。

详见源数据库字段类型检查

数据库兼容类型检查

目标数据库创建时指定兼容模式,并与源数据库保持兼容。

详见数据库兼容类型检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

表结构检查

目标库和源库的表结构需要一致。

详见表结构一致性检查

同步对象类

选择对象检查

  • 仅支持同步表结构、表数据、索引信息。
  • 仅支持同步有主键表,不支持同步无主键表。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持同步存储过程等其他数据库对象。
  • 虚拟列会被同步为普通列,且不写入任何数据,也不做增量同步。
  • 不支持同步既是无主键表,又是分区表的自建表,可能会导致任务失败。

-

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

同名检查

除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 源数据库中的库名和表名不能包含:.<'>/\以及非ASCII字符。
  • 对象名同步到目标库后会转换成小写,因此选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

对象名长度检查

目标数据库对象名最大支持63个字符。

详见源数据库对象名长度检查

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

目标数据库检查

任务配置的映射数据库必须在目标库已经存在。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

PostgreSQL->PostgreSQL

表8 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下权限:

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的select权限(用于同步用户的密码)。

  • 全量+增量、增量同步需要具备如下权限:

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,系统表pg_catalog.pg_authid的SELECT权限(用于同步用户的密码),无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。

-

目标数据库权限

  • 库级同步
    • 如果目标库不是postgres,需要具有CREATEDB权限。
    • 如果目标库是postgres,需要具有postgres库的CONNECT和CREATE权限、对模式public的USAGE和CREATE权限。
  • 表级同步
    • 如果需要同步库,需要具有CREATEDB权限。
    • 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。
    • 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。
  • 同步用户:需要具有CREATEROLE权限。
  • 同步用户权限:同步用户的default privilege需要为系统默认值,否则可能导致目标库与源库的对象权限不一致。

-

版本类

源数据库版本

支持9.4、9.5、9.6、10、11、12、13、14版本

详见支持的数据库

目标数据库版本

支持9.5、9.6、10、11、12、13、14版本

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

性能参数

目标数据库的BLOCK_SIZE参数值必须大于或等于源数据库的BLOCK_SIZE参数值。

详见源库与目标库的BLOCK_SIZE参数值是否相同

源数据库和目标数据库的参数PASSWORD_ENCRYPTION需要一致。

-

源数据库max_replication_slots参数值必须大于当前已使用的复制槽数量。

详见源库参数MAX_REPLICATION_SLOTS校验

源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。

详见源数据库参数max_wal_senders校验

源数据库中无主键表的replica identity属性必须为full。

-

源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。

详见主键列复制属性的校验

源数据库的wal_level必须配置为logical。

详见源数据库参数WAL_LEVEL校验

增量同步类

表字段检查

  • 同步对象中是如果存在包含bytea、text类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致OOM。
  • 支持的字段类型有:数字类型、货币类型、字符类型、二进制数据类型、日期/时间类型、布尔类型、枚举类型、几何类型、网络地址类型、位串类型、文本搜索类型、UUID类型、XML类型、JSON类型、数组、复合类型、范围类型。

-

无日志表检查

库级同步时,不支持同步无日志表(UNLOGGED TABLE)的DML。

-

参数检查

如果做增量同步,且同步对象中包含外键、触发器或事件触发器,则目标数据库的session_replication_role参数必须设置为replica,同步结束后,此参数需改为origin。

详见目标库参数session_replication_role检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常。

-

区域类型及排序规则检查

待同步数据库的lc_ctype或lc_collate在目标数据库不支持。

详见目标数据库区域类型及排序规则检查

货币金额格式检查

源数据库和目标数据库的货币金额格式需要一致。

详见货币金额格式是否一致

同步对象类

选择对象检查

  • 支持库表级同步。
  • 不支持实例级同步。
  • 不支持系统模式(“pg_”开头的任何模式、“information_schema”、“sys”、“utl_raw”、“dbms_lob”、“dbms_output”和“dbms_random”)、系统表、系统用户、表空间、外部数据包装器、外部服务器、用户映射、发布、订阅等其他对象。

-

所选表不能包含延迟约束的表。

详见所选表是否包含延迟约束

同步对象依赖和关联的对象需要一起同步。

-

库表列名规范检查

  • 库名不能包含+"%'\<>。
  • 模式名和表名不能包含".'<>。
  • 列名不能包含"和'。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

  • 全量+增量实时同步任务,源数据库不能为备机。
  • 全量实时同步任务,源数据库可以为备机,但是hot_standby_feedback参数必须为on。

详见源数据库是否处于备机状态

任务启动前请确保源数据库中不存在长时间未提交的事务。

-

源数据库的SSL状态正常。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

PostgreSQL->GaussDB(DWS)

表9 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量+增量同步需要具备如下权限:

数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。

-

目标数据库权限

  • 库级同步:需要具有CREATEDB权限。
  • 表级同步
    • 如果需要同步库,需要具有CREATEDB权限。
    • 如果需要同步模式,需要具有模式所在库的CONNECT权限、模式所在库上的CREATE权限。
    • 如果需要同步模式下的对象,需要具有模式所在库的CONNECT权限、对象所在模式的USAGE权限、对象所在模式上的CREATE权限。

-

版本类

源数据库版本

支持9.4、9.5、9.6、10、11、12、13、14版本

详见支持的数据库

目标数据库版本

支持8.1.3、8.2.0版本

详见支持的数据库

参数类

性能参数

源数据库max_replication_slots参数值必须大于当前已使用的复制槽数量。

详见源库参数MAX_REPLICATION_SLOTS校验

源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。

详见源数据库参数max_wal_senders校验

源数据库中无主键表的replica identity属性必须为full。

-

源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。

详见主键列复制属性的校验

源数据库的wal_level必须配置为logical。

详见源数据库参数WAL_LEVEL校验

增量同步类

表字段检查

  • 支持tinyint、smallint、int、bigint、numeric、decimal、char、bpchar、varchar、text、date、time、timetz、timestamp、timestamptz、interval等GaussDB(DWS)兼容PostgreSQL的数据类型。
  • 不支持xml、line、domain类型同步。

-

无日志表检查

库级同步时,不支持同步无日志表(UNLOGGED TABLE)的DML。

-

同步对象类

选择对象检查

  • 支持模式、表、索引、约束、序列、自定义类型的同步。
  • 表级同步时,仅支持表、序列的同步。
  • 不支持实例级同步。
  • 不支持系统模式(“pg_”开头的任何模式、“information_schema”、“sys”、“utl_raw”、“dbms_lob”、“dbms_output”和“dbms_random”)、系统表。“pg_”开头的任何模式、“information_schema”、“sys”、“utl_raw”、“dbms_lob”、“dbms_output”和“dbms_random”)、系统表。
  • 不支持既是无主键表,又是分区表的自建表。

-

所选表不能包含延迟约束的表。

详见所选表是否包含延迟约束

同步对象依赖和关联的对象需要同步,常见的关联关系:主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。

-

库表列名规范检查

  • 库名不能包含+"%'\<>。
  • 模式名和表名不能包含".'<>。
  • 列名不能包含"和'。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

  • 增量实时同步任务,源数据库不能为备机。
  • 全量实时同步任务,源数据库可以为备机,但是hot_standby_feedback参数必须为on。

详见源数据库是否处于备机状态

任务启动前请确保源数据库中不存在长时间未提交的事务。

-

源数据库的SSL状态正常。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

PostgreSQL->GaussDB主备版

表10 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下权限:

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限。

  • 全量+增量同步需要具备如下权限:

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。

-

目标数据库权限

具备sysadmin角色或者以下最小权限:

需要DATABASE的CONNECT和CREATE权限、SCHEMA的USAGE和CREATE权限、表的INSERT、UPDATE、DELETE、SELECT、ALTER、INDEX、COMMENT权限。

-

版本类

源数据库版本

支持9.4、9.5、9.6、10、11、12、13、14版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

参数类

性能参数

源数据库max_replication_slots参数值必须大于当前已使用的复制槽数量。

详见源库参数MAX_REPLICATION_SLOTS校验

源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。

详见源数据库参数max_wal_senders校验

源数据库中无主键表的replica identity属性必须为full。

-

源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。

详见主键列复制属性的校验

源数据库的wal_level必须配置为logical。

详见源数据库参数WAL_LEVEL校验

增量同步类

表字段检查

  • 支持tinyint、smallint、int、bigint、numeric、decimal、char、bpchar、varchar、text、date、time、timetz、timestamp、timestamptz、interval等GaussDB兼容PostgreSQL的数据类型。
  • 不支持xml、line、domain、自建数据类型同步。

-

无日志表检查

库级同步时,不支持同步无日志表(UNLOGGED TABLE)的DML。

-

一致性检查

schema和表检查

目标库和源库的schema、表需要一致。

-

同步对象类

选择对象检查

  • 支持模式、表、主键与唯一约束、表数据、序列的同步。
  • 不支持实例级同步。
  • 不支持系统模式(以下模式在目标库为系统模式,不支持同步:"pg_toast", "cstore", "snapshot", "sys", "dbms_job", "dbms_perf", "pg_catalog", "information_schema", "utl_file", "dbms_output", "dbms_random", "utl_raw", "dbms_sql", "dbms_lob", "dbe_perf", "pkg_service", "pkg_util", "dbe_file", "dbe_random", "dbe_output", "dbe_raw", "dbe_sql", "dbe_lob", "dbe_task", "blockchain", "db4ai", "dbe_pldebugger", "sqladvisor", "dbe_application_info", "dbe_match", "dbe_pldeveloper", "dbe_scheduler", "dbe_session", "dbe_utility", "dbe_sql_util")、系统表。
  • 不支持既是无主键表,又是分区表的自建表。

-

所选表不能包含延迟约束的表。

详见所选表是否包含延迟约束

同步对象依赖和关联的对象需要同步,常见的关联关系:视图引用表、视图引用视图、主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。

-

库表列名规范检查

  • 库名不能包含+"%'\<>。
  • 模式名和表名不能包含".'<>。
  • 列名不能包含"和'。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

  • 增量实时同步任务,源数据库不能为备机。
  • 全量实时同步任务,源数据库可以为备机,但是hot_standby_feedback参数必须为on。

详见源数据库是否处于备机状态

任务启动前请确保源数据库中不存在长时间未提交的事务。

-

源数据库的SSL状态正常。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

PostgreSQL->GaussDB分布式版

表11 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下权限:

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限。

  • 全量+增量同步需要具备如下权限:

    数据库的CONNECT权限,模式的USAGE权限,表的SELECT权限,序列的SELECT权限,无主键表的UPDATE、DELETE和TRUNCATE权限,REPLICATION连接权限。

-

目标数据库权限

具备sysadmin角色或者以下最小权限:

需要DATABASE的CONNECT和CREATE权限、SCHEMA的USAGE和CREATE权限、表的INSERT、UPDATE、DELETE、SELECT、ALTER、INDEX、COMMENT权限。

-

版本类

源数据库版本

支持9.4、9.5、9.6、10、11、12、13、14版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

参数类

性能参数

源数据库max_replication_slots参数值必须大于当前已使用的复制槽数量。

详见源库参数MAX_REPLICATION_SLOTS校验

源数据库的max_wal_senders参数值必须等于或大于max_replication_slots参数值。

详见源数据库参数max_wal_senders校验

源数据库中无主键表的replica identity属性必须为full。

-

源数据库中表的主键列toast属性为main、external、extended时,其replica identity属性必须为full。

详见主键列复制属性的校验

源数据库的wal_level必须配置为logical。

详见源数据库参数WAL_LEVEL校验

增量同步类

表字段检查

  • 支持tinyint、smallint、int、bigint、numeric、decimal、char、bpchar、varchar、text、date、time、timetz、timestamp、timestamptz、interval等GaussDB兼容PostgreSQL的数据类型。
  • 不支持xml、line、domain、自建数据类型同步。

-

无日志表检查

库级同步时,不支持同步无日志表(UNLOGGED TABLE)的DML。

-

一致性检查

schema和表检查

目标库和源库的schema、表需要一致。

-

同步对象类

选择对象检查

  • 支持模式、表、主键与唯一约束、表数据、序列的同步。
  • 不支持实例级同步。
  • 不支持系统模式(以下模式在目标库为系统模式,不支持同步:"pg_toast", "cstore", "snapshot", "sys", "dbms_job", "dbms_perf", "pg_catalog", "information_schema", "utl_file", "dbms_output", "dbms_random", "utl_raw", "dbms_sql", "dbms_lob", "dbe_perf", "pkg_service", "pkg_util", "dbe_file", "dbe_random", "dbe_output", "dbe_raw", "dbe_sql", "dbe_lob", "dbe_task", "blockchain", "db4ai", "dbe_pldebugger", "sqladvisor", "dbe_application_info", "dbe_match", "dbe_pldeveloper", "dbe_scheduler", "dbe_session", "dbe_utility", "dbe_sql_util")、系统表。
  • 不支持既是无主键表,又是分区表的自建表。

-

所选表不能包含延迟约束的表。

详见所选表是否包含延迟约束

同步对象依赖和关联的对象需要同步,常见的关联关系:主外键关联表、表继承子表引用父表、表分区子分区表引用分区表、表自增列引用序列等。

-

库表列名规范检查

  • 库名不能包含+"%'\<>。
  • 模式名和表名不能包含".'<>。
  • 列名不能包含"和'。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

  • 增量实时同步任务,源数据库不能为备机。
  • 全量实时同步任务,源数据库可以为备机,但是hot_standby_feedback参数必须为on。

详见源数据库是否处于备机状态

任务启动前请确保源数据库中不存在长时间未提交的事务。

-

源数据库的SSL状态正常。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->MySQL

表12 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量、增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

-

目标数据库权限

必须拥有如下权限:SELECT、INSERT、CREATE、DROP、UPDATE、ALTER、DELETE、INDEX。

-

Oracle源数据库用户MAINTAINED属检查

Oracle 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

目标数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

增量同步类

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

异构数据库兼容性

  • 不建议以字符串类型作为主键或唯一键,因为Oracle的字符串作为主键、唯一键时区分空格,而MySQL不区分,可能导致数据不一致和死锁问题。
  • Oracle中number(p, s)字段的精度不要超过p: [1, 38], s:[p-65, min(p, 30)]的精度表示范围。其中,s取值依赖于p的取值变化,即下限为p-65, 上限为p或30中取最小值。例如:当p=1, s的取值范围是[-64, 1]。当p=38, s取值范围是[-27, 30]。int字段的值不要超过(65,0)的精度表示范围。原因是MySQL数字的表示范围比Oracle小。

详见异构数据库兼容性风险须知

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

字符集兼容性检查

目标数据库字符集需要完全兼容源库字符集。

详见字符集兼容性检查

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

目标数据库检查

状态检查

目标数据库实例的状态必须正常。

-

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

  • 支持表级同步,或者通过文件导入对象。
  • 支持库、表结构、主键、唯一键、普通索引、表数据的同步,其他数据库对象暂不支持,如存储过程、触发器、函数、序列、包、同义词、用户等。

-

表结构检查

同步表结构时源库和目标库表结构一致。

-

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

排序字符集检查

目标数据库的主键或者唯一键列,在不区分大小写的排序字符集下,即“…_ci”结尾的不区分大小写的排序字符集,可能在数据迁移时发生“重复键”报错。

详见目标库排序字符集检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

同名检查

对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->GaussDB(for MySQL)

表13 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
  • 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

目标数据库权限

必须拥有如下权限:SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、INDEX、EVENT、RELOAD、CREATE VIEW、CREATE ROUTINE、TRIGGER。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

目标数据库版本

支持8.0版本

详见支持的数据库

增量同步类

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

异构数据库兼容性

  • 不建议以字符串类型作为主键或唯一键,因为Oracle的字符串作为主键、唯一键时区分空格,而MySQL不区分,可能导致数据不一致和死锁问题。
  • Oracle中number(p, s)字段的精度不要超过p: [1, 38], s:[p-65, min(p, 30)]的精度表示范围。其中,s取值依赖于p的取值变化,即下限为p-65, 上限为p或30中取最小值。例如:当p=1, s的取值范围是[-64, 1]。当p=38, s取值范围是[-27, 30]。int字段的值不要超过(65,0)的精度表示范围。原因是MySQL数字的表示范围比Oracle小。

详见异构数据库兼容性风险须知

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

目标数据库检查

状态检查

目标数据库实例的状态必须正常。

-

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

支持库、表结构、主键、唯一键、普通索引、表数据的同步,其他数据库对象暂不支持,如存储过程、触发器、函数、序列、包、同义词、用户等。

-

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

排序字符集检查

目标数据库的主键或者唯一键列,在不区分大小写的排序字符集下,即“…_ci”结尾的不区分大小写的排序字符集,可能在数据迁移时发生“重复键”报错。

详见目标库排序字符集检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

同名检查

对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

  • 库名和表名不支持字符有:非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->GaussDB主备版

表14 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量、增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

-

目标数据库权限

  • 库级权限:需要使用root或其他有Sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。

    授权语句:GRANT CREATE, CONNECT ON DATABASE <database> TO <user>;

  • SCHEMA级权限:需要使用 root、或其他有Sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。

    授权语句:GRANT CREATE, USAGE ON SCHEMA <schema> TO <user>;

  • 表级权限:需要使用 root、或其他有Sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下表的DML相关权限(SELECT权限在处理无主键表时需要)。

    授予SCHEMA下所有表的DML权限:GRANT SELECT, UPDATE, INSERT, DELETE, INDEX, ALTER ON ALL TABLES IN SCHEMA <schema> TO <user>;

    授予SCHEMA下指定表的DML权限:GRANT SELECT, UPDATE, INSERT, DELETE, INDEX, ALTER ON TABLE <schema.table> TO <user>;

  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

Oracle源数据库用户MAINTAINED属检查

Oracle 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

增量同步类

字符集兼容性检查

目标数据库字符集需要完全兼容源库字符集。

详见字符集兼容性检查

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

  • 全量同步时支持表、普通索引、主键与唯一约束、数据的同步。
  • 增量同步时支持表的实时同步。

-

目标数据库对象一致性检查

检查目标库对象是否满足同步要求。

详见目标数据库对象一致性检查

外键检查

同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。

详见是否禁用了外键或者同步的表在目标库上是否有外键

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

库表名规范检查

库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->GaussDB分布式版

表15 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量、增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

-

目标数据库权限

  • 库级权限:需要使用root或其他有Sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。

    授权语句:GRANT CREATE, CONNECT ON DATABASE <database> TO <user>;

  • SCHEMA级权限:需要使用 root、或其他有Sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。

    授权语句:GRANT CREATE, USAGE ON SCHEMA <schema> TO <user>;

  • 表级权限:需要使用 root、或其他有Sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下表的DML相关权限(SELECT权限在处理无主键表时需要)。

    授予SCHEMA下所有表的DML权限:GRANT SELECT, UPDATE, INSERT, DELETE, INDEX, ALTER ON ALL TABLES IN SCHEMA <schema> TO <user>;

    授予SCHEMA下指定表的DML权限:GRANT SELECT, UPDATE, INSERT, DELETE, INDEX, ALTER ON TABLE <schema.table> TO <user>;

  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

Oracle源数据库用户MAINTAINED属检查

Oracle 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

增量同步类

字符集兼容性检查

目标数据库字符集需要完全兼容源库字符集。

详见字符集兼容性检查

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

  • 全量同步时支持表、普通索引、主键与唯一约束、数据的同步。
  • 增量同步时支持表的实时同步。

-

目标数据库对象一致性检查

检查目标库对象是否满足同步要求。

详见目标数据库对象一致性检查

外键检查

同步的表要禁用外键,因为DRS并行回放会使得不同表之间的写入顺序和源库不一致,可能会触发外键约束限制,造成同步失败。

详见是否禁用了外键或者同步的表在目标库上是否有外键

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

库表名规范检查

库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->GaussDB(DWS)

表16 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量、增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

-

目标数据库权限

  • 目标数据库不存在DATABASE时需要有建库的权限;不存在SCHEMA时需要有在database中创建schema的权限;不存在表时需要有在对应schema中创建表的权限。
  • 对于每张表需要有INSERT、SELECT、UPDATE、DELETE权限。

-

Oracle源数据库用户MAINTAINED属检查

Oracle 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

目标数据库版本

支持8.1.3、8.2.0版本

详见支持的数据库

增量同步类

字符集兼容性检查

目标数据库字符集需要完全兼容源库字符集。

详见字符集兼容性检查

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

目标数据库检查

状态检查

目标数据库实例的状态必须正常。

-

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

  • 支持表、普通索引(B-Tree索引)、约束(主键、空、非空)的同步。
  • 不支持视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束、唯一索引、外键索引、Check约束的同步。

-

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

同名检查

同步表结构时,如果目标库存在与源库同名约束会导致建表失败。

详见目标数据库是否存在和源数据库同名的数据库

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

库表名规范检查

  • 库名、表名不支持的字符有:非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”。
  • 不支持选择源数据库的空库进行同步。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->DDM

表17 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

-

目标数据库权限

提供的目标数据库账号必须拥有如下权限:SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、INDEX、EVENT、RELOAD、CREATE VIEW。

-

Oracle源数据库用户MAINTAINED属检查

Oracle 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

增量同步类

字符集兼容性检查

目标数据库字符集需要完全兼容源库字符集。

详见字符集兼容性检查

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

目前只支持同步源库的数据,不支持同步源库表结构及其他数据库对象。

-

表结构检查

目标库的冗余列(源库中不存在的列)不能存在非空约束,否则会导致数据迁移因为非空约束而阻塞。

详见源库Oracle与目标库中间件表结构(包括列数,主键索引)是否对齐

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

库表名规范检查

  • 不支持表名包含除下划线外的其他特殊字符的表的同步。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 不支持选择源数据库的空库进行同步。
  • 同步前,目标数据库必须存在待同步数据库及表,且库名,表名,列名,索引名、约束名等必须为对应的小写名称。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Oracle->PostgreSQL

表18 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

全量同步:

需要具有CREATE SESSION,SELECT ANY DICTIONARY,针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

全量+增量同步:

  • 12c及以上版本租户模式:
    • 12c及以上版本CDB数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。
    • 12c及以上版本PDB数据库同步时,除了需要具有PDB内的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;),还需要具有CDB的CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING,SET CONTAINER(GRANT SET CONTAINER TO <userName> CONTAINER=ALL;)权限。
  • 12c及以上版本非租户模式:

    需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION,LOGMINING权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

  • 11g及以下版本数据库同步时,需要具有CREATE SESSION,SELECT ANY DICTIONARY,EXECUTE_CATALOG_ROLE,SELECT ANY TRANSACTION权限,以及针对单表的SELECT权限(GRANT SELECT ON <userName.tbName> to drsUser;)。

-

目标数据库权限

每张表必须具有如下权限:INSERT、SELECT、UPDATE、DELETE、CONNECT、CREATE、REFERENCES。

-

Oracle源数据库用户MAINTAINED属检查

Oracle 12c及以上版本不支持使用ORACLE_MAINTAINED=Y的用户账号进行增量同步(system/sys除外),因为该属性的账号无日志解析权限。

-

版本类

源数据库版本

支持10g、11g、12c、18c、19c、21c版本

详见支持的数据库

目标数据库版本

支持9.5、9.6、10、11、12、13、14版本

详见支持的数据库

增量同步类

异构数据库兼容性

请确认所需迁移的表中以字符串为主键或唯一键的列不包含空格,否则有可能导致数据不一致或迁移失败。

详见异构数据库兼容性风险须知

虚拟列检查

源数据库中不能存在虚拟列。

详见源库表结构是否存在虚拟列

字符集兼容性检查

目标数据库字符集需要完全兼容源库字符集。

详见字符集兼容性检查

归档日志和补充日志检查

增量同步时,源库Oracle需要开启日志归档模式和最小补充日志,所需同步表必须开启PK/UI或以ALL级别的补充日志,不限制库级或表级补充日志方式,如果只开启表级补充日志,重建或者RENAME表后需要重新设置;请确保以上配置在同步过程中始终保持开启状态。

-

目标数据库检查

状态检查

目标数据库实例的状态必须正常。

-

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

源数据库检查

物理复制库检查

增量阶段源库为Oracle物理备库(PHYSICAL STANDBY)时不支持解析lob类型数据(无法生成数据字典),如果增量同步的表中出现lob类型会导致增量同步异常。

详见物理复制库检查

同步对象类

选择对象检查

  • 支持表、索引、约束(主键、空、非空)的同步。
  • 不支持视图、外键、存储过程、触发器、函数、事件、虚拟列的同步。

-

表字段类型检查

源数据库表含有不支持的表字段类型。支持的表字段类型有: VARCHAR,VARCHAR2,NVARCHAR2,NUMBER,FLOAT,LONG,DATE,BINARY_FLOAT,BINARY_DOUBLE,RAW,LONG RAW,CHAR,NCHAR,CLOB,NCLOB,BLOB,ROWID,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE。

详见源库表字段类型检查

无主键表检查

由于无主键表缺乏行的唯一性标志,网络不稳定时涉及少量重试,表数据存在少量不一致的可能性。

详见源库无主键表检查

数据约束检查

数据传输时可能出现写入目标库的数据不满足约束检查而失败或丢失的风险。

详见存在约束不验证添加前数据

字符集检查

源数据库仅支持同步如下字符集:ZHS16GBK、AL32UTF8、UTF8、US7ASCII、WE8MSWIN1252、WE8ISO8859P1、WE8ISO8859P2、WE8ISO8859P4、WE8ISO8859P5、WE8ISO8859P7、WE8ISO8859P9、WE8ISO8859P13、WE8ISO8859P15。

详见源数据库字符集是否支持

日志解析权限检查

源数据库连接用户不具有日志解析权限,会导致增量迁移失败。

详见源数据库是否具有日志解析权限

同名检查

对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

详见目标数据库是否存在和源数据库同名的数据库

库表名规范检查

库名、表名不支持的字符有:非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

DDM->MySQL

表19 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 源数据库DDM账户至少需要具备一个权限,例如:SELECT。
  • DDM物理分片数据库账号需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

-

目标数据库权限

需要具备如下权限:SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE。

RDS for MySQL实例的root账户默认已具备上述权限。

详见MySQL权限授权方法

参数类

GTID状态

源物理分片数据库GTID状态建议为开启状态,源物理分片数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

-

性能参数

源物理分片数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

增量同步类

Binlog开启

增量同步时,源物理分片数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源物理分片数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

server_id值设置

增量同步时,必须设置源物理分片数据库的server_id。

  • 如果源物理分片数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源物理分片数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

同步对象类

选择对象检查

  • 全量同步支持数据、表结构和索引的同步。
  • 源库不允许存在拆分键为timestamp类型的表。

-

库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

库表名规范检查

源分库分表中间件中的库名、表名不能包含:'<>/\以及非ASCII字符。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

DDM->GaussDB(DWS)

表20 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 源数据库DDM账户至少需要具备一个权限,例如:SELECT。
  • DDM物理分片数据库账号需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

-

目标数据库权限

提供的目标数据库账号必须具有每张表的如下权限:INSERT、SELECT、UPDATE、DELETE、CONNECT、CREATE。

-

参数类

GTID状态

源物理分片数据库GTID状态建议为开启状态,源物理分片数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

-

性能参数

源物理分片数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

增量同步类

Binlog开启

增量同步时,源物理分片数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源物理分片数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

server_id值设置

增量同步时,必须设置源物理分片数据库的server_id。

  • 如果源物理分片数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源物理分片数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

同步对象类

选择对象检查

  • 全量同步支持数据、表结构和普通索引(B-Tree索引)的同步。
  • 目标库不支持唯一键表,同步过程中将忽略源数据库中的唯一键表。
  • 不支持同步无主键表,如果选择同步的表中存在无主键表,则同步失败。
  • 不支持唯一约束、唯一索引的同步。
  • 不支持同步既是无主键表,又是分区表的自建表,可能会导致任务失败。
  • 同步对象列名不能为CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID等GaussDB(DWS)禁止的字段,否则会导致任务失败。

-

库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

库表名规范检查

源分库分表中间件中的库名、表名不能包含:'<>/\以及非ASCII字符。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

DDM->DDM

表21 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 源数据库DDM账户至少需要具备一个权限,例如:SELECT。
  • DDM物理分片数据库账号需要具备如下权限:SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

-

目标数据库权限

需要具备如下基本权限:CREATE、DROP、ALTER、INDEX、INSERT、DELETE、UPDATE、SELECT, 同时必须具备扩展权限:全表SELECT权限。目标中间件账户必须具备对所同步数据库的权限。

-

参数类

GTID状态

源物理分片数据库GTID状态建议为开启状态,源物理分片数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

-

性能参数

源物理分片数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

增量同步类

Binlog开启

增量同步时,源物理分片数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源物理分片数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

server_id值设置

增量同步时,必须设置源物理分片数据库的server_id。

  • 如果源物理分片数据库版本小于或等于MySQL5.6,server_id的取值范围在2-4294967296之间。
  • 如果源物理分片数据库版本大于或等于MySQL5.7,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

同步对象类

选择对象检查

  • 全量同步支持数据、表结构和索引的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 源库不允许存在拆分键为timestamp类型的表。

-

库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

库表名规范检查

源分库分表中间件中的库名、表名不能包含:'<>/\以及非ASCII字符。

-

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

DB2 for LUW->GaussDB主备版

表22 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步:需要用户具有CONNECT、DATAACCESS权限。
  • 全量+增量:需要用户具有DBADM权限。
  • 如果源数据库表结构存在DB2SECURITYLABEL字段类型,需要确保该用户具有该表全部数据的读权限。

-

目标数据库权限

  • 库级权限:需要使用root或其他有sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。
  • SCHEMA级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。
  • 表级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下所有表的SELECT,UPDATE,INSERT和DELETE权限。
  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

版本类

源数据库版本

支持9.7、10.1、10.5、11.1、11.5版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

参数类

DataCapture参数

选择全量+增量同步时,需要确保开启源数据库的归档日志,确保需要同步的表的DataCapture属性为Y。

-

同步对象类

选择对象检查

  • 全量同步时支持表、普通索引、主键与唯一约束、数据的同步。
  • 增量同步时支持表的实时同步。
  • 全量同步结构不支持位图索引、倒排索引、函数索引、XML索引。
  • 不支持默认值含有表达式的函数的表的同步。
  • 不支持同步源库中的临时表。
  • 全量+增量任务不支持带XML字段的无主键表。

-

目标数据库对象一致性检查

检查目标库对象是否满足同步要求。

详见目标数据库对象一致性检查

表字段类型检查

  • TIMESTAMP类型支持的最大精度是6。
  • 增量同步支持的LOB类型大小限制为10M以内。
  • 不支持自定义类型。
  • 增量同步不支持长度大于3998的VARCHAR、VARGRAPHIC类型。

详见源数据库表字段类型检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源迁移库无主键表检查

字符集检查

源数据库仅支持同步如下字符集:GBK、UTF8。

详见源数据库字符集是否支持

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源数据库选择对象预检查

库表名规范检查

  • 全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。
  • 库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS 不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

DB2 for LUW->GaussDB分布式版

表23 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步:需要用户具有CONNECT、DATAACCESS权限。
  • 全量+增量:需要用户具有DBADM权限。
  • 如果源数据库表结构存在DB2SECURITYLABEL字段类型,需要确保该用户具有该表全部数据的读权限。

-

目标数据库权限

  • 库级权限:需要使用root或其他有sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。
  • SCHEMA级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。
  • 表级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下所有表的SELECT,UPDATE,INSERT和DELETE权限。
  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

版本类

源数据库版本

支持9.7、10.1、10.5、11.1、11.5版本

详见支持的数据库

目标数据库版本

支持1.0.0及以上版本

详见支持的数据库

参数类

DataCapture参数

选择全量+增量同步时,需要确保开启源数据库的归档日志,确保需要同步的表的DataCapture属性为Y。

-

同步对象类

选择对象检查

  • 全量同步时支持表、普通索引、主键与唯一约束、数据的同步。
  • 增量同步时支持表的实时同步。
  • 全量同步结构不支持位图索引、倒排索引、函数索引、XML索引。
  • 不支持默认值含有表达式的函数的表的同步。
  • 不支持同步源库中的临时表。
  • 全量+增量任务不支持带XML字段的无主键表。

-

目标数据库对象一致性检查

检查目标库对象是否满足同步要求。

详见目标数据库对象一致性检查

表字段类型检查

  • TIMESTAMP类型支持的最大精度是6。
  • 增量同步支持的LOB类型大小限制为10M以内。
  • 不支持自定义类型。
  • 增量同步不支持长度大于3998的VARCHAR、VARGRAPHIC类型。

详见源数据库表字段类型检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源迁移库无主键表检查

字符集检查

源数据库仅支持同步如下字符集:GBK、UTF8。

详见源数据库字符集是否支持

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源数据库选择对象预检查

库表名规范检查

  • 全量同步表结构时,目标库存在与某用户名称同名的schema,用其他用户进行同步表结构到schema时,需要使用grant [role] to [role]的方式为此用户赋权,否则可能因为无法创建表结构而导致同步失败。
  • 库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS 不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

DB2 for LUW->GaussDB(DWS)

表24 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步:需要用户具有CONNECT、DATAACCESS权限。
  • 全量+增量:需要用户具有DBADM权限。
  • 如果源数据库表结构存在DB2SECURITYLABEL字段类型,需要确保该用户具有该表全部数据的读权限。

-

目标数据库权限

  • 目标数据库不存在DATABASE时需要有建库的权限;不存在SCHEMA时需要有在database中创建schema的权限;不存在表时需要有在对应schema中创建表的权限。
  • 对于每张表需要有INSERT、SELECT、UPDATE、DELETE权限。

-

版本类

源数据库版本

支持9.7、10.1、10.5、11.1、11.5版本

详见支持的数据库

目标数据库版本

支持8.1.3、8.2.0版本

详见支持的数据库

参数类

DataCapture参数

选择全量+增量同步时,需要确保开启源数据库的归档日志,确保需要同步的表的DataCapture属性为Y。

-

同步对象类

选择对象检查

  • 全量同步时支持表、普通索引、主键与唯一约束、数据的同步。
  • 增量同步时支持表的实时同步。
  • 全量同步结构不支持位图索引、倒排索引、函数索引、XML索引。
  • 不支持默认值含有表达式的函数的表的同步。
  • 不支持同步源库中的临时表。
  • 全量+增量任务不支持带XML字段的无主键表。
  • 源库单个schema的同步对象数量不能超过32766。

-

目标数据库对象一致性检查

检查目标库对象是否满足同步要求。

详见目标数据库对象一致性检查

表字段类型检查

  • TIMESTAMP类型支持的最大精度是6。
  • 增量同步支持的LOB类型大小限制为10M以内。
  • 不支持自定义类型。
  • 增量同步不支持长度大于3998的VARCHAR、VARGRAPHIC类型。
  • 同步对象列名不能为CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID等GaussDB(DWS)禁止的字段,否则会导致任务失败。

详见源数据库表字段类型检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源迁移库无主键表检查

字符集检查

源数据库仅支持同步如下字符集:GBK、UTF8。

详见源数据库字符集是否支持

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源数据库选择对象预检查

库表名规范检查

库名、表名等数据库对象名称支持英文字符、“#”、“$”、“_”等符号, DRS 不支持非ASCII字符、“. ”、 “>”、 “<”、 “\”、 “`”、 “|”、 “,”、 “? ”、 “! ”、 “"”和 “'”等字符。对象名同步到目标库后会转换成小写,为避免同步失败,选择的源库表中不能存在表名称字母相同但大小写不同的表。

-

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

TiDB->GaussDB(for MySQL)

表25 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT,CONFIG权限。

-

目标数据库权限

SELECT,CREATE,DROP,INSERT,DELETE,UPDATE,ALTER,REFERENCES,INDEX权限。

-

版本类

源数据库版本

4.0.0及以上版本(不包括dev版本)。

详见支持的数据库

目标数据库版本

8.0版本。

详见支持的数据库

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

同步对象类

选择对象检查

  • 支持选中表的表结构、数据、约束和索引。
  • 支持的字段类型

    BIGINT、BINARY、BIT、BLOB、BOOLEAN、CHAR、DATE、DATETIME、DECIMAL、DOUBLE、ENUM、FLOAT、INT、JSON、LONGBLOB、LONGTEXT、MEDIUMBLOB、MEDIUMINT、SET、SMALLINT、TEXT、TIME、TIMESTAMP、TINYBLOB、TINYINT、TINYTEXT、VARBINARY、VARCHAR、YEAR。

-

库表名规范检查

  • 库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。
  • 同步对象的库名、表名不能包含:'<`>/\以及非ASCII字符。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源迁移库无主键表检查

同名检查

目标数据库不能包含与源数据库同名的表。

详见目标数据库是否存在和源数据库同名的表

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Microsoft SQL Server->GaussDB(DWS)

表26 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

需要具备sysadmin权限,或者view server state权限以及待同步数据库的db_datareader或db_owner权限。

-

目标数据库权限

  • 目标库不存在待同步数据库时,需要CREATEDB权限。
  • 目标库存在数据库但不存在SCHEMA时,需要数据库的CONNECT和CREATE权限。
  • 目标库存在数据库和SCHEMA但不存在表时,需要数据库的CONNECT权限,SCHEMA的USAGE和CREATE权限。
  • 目标库数据库、SCHEMA和表都存在时,需要数据库的CONNECT权限,SCHEMA的USAGE权限,表的INSERT、UPDATE、DELETE、SELECT、ALTER、REFERENCES和INDEX权限。

-

版本类

源数据库版本

  • 本地自建Microsoft SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • ECS自建Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • 其他云上Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • RDS for SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)

详见支持的数据库

目标数据库版本

支持8.1.3、8.2.0版本

详见支持的数据库

增量同步类

CDC开启

SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。

详见源库表是否开启了CDC

CDC数据保留时间检查

源数据库CDC数据保留时间不足1天,会导致增量同步异常。请修改为1440分钟(1天)或以上,建议4320分钟(3天)。

详见源库CDC数据保留时间是否足够

一致性检查

计算机名

源数据库和目标数据库的计算机名不能相同。

详见源库服务器计算机名是否一致

同步对象类

选择对象检查

  • 支持选中表的表结构、数据和索引。
  • 同步对象选择的表个数不能超过1000。对于超过1000个表的情况,建议分批次同步(待上一个同步任务结束后,再重新创建任务)。
  • 不支持列加密。
  • 不支持同步自增属性列。
  • 支持的字段类型

    TINYINT、SMALLINT、INT、BIGINT、DECIMAL、NUMERIC、FLOAT、REAL、SMALLMONEY、MONEY、BIT、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、XML、CHAR、VARCHAR、NCHAR、NVARCHAR、BINARY、VARBINARY、IMAGE、HIERARCHYID、NTEXT、TEXT、UNIQUEIDENTIFIER。

  • 不支持的字段类型:SQL_VARIANT、GEOMETRY、GEOGRAPHY。

-

库表名规范检查

  • 源数据库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。
  • 源数据库待同步对象的表中列名不能包含如下字符:[]?。
  • 源数据库中不允许存在名称为cdc的用户名或schema。
  • 同步对象列名不能为CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID等GaussDB(DWS)禁止的字段,否则会导致任务失败。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

同名检查

除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的对象。

详见目标数据库是否存在和源数据库同名的对象

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

源数据库实例不允许为空。

详见源数据库实例是否为空

源数据库的备份恢复模式必须设置为FULL模式。

详见源数据库恢复模式检查

源数据库必须开启SQL Server Agent代理服务。

详见源数据库SQL Server代理运行状态检查

源数据库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。

详见源数据库是否存在被禁用的聚集索引

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Microsoft SQL Server->GaussDB主备版

表27 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下最小权限:

    需要具备sysadmin权限,或者待同步数据库的db_datareader或db_owner权限。

  • 全量+增量、增量同步需要具备如下最小权限:

    需要具备sysadmin权限,或者view server state权限以及待同步数据库的db_datareader或db_owner权限。

-

目标数据库权限

  • 库级权限:需要使用root或其他有sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。
  • SCHEMA级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。
  • 表级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下所有表的SELECT,UPDATE,INSERT和DELETE权限。
  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

版本类

源数据库版本

  • 本地自建Microsoft SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • ECS自建Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • 其他云上Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • RDS for SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)

详见支持的数据库

目标数据库版本

1.1.0及以上版本。

详见支持的数据库

增量同步类

CDC开启

SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。

详见源库表是否开启了CDC

CDC数据保留时间检查

源数据库CDC数据保留时间不足1天,会导致增量同步异常。请修改为1440分钟(1天)或以上,建议4320分钟(3天)。

详见源库CDC数据保留时间是否足够

一致性检查

计算机名

源数据库和目标数据库的计算机名不能相同。

详见源库服务器计算机名是否一致

同步对象类

选择对象检查

  • 支持选中表的表结构、数据和索引。
  • 同步对象选择的表个数不能超过1000。对于超过1000个表的情况,建议分批次同步(待上一个同步任务结束后,再重新创建任务)。
  • 不支持列加密。
  • 不支持同步自增属性列。
  • 支持的字段类型

    TINYINT、SMALLINT、INT、BIGINT、DECIMAL、NUMERIC、FLOAT、REAL、SMALLMONEY、MONEY、BIT、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、XML、CHAR、VARCHAR、NCHAR、NVARCHAR、BINARY、VARBINARY、IMAGE、HIERARCHYID、NTEXT、TEXT、UNIQUEIDENTIFIER。

  • 不支持的字段类型:SQL_VARIANT、GEOMETRY、GEOGRAPHY。

-

库表名规范检查

  • 源数据库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。
  • 源数据库待同步对象的表中列名不能包含如下字符:[]?。
  • 源数据库中不允许存在名称为cdc的用户名或schema。
  • 同步对象列名不能为CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID等GaussDB(DWS)禁止的字段,否则会导致任务失败。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

同名检查

除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的对象。

详见目标数据库是否存在和源数据库同名的对象

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

源数据库实例不允许为空。

详见源数据库实例是否为空

源数据库的备份恢复模式必须设置为FULL模式。

详见源数据库恢复模式检查

源数据库必须开启SQL Server Agent代理服务。

详见源数据库SQL Server代理运行状态检查

源数据库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。

详见源数据库是否存在被禁用的聚集索引

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Microsoft SQL Server->GaussDB分布式版

表28 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

  • 全量同步需要具备如下最小权限:

    需要具备sysadmin权限,或者待同步数据库的db_datareader或db_owner权限。

  • 全量+增量、增量同步需要具备如下最小权限:

    需要具备sysadmin权限,或者view server state权限以及待同步数据库的db_datareader或db_owner权限。

-

目标数据库权限

  • 库级权限:需要使用root或其他有sysadmin角色的DATABASE用户登录postgres基库,赋予用户DATABASE的CREATE、CONNECT权限。
  • SCHEMA级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库,赋予用户SCHEMA的CREATE、USAGE权限。
  • 表级权限:需要使用 root、或其他有sysadmin角色的DATABASE用户、或使用数据库的OWNER用户登录数据库 ,赋予用户SCHEMA下所有表的SELECT,UPDATE,INSERT和DELETE权限。
  • 目标库使用gsloader等工具创建相关系统表(如 public.pgxc_copy_error_log,public.gs_copy_summary)时,DRS访问相关系统表需要有系统表的all privilege权限,详细信息可参考《GaussDB工具参考》

-

版本类

源数据库版本

  • 本地自建Microsoft SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • ECS自建Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • 其他云上Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • RDS for SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)

详见支持的数据库

目标数据库版本

1.1.0及以上版本。

详见支持的数据库

增量同步类

CDC开启

SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。

详见源库表是否开启了CDC

CDC数据保留时间检查

源数据库CDC数据保留时间不足1天,会导致增量同步异常。请修改为1440分钟(1天)或以上,建议4320分钟(3天)。

详见源库CDC数据保留时间是否足够

一致性检查

计算机名

源数据库和目标数据库的计算机名不能相同。

详见源库服务器计算机名是否一致

同步对象类

选择对象检查

  • 支持选中表的表结构、数据和索引。
  • 同步对象选择的表个数不能超过1000。对于超过1000个表的情况,建议分批次同步(待上一个同步任务结束后,再重新创建任务)。
  • 不支持列加密。
  • 不支持同步自增属性列。
  • 支持的字段类型

    TINYINT、SMALLINT、INT、BIGINT、DECIMAL、NUMERIC、FLOAT、REAL、SMALLMONEY、MONEY、BIT、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、XML、CHAR、VARCHAR、NCHAR、NVARCHAR、BINARY、VARBINARY、IMAGE、HIERARCHYID、NTEXT、TEXT、UNIQUEIDENTIFIER。

  • 不支持的字段类型:SQL_VARIANT、GEOMETRY、GEOGRAPHY。

-

库表名规范检查

  • 源数据库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。
  • 源数据库待同步对象的表中列名不能包含如下字符:[]?。
  • 源数据库中不允许存在名称为cdc的用户名或schema。
  • 同步对象列名不能为CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID等GaussDB(DWS)禁止的字段,否则会导致任务失败。

-

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

同名检查

除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的对象。

详见目标数据库是否存在和源数据库同名的对象

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

源数据库实例不允许为空。

详见源数据库实例是否为空

源数据库的备份恢复模式必须设置为FULL模式。

详见源数据库恢复模式检查

源数据库必须开启SQL Server Agent代理服务。

详见源数据库SQL Server代理运行状态检查

源数据库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。

详见源数据库是否存在被禁用的聚集索引

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

Microsoft SQL Server->Microsoft SQL Server

表29 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

最少需要具备sysadmin权限,或者view server state权限以及待同步数据库的db_datareader或db_owner权限。

-

目标数据库权限

如果库不存在,需要对库级别开启create any database权限;

如果库存在需要库级别开启connect,create table,alter any schema 和select权限。

-

版本类

源数据库版本

  • 本地自建Microsoft SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • ECS自建Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • 其他云上Microsoft SQL Server数据库(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)
  • RDS for SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)

详见支持的数据库

目标数据库版本

RDS for SQL Server(企业版2012、2014、2016、2017、2019版本,标准版2016 SP2及以上版本、2017、2019版本)

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

目标数据库检查

状态检查

目标数据库实例的状态必须正常。

-

增量同步类

CDC开启

SQL Server为源的增量同步基于SQL Server提供的CDC能力,如果SQL Server源库的CDC功能出现异常(如被关闭、事务日志满等情况),则增量同步就会受到影响。

详见源库表是否开启了CDC

CDC数据保留时间检查

源数据库CDC数据保留时间不足1天,会导致增量同步异常。请修改为1440分钟(1天)或以上,建议4320分钟(3天)。

详见源库CDC数据保留时间是否足够

一致性检查

计算机名

源数据库和目标数据库的计算机名不能相同。

详见源库服务器计算机名是否一致

同步对象类

选择对象检查

  • 支持选中表的表结构、数据和索引。
  • 同步对象选择的表个数不能超过1000。对于超过1000个表的情况,建议分批次同步(待上一个同步任务结束后,再重新创建任务)。
  • 不支持列加密。
  • 不支持同步自增属性列。
  • 支持的字段类型

    TINYINT、SMALLINT、INT、BIGINT、DECIMAL、NUMERIC、FLOAT、REAL、SMALLMONEY、MONEY、BIT、DATE、DATETIME、DATETIME2、DATETIMEOFFSET、TIME、TIMESTAMP、XML、CHAR、VARCHAR、NCHAR、NVARCHAR、BINARY、VARBINARY、IMAGE、HIERARCHYID、NTEXT、TEXT、UNIQUEIDENTIFIER。

  • 不支持的字段类型:SQL_VARIANT、GEOMETRY、GEOGRAPHY。

-

库表名规范检查

  • 源数据库待同步对象的库名、schema名、表名只能包含如下字符:字母、数字、下划线和中划线,库名长度不能超过64个字符。
  • 源数据库待同步对象的表中列名不能包含如下字符:[]?。
  • 源数据库中不允许存在名称为cdc的用户名或schema。
  • 同步对象列名不能为CTID、XMIN、CMIN、XMAX、CMAX、TABLEOID、XC_NODE_ID、TID等GaussDB(DWS)禁止的字段,否则会导致任务失败。

-

同名检查

除了SQL Server系统数据库之外,目标数据库不能包含与源数据库同名的对象。

详见目标数据库是否存在和源数据库同名的对象

源数据库检查

选择的同步对象在源数据库中必须存在。

详见源库选择对象预检查

源数据库实例不允许为空。

详见源数据库实例是否为空

源数据库的备份恢复模式必须设置为FULL模式。

详见源数据库恢复模式检查

源数据库必须开启SQL Server Agent代理服务。

详见源数据库SQL Server代理运行状态检查

不支持同步源数据库中开启TDE(Transparent Data Encryption)加密的数据库。如果不需要同步TDE加密的库,请在对象选择中去掉。如果需要同步TDE加密的库,请先将TDE关闭。

详见源数据库存在加密的数据库对象

源数据库中不允许存在被禁用的表的聚簇索引,否则会导致同步失败。

详见源数据库是否存在被禁用的聚集索引

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MongoDB->DDS

表30 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

副本集:连接源数据库的用户需要有admin库的readAnyDatabase权限,有local库的read权限。

-

目标数据库权限

连接目标数据库的用户需要有admin库的dbAdminAnyDatabase权限,有目标数据库的readWrite权限。

-

版本类

源数据库版本

  • 自建Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4版本)
  • 其他云上Mongo数据库(3.2、3.4、3.6、4.0、4.2、4.4版本)
  • DDS(3.2、3.4、4.0、4.2、4.4版本)
    说明:

    源数据库不支持GeminiDB Mongo。

详见支持的数据库

目标数据库版本

DDS(3.4、4.0、4.2、4.4版本)

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常,如果数据库实例是主备实例,复制状态也必须正常。

-

chunk数目检查

检查目标数据库的最大chunk数目是否足以支撑源库数据的分片分裂,当chunk个数达到目标库的最大支撑数目时,chunk不再分裂,会影响写入性能。

详见目标库最大支持chunk数目检查

同步对象类

选择对象检查

  • 副本集:目前只支持集合(包括验证器,是否是固定集合),索引和视图的同步。
  • 不支持同步系统库(如local、admin、config等)和系统集合,如果业务数据在系统库下,则需要先将业务数据移动到用户数据库下,可以使用renameCollection命令进行移出。
  • 不支持视图的创建语句中有正则表达式。
  • 不支持_id字段没有索引的集合。
  • 不支持BinData()的第一个参数为2。
  • 源库为4.4版本集群时,不支持复合哈希索引,不支持复合哈希分片键。
  • 源库为4.4版本副本集时,不支持复合哈希索引。

-

对象依赖关系检查

在进行用户迁移时,如果所选迁移的用户与某些角色存在依赖关系,需要同时选择迁移该用户及所依赖的角色,否则会导致迁移失败。

-

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用集合、视图引用视图。

详见迁移对象未选择外键依赖的表

库表名规范检查

  • 源数据库的库名不能包含/\."$和空格。
  • 源数据库中的集合名或视图名中不能包含$或以system.开头。
  • 同步对象映射名称长度在1到63个字符之间,不支持以下字符:/ \ . " $<>。
  • 请勿在源库集合的String类型字段中存储非UTF-8类型字符串,否则会导致同步前后数据不一致。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

对于在源数据库已经存在TTL索引的集合,或者在增量同步期间在源库数据创建了TTL索引的集合,由于源数据库和目标库数据库时区,时钟的不一致,不能保证同步完成之后数据的一致性。

详见源数据库集合TTL索引检查

源数据库实例不允许为空。

详见源数据库实例是否为空

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MariaDB->MariaDB

表31 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT、SHOW VIEW、EVENT、LOCK TABLES、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT(或BINLOG MONIOTOR,MariaDB 10.5及以上版本更改为此权限)。

-

目标数据库权限

SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES、INDEX,RDS for MariaDB实例的root账户默认已具备上述权限。

-

版本类

源数据库版本

支持10.3、10.4、10.5版本

详见支持的数据库

目标数据库版本

支持10.5版本

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS同步时会有大量数据写入目标库,目标库max_allowed_packet参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MariaDB源数据库的server_id,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常,如果数据库实例是主备实例,复制状态也必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件、触发器的同步。
  • 视图、存储过程、函数依赖的表不支持做表名映射。

-

  • 表名映射时,不支持该表的外键约束同步。
  • 库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

加密表检查

源数据库是否存在加密表。

详见源库加密表检查

同名检查

除了系统数据库之外,当目标数据库和源数据库同名时,目标数据库中如果存在与源数据库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的表

库表名规范检查

  • 源数据库中的库名不能包含:'<`>/\"以及非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>/\"以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 映射到目标库中的库名不能包含:“.”、 “<”、“>”、“”、和“'”。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MariaDB->MySQL

表32 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT、SHOW VIEW、EVENT、LOCK TABLES、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT(或BINLOG MONIOTOR,MariaDB 10.5及以上版本更改为此权限)。

-

目标数据库权限

SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES,RDS for MySQL实例的root账户默认已具备上述权限。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

-

版本类

源数据库版本

支持10.0、10.1、10.2、10.3、10.4、10.5版本

详见支持的数据库

目标数据库版本

支持5.5、5.6、5.7、8.0版本

详见支持的数据库

参数类

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS同步时会有大量数据写入目标库,目标库max_allowed_packet参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MariaDB源数据库的server_id,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常,如果数据库实例是主备实例,复制状态也必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时钟

目标库和源库的时钟需要一致。

-

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件、触发器的同步。
  • 视图、存储过程、函数依赖的表不支持做表名映射。

-

  • 表名映射时,不支持该表的外键约束同步。
  • 库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

加密表检查

源数据库是否存在加密表。

详见源库加密表检查

同名检查

除了系统数据库之外,当目标数据库和源数据库同名时,目标数据库中如果存在与源数据库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的表

库表名规范检查

  • 源数据库中的库名不能包含:'<`>/\"以及非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>/\"以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 映射到目标库中的库名不能包含:“.”、 “<”、“>”、“”、和“'”。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

MariaDB->GaussDB(for MySQL)

表33 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT、SHOW VIEW、EVENT、LOCK TABLES、RELOAD、REPLICATION SLAVE、REPLICATION CLIENT(或BINLOG MONIOTOR,MariaDB 10.5及以上版本更改为此权限)。

-

目标数据库权限

SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES,GaussDB(for MySQL)实例的root账户默认已具备上述权限。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

-

版本类

源数据库版本

支持10.0、10.1、10.2、10.3、10.4、10.5版本

详见支持的数据库

目标数据库版本

支持8.0版本

详见支持的数据库

参数类

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS同步时会有大量数据写入目标库,目标库max_allowed_packet参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。

详见检查目标库的max_allowed_packet参数

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置MariaDB源数据库的server_id,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

目标数据库检查

磁盘空间检查

目标数据库实例必须有足够的磁盘空间。

详见目标数据库磁盘可用空间是否足够

状态检查

目标数据库实例的状态必须正常,如果数据库实例是主备实例,复制状态也必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时钟

目标库和源库的时钟需要一致。

-

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件、触发器的同步。
  • 视图、存储过程、函数依赖的表不支持做表名映射。

-

  • 表名映射时,不支持该表的外键约束同步。
  • 库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

加密表检查

源数据库是否存在加密表。

详见源库加密表检查

同名检查

除了系统数据库之外,当目标数据库和源数据库同名时,目标数据库中如果存在与源数据库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的表

库表名规范检查

  • 源数据库中的库名不能包含:'<`>/\"以及非ASCII字符。
  • 源数据库中的表名、视图名不能包含:'<>/\"以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 映射到目标库中的库名不能包含:“.”、 “<”、“>”、“”、和“'”。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

GaussDB(for MySQL)->GaussDB(for MySQL)

表34 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

SELECT、SHOW VIEW、EVENT、LOCK TABLES、REPLICATION SLAVE、REPLICATION CLIENT。

-

目标数据库权限

SELECT、CREATE、DROP、DELETE、INSERT、UPDATE、ALTER、CREATE VIEW、CREATE ROUTINE、REFERENCES,GaussDB(for MySQL)实例的root账户默认已具备上述权限。

当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

-

版本类

源数据库版本

支持8.0版本

详见支持的数据库

目标数据库版本

支持8.0版本

详见支持的数据库

同步版本检查

仅支持目标数据库版本等于或高于源数据库版本。

详见版本是否符合从低到高或者同版本迁移

参数类

GTID状态

源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。

详见源库的GTID功能检查

性能参数

源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。

详见校验源数据库参数log_slave_updates

源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。

详见binlog_row_image参数是否为full

最大允许传输包的大小

DRS同步时会有大量数据写入目标库,目标库max_allowed_packet参数过小会导致无法写入,建议将目标库max_allowed_packet参数值设置为大于100MB。

详见检查目标库的max_allowed_packet参数

DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。

详见检查源库的max_allowed_packet参数

sql_mode取值检查

同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。

详见源数据库是否存在不允许使用的sql_mode值

增量同步类

Binlog开启

增量同步时,源数据库的Binlog日志必须打开。

详见源数据库binlog日志是否开启

Binlog格式

源数据库的Binlog格式必须为行格式。

详见源数据库binlog格式检查

Binlog保留时长

在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。

详见源数据库binlog保留时间检查

server_id值设置

增量同步时,必须设置源数据库的server_id,server_id的取值范围在1-4294967296之间。

详见源数据库参数server_id是否符合增量迁移要求

表字段检查

同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。

-

索引列长度检查

源数据库索引列长度必须符合要求。

详见源数据库索引列长度检查

目标数据库检查

状态检查

目标数据库实例的状态必须正常,如果数据库实例是主备实例,复制状态也必须正常。

-

一致性检查

字符集

目标库和源库的字符集需要一致。

详见源数据库和目标数据库的字符集是否一致

字符序

目标库和源库的collation_server需要一致。

详见collation_server的一致性检查

时钟

目标库和源库的时钟需要一致。

-

时区

目标库和源库的time_zone需要一致。

详见time_zone的一致性检查

大小写敏感

目标库和源库的lower_case_table_names参数设置需要一致。

详见源数据库和目标数据库表名大小写敏感性检查

group_concat函数计算结果字符的最大长度

目标库和源库的group_concat_max_len参数需要一致。

详见数据库参数group_concat_max_len一致性检查

InnoDB检查模式

目标库和源库innodb_strict_mode需要一致。

详见数据库参数innodb_strict_mode一致性检查

SQL模式

目标库和源库sql_mode需要一致。

详见数据库参数sql_mode的一致性检查

数据块加密参数

目标库和源库block_encryption_mode需要一致。

-

同步对象类

选择对象检查

  • 支持表、主键索引、唯一索引、普通索引、存储过程、视图、函数的同步。
  • 仅支持MyISAM和InnoDB表的同步。
  • 不支持事件、触发器的同步。
  • 视图、存储过程、函数依赖的表不支持做表名映射。

-

  • 表名映射时,不支持该表的外键约束同步。
  • 库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。

详见映射数据库对象检查

无主键表检查

由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。

详见源库无主键表检查

关联对象检查

相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。

详见迁移对象未选择外键依赖的表

外键引用操作检查

不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。

详见源端存在不支持的外键引用操作

加密表检查

源数据库是否存在加密表。

详见源库加密表检查

同名检查

除了系统数据库之外,当目标数据库和源数据库同名时,目标数据库中如果存在与源数据库同名的表,则表结构必须与源库保持一致。

详见目标数据库是否存在和源数据库同名的表

库表名规范检查

  • 源数据库中的库名、表名、视图名不能包含:'<`>/\"以及非ASCII字符。
  • 源数据库中的库名或映射后的名称不允许以ib_logfile开头,也不能为ib_buffer_pool、ib_doublewrite、ibdata1、ibtmp1。
  • 使用非字母、非数字、非下划线等字符作为库表名称,或库表映射后名称包含中划线、井号时,名称的长度请不要超过42个字符。

-

源数据库检查

预检查阶段进行同步对象检查时,源数据库连接正常。

详见源库选择对象预检查

SSL连接检查

SSL安全连接检查

选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。

详见SSL安全连接检查

网络情况

网络检查

目标数据库的IP,端口,用户名和密码连接成功。

详见目标数据库连接是否成功

源数据库的IP,端口,用户名和密码连接成功。

详见源数据库连接是否成功

相关文档