更新时间:2024-05-10 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实例的账号默认已具有权限。

详见MySQL权限授权方法

版本类

源数据库版本

支持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->MariaDB

表3 预检查一览表

分类

预检查项

检查项详情

不通过解决方法

权限类

源数据库权限

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

    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账户默认已具备上述权限。

详见MySQL权限授权方法

版本类

源数据库版本

支持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,端口,用户名和密码连接成功。

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

分享:

    相关文档

    相关产品