DRS预检查项一览表
DRS同步过程一般包含四个阶段:任务启动阶段、全量阶段、增量阶段、结束任务阶段(单全量任务则包含三个阶段)。为了确保同步各个阶段的平顺,DRS在任务正式启动前,会对任务源数据库、目标数据库中的参数、对象等信息进行自动化的扫描和检测,帮助您提高数据同步的成功率。
MySQL->MySQL
分类 |
预检查项 |
检查项详情 |
不通过解决方法 |
---|---|---|---|
权限类 |
源数据库权限 |
详见MySQL权限授权方法。 |
|
目标数据库权限 |
详见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参数需设置为开启状态,否则会导致同步失败。 |
||
源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。 |
|||
最大允许传输包的大小 |
DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。 |
||
DRS在同步数据量大或同步大字段情况下,目标数据库的max_allowed_packet参数值过小导致目标库数据无法写入造成全量同步失败。 |
|||
sql_mode取值检查 |
同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。 |
||
增量同步类 |
索引列长度检查 |
源数据库索引列长度必须符合要求。 |
详见源数据库索引列长度检查。 |
Binlog开启 |
增量同步时,源数据库的Binlog日志必须打开。 |
||
Binlog格式 |
源数据库的Binlog格式必须为行格式。 |
||
Binlog保留时长 |
在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。
|
||
server_id值设置 |
增量同步时,必须设置MySQL源数据库的server_id。
|
||
表字段检查 |
同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。 |
- |
|
附加列检查 |
单增量同步任务中如果目标数据库不存在新增附加列,会导致任务失败。 |
详见目标数据库附加列检查。 |
|
目标数据库检查 |
磁盘空间检查 |
目标数据库实例必须有足够的磁盘空间。 |
|
状态检查 |
目标数据库实例实例状态必须正常。 |
- |
|
一致性检查 |
字符集 |
目标库和源库的字符集需要一致。 |
|
字符序 |
目标库和源库的collation_server需要一致。 |
||
时钟 |
目标库和源库的时钟需要一致。 |
- |
|
时区 |
目标库和源库的time_zone需要一致。 |
||
大小写敏感 |
目标库和源库的lower_case_table_names参数设置需要一致。 |
||
group_concat函数计算结果字符的最大长度 |
目标库和源库的group_concat_max_len参数需要一致。 |
||
InnoDB检查模式 |
目标库和源库innodb_strict_mode需要一致。 |
||
数据块加密参数 |
目标库和源库block_encryption_mode需要一致。 |
- |
|
SQL模式 |
目标库和源库sql_mode需要一致。 |
||
同步对象类 |
选择对象检查 |
|
- |
库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。 |
详见映射数据库对象检查。 |
||
无主键表检查 |
由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。 |
详见源库无主键表检查。 |
|
关联对象检查 |
相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。 |
||
外键引用操作检查 |
不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 |
||
同名检查 |
除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。 |
||
库表名规范检查 |
|
- |
|
SSL连接检查 |
SSL安全连接检查 |
选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。 |
详见SSL安全连接检查。 |
网络情况 |
网络检查 |
目标数据库的IP,端口,用户名和密码连接成功。 |
详见目标数据库连接是否成功。 |
源数据库的IP,端口,用户名和密码连接成功。 |
详见源数据库连接是否成功。 |
MySQL->PostgreSQL
分类 |
预检查项 |
检查项详情 |
不通过解决方法 |
---|---|---|---|
权限类 |
源数据库权限 |
详见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,否则会导致同步失败。 |
||
最大允许传输包的大小 |
DRS在同步数据量大或同步大字段情况下,源数据库max_allowed_packet参数过小可能会导致任务失败。 |
||
增量同步类 |
Binlog开启 |
增量同步时,源数据库的Binlog日志必须打开。 |
|
Binlog格式 |
源数据库的Binlog格式必须为行格式。 |
||
server_id值设置 |
增量同步时,必须设置MySQL源数据库的server_id。
|
||
表字段检查 |
|
- |
|
目标数据库检查 |
磁盘空间检查 |
目标数据库实例必须有足够的磁盘空间。 |
|
状态检查 |
目标数据库实例实例状态必须正常。 |
- |
|
一致性检查 |
字符集 |
目标库和源库的字符集需要一致。 |
|
时区 |
目标库和源库的time_zone需要一致。 |
||
表结构检查 |
目标库和源库的表结构需要一致。 |
详见表结构一致性检查。 |
|
同步对象类 |
选择对象检查 |
|
- |
无主键表检查 |
由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。 |
详见源库无主键表检查。 |
|
有主键表正确性检查 |
不建议在数据库中使用非精确数值类型做主键,该特性影响 DRS 增量场景下对 UPDATE、DELETE语句的同步,导致任务失败。 |
- |
|
外键引用操作检查 |
不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 |
||
同名检查 |
除了MySQL系统数据库之外,目标数据库不能包含与源数据库同名的数据库。 |
||
库表名规范检查 |
源数据库中的库名和表名不能包含:'<`>/\"以及非ASCII字符。 |
- |
|
对象名长度检查 |
目标数据库对象名最大支持63个字符。 |
详见源数据库对象名长度检查。 |
|
源数据库检查 |
预检查阶段进行同步对象检查时,源数据库连接正常。 |
详见源库选择对象预检查。 |
|
SSL连接检查 |
SSL安全连接检查 |
选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。 |
详见SSL安全连接检查。 |
网络情况 |
网络检查 |
目标数据库的IP,端口,用户名和密码连接成功。 |
详见目标数据库连接是否成功。 |
源数据库的IP,端口,用户名和密码连接成功。 |
详见源数据库连接是否成功。 |
MySQL->MariaDB
分类 |
预检查项 |
检查项详情 |
不通过解决方法 |
---|---|---|---|
权限类 |
源数据库权限 |
详见MySQL权限授权方法。 |
|
目标数据库权限 |
详见MySQL权限授权方法。 |
||
版本类 |
源数据库版本 |
支持5.5、5.6、5.7、8.0版本。 |
详见支持的数据库。 |
目标数据库版本 |
支持10.5版本。 |
详见支持的数据库。 |
|
参数类 |
GTID状态 |
源数据库GTID状态建议为开启状态,源数据库实例没有开启GTID的情况下不支持主备倒换,DRS任务会因为位点不续接而中断导致无法恢复。 |
详见源库的GTID功能检查。 |
性能参数 |
源数据库log_slave_updates参数需设置为开启状态,否则会导致同步失败。 |
||
源数据库的binlog_row_image参数需设置为full,否则会导致同步失败。 |
|||
sql_mode取值检查 |
同步的对象中包含引擎为MyISAM的表,则目标数据库sql_mode不能包含no_engine_substitution参数,否则可能会导致同步失败。 |
||
增量同步类 |
索引列长度检查 |
源数据库索引列长度必须符合要求。 |
详见源数据库索引列长度检查。 |
Binlog开启 |
增量同步时,源数据库的Binlog日志必须打开。 |
||
Binlog格式 |
源数据库的Binlog格式必须为行格式。 |
||
Binlog保留时长 |
在磁盘空间允许的情况下,建议源数据库Binlog保存时间越长越好,建议为3天,设置为0,可能会导致同步失败。
|
||
server_id值设置 |
增量同步时,必须设置MySQL源数据库的server_id。
|
||
表字段检查 |
同步对象中如果存在包含longtext、longblob类型字段的表,建议创建大规格及以上规格的DRS任务进行同步,否则可能会导致capture OOM。 |
- |
|
附加列检查 |
单增量同步任务中如果目标数据库不存在新增附加列,会导致任务失败。 |
详见目标数据库附加列检查。 |
|
目标数据库检查 |
磁盘空间检查 |
目标数据库实例必须有足够的磁盘空间。 |
|
状态检查 |
目标数据库实例实例状态必须正常。 |
- |
|
一致性检查 |
字符集 |
目标库和源库的字符集需要一致。 |
|
字符序 |
目标库和源库的collation_server需要一致。 |
||
时钟 |
目标库和源库的时钟需要一致。 |
- |
|
大小写敏感 |
目标库和源库的lower_case_table_names参数设置需要一致。 |
||
group_concat函数计算结果字符的最大长度 |
目标库和源库的group_concat_max_len参数需要一致。 |
||
InnoDB检查模式 |
目标库和源库innodb_strict_mode需要一致。 |
||
SQL模式 |
目标库和源库sql_mode需要一致。 |
||
同步对象类 |
选择对象检查 |
|
- |
库名映射时,同步的对象中如果存在存储过程、视图、函数对象,全量阶段这些对象不会同步,会导致对象对比不一致。 |
详见映射数据库对象检查。 |
||
无主键表检查 |
由于无主键表的性能低于主键表的性能,建议将无主键表修改为主键表。 |
详见源库无主键表检查。 |
|
关联对象检查 |
相互关联的数据对象要确保同时同步,避免因关联对象缺失,导致同步失败。常见的关联关系:视图引用表、视图引用视图、存储过程/函数/触发器引用视图/表、主外键关联表等。 |
||
外键引用操作检查 |
不支持外键级联操作。当外键是普通索引的时候,可能会导致表结构创建失败,建议改成唯一索引。 |
||
同名检查 |
除了MySQL系统数据库之外,当目标库和源库同名时,目标数据库中若存在与源库同名的表,则表结构必须与源库保持一致。 |
||
库表名规范检查 |
|
- |
|
SSL连接检查 |
SSL安全连接检查 |
选择SSL安全连接时,源数据库和目标数据库的SSL安全连接成功。 |
详见SSL安全连接检查。 |
网络情况 |
网络检查 |
目标数据库的IP,端口,用户名和密码连接成功。 |
详见目标数据库连接是否成功。 |
源数据库的IP,端口,用户名和密码连接成功。 |
详见源数据库连接是否成功。 |