You need to enable JavaScript to run this app.
导航
预检查项(MySQL)
最近更新时间:2024.07.19 18:18:54首次发布时间:2021.11.21 10:32:58

数据库传输服务 DTS 创建或配置 MySQL 的迁移或同步任务时,会先对数据库进行各项检查。本文介绍检查项的详细信息。

说明

预检查的检查结果等级包含 Error 和 Warning,具体如下所示:

  • Error:表示检查结果等级为错误级别,在创建任务预检查时遇到该报错类型,不可忽略,必须根据提示修改相关信息后重新预检查。
  • Warning:表示预检查结果等级为提示级别,在创建任务预检查时遇到该报错类型,可忽略。
检查项数据库类型检查范围级别检查内容备注

目标库 ReadOnly 配置检查

目标库

  • 所有迁移

  • 所有同步

Error

检查目标数据库的 ReadyOnly 配置是否满足迁移或同步要求。

当 ReadOnly 中的参数取值满足以下任意条件时,则预检查不通过:

  • super_read_only:取值为 ON 时。

  • innodb_read_only:取值为 ON 时。

  • transaction_read_only:取值为 ON 时。

  • read_only:取值为 ON 时且迁移账号不具备SUPER 和CONNECTION_ADMIN权限

目标库触发器检查

目标库

  • 所有迁移

  • 所有同步

Warning

检查目标库是否存在触发器。

目标表/数据库存在性检测

目标库

  • 全量迁移

  • 全量初始化

Error

检查目标实例的库存在性是否符合预期。

当选择全量迁移但未选择结构迁移,或选择全量初始化但未选择结构初始化时,若目标库表不存在对应结构,可能会导致迁移或初始化失败。

  • 增量迁移

  • 增量同步

Warning

检查目标实例的表存在性是否符合预期。

当选择了增量迁移或同步但未选择结构迁移或初始化时,若目标库表不存在对应结构,可能会导致迁移或同步失败。

说明

您可以通过增量 DDL 的方式进行结构迁移或初始化。

目标库表权限检测

目标库

  • 所有迁移

  • 所有同步

Error

检查目标实例的账号权限是否满足迁移或同步要求。

迁移或同步的类型不同,需要的权限也不同,其中:

  • 增量迁移或增量同步要求目标库账号拥有 SELECT、INSERT、UPDATE、DELETE、CREATE、INDEX、ALTER、DROP 权限。

  • 全量迁移或全量初始化要求目标库账号拥有 SELECT、INSERT、UPDATE 权限。

  • 结构迁移或结构初始化要求目标库账号拥有 SELECT、CREATE、INDEX、ALTER 权限。

  • 用户迁移要求目标库账号拥有 CREATE USER、GRANT OPTION 权限。

检查 innodb_strict_mode 设置是否一致

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查 InnoDB 严格模式设置是否一致

检查 innodb_large_prefix 兼容性

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Error

检查源库和目标库 innodb_large_prefix 的兼容性。

检查 SQL_MODE 是否一致

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查源库和目标库的 SQL_MODE 是否一致。

账号存在性检查

  • 源库

  • 目标库

用户迁移

Warning

检查源库中待迁移的账号是否已存在于目标库中。

源端和目标库表名大小写敏感性检查

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查源库和目标库的 lower_case_table_names 是否一致。

检查事务隔离级别(tx_isolation)是否一致

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查事务隔离级别是否一致。

检查元数据的 Definer 是否存在

  • 源库

  • 目标库

  • 结构迁移

  • 结构初始化

Warning

检查视图、存储过程、函数、触发器的 Definer 是否在目标库存在

结构 Definer 不存在可能导致迁移结构后不可用。

数据库版本检查

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

  • 数据订阅

Error

检查源库和目标库版本是否已被支持。

源库和目标库版本均需大于 MySQL 5.5。

数据库连通性检查

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

  • 数据订阅

Error

检查数据传输服务器是否能连通源库和目标库。

检查被迁移表外键依赖

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查源库中待迁移或同步表外键所依赖的表是否存在或在迁移同步范围内。

账号迁移依赖检查

  • 源库

  • 目标库

用户迁移

Warning

检查源库账号所有授权的结构是否已迁移至目标库。

数据库主版本检测

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查源库和目标库主版本是否一致。

源库 ServerID 检查

源库

  • 增量迁移

  • 增量同步

  • 数据订阅

Warning

检查源库 ServerID 是否为 1。

如果源库 ServerID 为 1,系统将无法确认是否配置 ServerID,需要您自行确认。

源库 gtid mode 开启检查

源库

  • 所有迁移

Warning

检查源数据库实例的参数 gtid mode 是否设置为 ON

  • 当 MySQL 的版本小于 8.0 且未开启参数 gtid_mode 时,可能会在数据迁移过程中导致外键级联删除失败,从而造成数据差异。
  • 在不开启 gtid mode 时,源数据库实例不支持切主。
  • 所有同步

Error

  • 当源库数据库版本大于等于 MySQL 5.6 时,gtid_modeenforce_gtid_consistency 取值均需为 ON
  • 当 MySQL 的版本小于 8.0 且未开启参数 gtid_mode 时,可能会在数据同步过程中导致外键级联删除失败,从而造成数据差异。

源库 GIPK 检查

源库

  • 所有迁移

  • 所有同步

  • 数据订阅

Warning

检查源数据库 GIPK 是否开启。

检查源库表是否包含主键

源库

  • 全量迁移

  • 增量迁移

  • 全量初始化

  • 增量同步

Warning

检查源数据库的表是否包含主键。无主键可能会引发数据不一致行为, 需添加主键。

源表存储引擎检查

源库

  • 增量迁移

  • 增量同步

  • 数据订阅

Warning

检查源库中待迁移或同步的表是否使用的是 InnoDB 引擎。

  • 数据迁移支持的存储引擎包括 InnoDBMyISAMRocksDB。在数据迁移过程中,如果源库不是 InnoDB 存储引擎,系统会自动将其转换为 InnoDB

  • 数据同步和数据订阅支持的存储引擎是 InnoDB

结构迁移

Warning

检查其他非 InnoDB 引擎的表,在结构迁移或初始化时是否会自动转为 InnoDB 引擎。

源端 Binlog 开启检查

源库

  • 增量迁移

  • 增量同步

  • 数据订阅

Error

检查源库是否开启 Binlog。

Binlog 参数需同时满足如下要求:

  • log_bin 取值为 ON

  • binlog_format 取值为 ROW

  • 对于 MySQL 5.6.2 及以上版本,binlog_row_image 取值为 FULL

检查源库 log_slave_updates

源库

  • 增量迁移

  • 增量同步

  • 数据订阅

Warning

检查源库 log_slave_updates 是否为 ON

源表库权限检查

源库

  • 所有迁移

  • 所有同步

  • 数据订阅

Error

检查源数据库的账号权限是否满足迁移、同步或订阅的要求。

  • 检查源库是否有 REPLICATION SLAVEREPLICATION CLIENT 权限。

  • 源库的数据库账号密码不能超过 32 位。

检查源端是否具有 SHOW CREATE ROUTINE 权限

源库

  • 结构迁移

  • 结构初始化

Error

检查源库是否有 SHOW CREATE ROUTINE 权限。

源库需具备 SHOW CREATE ROUTINE 权限,才能获取待迁移或初始化 Routine 对象的创建语句。

检查源端是否具有 SHOW CREATE VIEW 权限

源库

  • 结构迁移

  • 结构初始化

Warning

检查源库是否有 SHOW CREATE VIEW 权限。

源库需具备 SHOW CREATE VIEW 权限,才能获取待迁移或同步 View 对象的创建语句。

目标库 EventScheduler 配置检查目标库结构迁移Warning检查目标数据库的 EventScheduler 配置是否符合预期。当 event_scheduler 设置为 ON 时,事件迁移后不会被执行。当迁移类型选择了结构迁移且需要迁移事件时,需检查该检查项。

目标库时区检查

  • 源库

  • 目标库

结构迁移

Warning

检查目标数据库的时区是否一致。

当迁移类型选择了结构迁移且需要迁移事件时,需检查该检查项。

数据库连接和结构通配符规则检查

源库

  • 所有迁移

  • 所有同步

  • 数据订阅

Error

连接或展开源端通配符。

源端表或数据库存在性检查

源库

  • 所有迁移

  • 所有同步

  • 数据订阅

Error

检查源数据库中指定的表/库是否存在。

源库增量位点检查

源库

  • 增量迁移

  • 增量同步

  • 数据订阅

Error

检查源库数据库增量位点是否存在。

检查源库的无主键表

源库

  • 所有迁移

  • 所有同步

Error

检查源数据库无主键表的行数和容量(大于 10W 行或大于 100MB 的表)。

目标库 SET_USER_ID 权限检查

目标库

  • 所有迁移

  • 所有同步

Warning

检查目标数据库的账号 SET_USER_ID 权限是否满足迁移要求。

目标数据库 max_allowed_packet 配置检查

目标库

  • 所有迁移

  • 所有同步

Warning

检查目标数据库的 max_allowed_packet 是否小于 16MB。

目标库 innodb_rollback_on_timeout 关闭检查

目标库

  • 所有迁移

  • 所有同步

Warning

检查目标库 innodb_deadlock_detect 关闭时是否也关闭了 innodb_rollback_on_timeout

迁移权限检查源库用户迁移Warning账号迁移是否包含 All 权限。

目标库 partial_revokes 配置检查

目标库

用户迁移

Warning

数据库的 partial_revokes 是否开启。

在源端和目标端的 MySQL 版本大于 8.0,且源端待迁移账户具备 Partial REVOKE 权限时才会检查。

目标库 log_bin_trust_function_creators 开启检查

目标库

  • 所有迁移

  • 所有同步

  • 结构迁移

Warning

检查目标库是否开启 log_bin_trust_function_creators

双向同步表自增列检查

  • 源库

  • 目标库

双向同步

Warning

检查双向同步中源库和目标库是否有包含自增列的表。

双向同步源库和目标库同步条件检查

  • 源库

  • 目标库

双向同步

Error

检查双向同步源库和目标库是否满足同步条件。

检查迁移账户是否具备标记库表的读写权限。

源和目标端同名表存在性检查

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

Warning

检查源端和目标端是否存在同名的表。

如果目的端存在同名表,则迁移或同步任务将存在报错或数据覆盖的风险。

运行环境检测

  • 源库

  • 目标库

  • 所有迁移

  • 所有同步

  • 数据订阅

Warning

运行环境检测。

数据同步版本检查

  • 源库

  • 目标库

所有同步

Error

数据同步版本检查。

当源库数据库版本小于 MySQL 5.6 时,预检查不通过。