更新时间:2025-08-07 GMT+08:00

DRS预检查项一览表

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

概览

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

  • 源数据库为MySQL的迁移链路预检查一览表:

MySQL->MySQL

表1 预检查一览表

分类

预检查项

检查项详情

权限类

源数据库权限

  • 全量迁移需要具备如下最小权限:

    SELECT、SHOW VIEW、EVENT。

  • 全量+增量迁移需要具备如下最小权限:

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

  • 用户迁移时,账户需要有mysql.user的SELECT权限。

目标数据库权限

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

    SELECT、CREATE、ALTER、DROP、DELETE、INSERT、UPDATE、INDEX、EVENT、CREATE VIEW、CREATE ROUTINE、TRIGGER、REFERENCES、WITH GRANT OPTION。当目标库为8.0.14-8.0.18版本时,还需要有SESSION_VARIABLES_ADMIN权限。

  • 用户迁移时,需要有mysql库的SELECT、INSERT、UPDATE、DELETE权限。

版本类

源数据库版本

支持5.5、5.6、5.7、8.0版本

目标数据库版本

支持5.5、5.6、5.7、8.0版本

迁移版本检查

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

参数类

GTID状态

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

性能参数

源数据库建议开启skip-name-resolve,减少连接超时的可能性。

源数据库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日志格式必须为Row格式。

Binlog保留时长

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

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

server_id值设置

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

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

session变量设置

增量迁移时,如果设置session变量character_set_client为binary,可能导致乱码。

目标数据库检查

磁盘空间检查

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

状态检查

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

一致性检查

字符集

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

字符序

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

时区

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

大小写敏感

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

事务隔离级别

目标库和源库事务隔离级别需要一致。

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

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

server_uuid参数

目标库和源库server_uuid参数不能相同。

InnoDB检查模式

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

数据块加密参数

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

SQL模式

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

迁移对象类

选择对象检查

  • 支持数据库、表、用户、视图、索引、约束、函数、存储过程、触发器(trigger)和事件(event)的迁移。
  • 仅支持MyISAM和InnoDB表的迁移。
  • 不支持系统库的迁移以及事件状态的迁移。

无主键表检查

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

关联对象检查

相互关联的数据对象要确保同时迁移,避免迁移因关联对象缺失,导致迁移失败。

外键引用操作检查

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

同名检查

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

表名规范检查

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

加密表检查

当源库存在加密的表,需要确认目标库是否支持。如果目标库不支持,存在任务失败等风险。