MySQL 评测 - AWS数据库迁移服务
验证是否禁用了二进制日志事务压缩验证 DMS 用户是否拥有源数据库的 REPLICATION CLIENT 和 REPLICATION SLAVE 权限验证 DMS 用户是否拥有源数据库表的 SELECT 权限验证源数据库中的 server_id 是否设置为 1 或更大验证 DMS 用户是否拥有将 MySQL 数据库作为目标的必要权限验证是否为源数据库设置了自动删除二进制日志验证仅在将 BatchApplyEnabled 设置为 true 时才使用受限 LOB 模式验证一个表是否使用了 InnoDB 以外的存储引擎验证是否对任何用于迁移的表启用了自动增量验证数据库二进制日志映像是否设置为 FULL 以支持 DMS CDC验证源数据库是否为 MySQL 只读副本验证一个表是否有分区,并建议对完全加载任务设置使用 target_table_prep_mode验证 DMS 是否支持该数据库版本验证目标数据库是否配置为将 local_infile 设置为 1验证目标数据库是否有带外键的表验证任务范围内的源表是否具有级联约束验证超时值是否适用于 MySQL 源或目标验证 max_statement_time 数据库参数验证批量应用的目标上是否存在主键或唯一索引验证批量应用的目标上是否同时存在主键和唯一索引验证在完全加载期间目标数据库上是否启用了二级索引启用 DMS 验证后,验证表是否有主键或唯一索引关于使用 MaxFullLoadSubTasks 设置的建议检查数字随机化的转换规则查看数字掩码的转换规则查看哈希掩码的转换规则确认数据验证任务设置和数据掩蔽数字随机化未同时启用确认数据验证任务设置和数据掩蔽哈希掩码未同时启用确认数据验证任务设置和数据掩蔽数字掩码未同时启用检查源 Amazon Aurora MySQL 实例是否不为只读副本检查二进制日志保留时间是否设置正确检查源表是否没有不可见列。验证数据库二进制日志格式是否设置为 ROW 以支持 DMS CDC验证源数据库中是否至少存在一个选定对象验证源数据库中是否存在包含生成列的表 验证是否已 skipTableSuspensionForPartitionDdl 为分区表启用验证 max_allowed_packet 大小是否可以处理源 LOB 列验证源数据库中是否存在辅助约束和索引(非主约束)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

MySQL 评测

本节介绍了使用 MySQL、Aurora MySQL 兼容版或 Aurora MySQL 兼容版 Serverless 源端点的迁移任务的各项迁移前评测。

主题

验证是否禁用了二进制日志事务压缩

API 密钥:mysql-check-binlog-compression

此迁移前评测可验证是否禁用了二进制日志事务压缩。AWS DMS 不支持二进制日志事务压缩。

有关更多信息,请参阅将 MySQL 数据库作为 AWS DMS 源的限制

验证 DMS 用户是否拥有源数据库的 REPLICATION CLIENT 和 REPLICATION SLAVE 权限

API 密钥:mysql-check-replication-privileges

此迁移前评测可验证,如果 DMS 任务迁移类型为 CDC 或完全加载 + CDC,则源端点连接设置中指定的 DMS 用户是否拥有源数据库的 REPLICATION CLIENTREPLICATION SLAVE 权限。

有关更多信息,请参阅将与 MySQL 兼容的任何数据库作为 AWS DMS 的源

验证 DMS 用户是否拥有源数据库表的 SELECT 权限

API 密钥:mysql-check-select-privileges

此迁移前评测可验证源端点连接设置中指定的 DMS 用户是否拥有源数据库表的 SELECT 权限。

有关更多信息,请参阅将与 MySQL 兼容的任何数据库作为 AWS DMS 的源

验证源数据库中的 server_id 是否设置为 1 或更大

API 密钥:mysql-check-server-id

此迁移前评测可验证,对于 CDC 迁移类型,源数据库中的 server_id 服务器变量是否设置为 1 或更大。

有关来源的更多信息AWS DMS,请参阅使用自我管理的 MySQL 兼容数据库作为来源。AWS DMS

验证 DMS 用户是否拥有将 MySQL 数据库作为目标的必要权限

API 密钥:mysql-check-target-privileges

此迁移前评测可验证目标端点连接设置中指定的 DMS 用户是否拥有将 MySQL 数据库作为目标的必要权限。

有关 MySQL 源端点先决条件的更多信息,请参阅将与 MySQL 兼容的任何数据库作为 AWS DMS 的源

验证是否为源数据库设置了自动删除二进制日志

API 密钥:mysql-check-expire-logs-days

此迁移前评测可验证您的数据库是否已配置为自动删除二进制日志。EXPIRE_LOGS_DAYSBINLOG_EXPIRE_LOGS_SECONDS 全局系统变量的值应大于零,以防止在迁移过程中过度使用磁盘空间。

有关来源的更多信息AWS DMS,请参阅使用自我管理的 MySQL 兼容数据库作为来源。AWS DMS

验证仅在将 BatchApplyEnabled 设置为 true 时才使用受限 LOB 模式

API 密钥:mysql-batch-apply-lob-mode

此迁移前评测可验证 DMS 任务是否包含 LOB 列。如果 LOB 列包含在任务范围内,则只能在受限 LOB 模式下使用 BatchApplyEnabled

有关 BatchApplyEnabled 设置的更多信息,请参阅如何使用 DMS 批量应用特征来提高 CDC 复制性能?

验证一个表是否使用了 InnoDB 以外的存储引擎

API 密钥:mysql-check-table-storage-engine

此迁移前评测可验证用于源 MySQL 数据库中任何表的存储引擎是否是 InnoDB 以外的引擎。默认情况下,DMS 将使用 InnoDB 存储引擎创建目标表。如果您需要使用 InnoDB 以外的存储引擎,则必须在目标数据库上手动创建表,并将 DMS 任务配置为使用 TRUNCATE_BEFORE_LOADDO_NOTHING 作为完全加载任务设置。有关完全加载任务设置的更多信息,请参阅完全加载任务设置

注意

此迁移前评测不适用于 Aurora MySQL 兼容版或 Aurora MySQL 兼容版 Serverless。

有关 MySQL 端点限制的更多信息,请参阅使用 MySQL 数据库作为源代码的限制 AWS DMS

验证是否对任何用于迁移的表启用了自动增量

API 密钥:mysql-check-auto-increment

此迁移前评测可验证任务中使用的源表是否启用了自动增量。DMS 不会将列上的 AUTO_INCREMENT 属性迁移到目标数据库。

有关 MySQL 端点限制的更多信息,请参阅使用 MySQL 数据库作为源代码的限制 AWS DMS。有关在 MySQL 中处理标识列的信息,请参见 AWS DMS:第 2 部分中的处理身份列

验证数据库二进制日志映像是否设置为 FULL 以支持 DMS CDC

API 密钥:mysql-check-binlog-image

此迁移前评测可检查源数据库的二进制日志映像是否设置为 FULL。在 MySQL 中,binlog_row_image 变量决定了使用 ROW 格式时如何写入二进制日志事件。为确保与 DMS 兼容并支持 CDC,请将 binlog_row_image 变量设置为 FULL。此设置可确保 DMS 收到足够的信息,以便在迁移期间为目标数据库构造完整的数据操作语言(DML)。

要将二进制日志映像设置为 FULL,请执行以下操作:

  • 对于 Amazon RDS,此值默认为 FULL

  • 对于托管在本地或亚马逊上的数据库 EC2,请在 my.ini (Microsoft Windows) 或 my.cnf (UNIX) 中设置binlog_row_image值。

此评估仅对完全加载迁移和 CDC 迁移或仅 CDC 迁移有效。此评估对仅完全加载迁移无效。

验证源数据库是否为 MySQL 只读副本

API 密钥:mysql-check-database-role

此迁移前评测可验证源数据库是否为只读副本。要在连接到只读副本时启用对 DMS 的 CDC 支持,请将 log_slave_updates 参数设置为 True。有关使用自管理 MySQL 数据库的更多信息,请参阅使用自管理的 MySQL 兼容数据库作为源 AWS DMS

要将 log_slave_updates 值设置为 True,请执行以下操作:

  • 对于 Amazon RDS,请使用数据库的参数组。有关使用 RDS 数据库参数组的信息,请参阅《Amazon RDS 用户指南》中的使用参数组

  • 对于托管在本地或亚马逊上的数据库 EC2,请在 my.ini (Microsoft Windows) 或 my.cnf (UNIX) 中设置log_slave_updates值。

此评估仅对完全加载迁移和 CDC 迁移或仅 CDC 迁移有效。此评估对仅完全加载迁移无效。

验证一个表是否有分区,并建议对完全加载任务设置使用 target_table_prep_mode

API 密钥:mysql-check-table-partition

此迁移前评测可检查源数据库中是否存在带有分区的表。DMS 在 MySQL 目标上创建没有分区的表。要将分区表迁移到目标上的分区表,必须执行以下操作:

  • 在目标 MySQL 数据库中预先创建分区表。

  • 将您的 DMS 任务配置为使用 TRUNCATE_BEFORE_LOADDO_NOTHING 作为完全加载任务设置。

有关 MySQL 端点限制的更多信息,请参阅使用 MySQL 数据库作为源代码的限制 AWS DMS

验证 DMS 是否支持该数据库版本

API 密钥:mysql-check-supported-version

此迁移前评测可验证源数据库版本是否与 DMS 兼容。Amazon RDS MySQL 版本 5.5 或更低版本或者高于 8.0.x 的 MySQL 版本不支持 CDC。只有 MySQL 版本 5.6、5.7 或 8.0 支持 CDC。有关支持的 MySQL 版本的更多信息,请参阅数据迁移的源端点

验证目标数据库是否配置为将 local_infile 设置为 1

API 密钥:mysql-check-target-localinfile-set

此迁移前评测可检查目标数据库中的 local_infile 参数是否设置为 1。在目标数据库中完全加载期间,DMS 要求将“local_infile”参数设置为 1。有关更多信息,请参阅 使用 AWS DMS 从 MySQL 迁移到 MySQL。

此评测仅对完全加载任务或完全加载和 CDC 任务有效。

验证目标数据库是否有带外键的表

API 密钥:mysql-check-fk-target

此迁移前评测可检查将要迁移到 MySQL 数据库的完全加载任务或者完全加载和 CDC 任务是否有带外键的表。DMS 中的默认设置是按字母顺序加载表。具有外键和引用完整性约束的表可能会导致加载失败,因为父表和子表可能无法同时加载。

有关 DMS 中引用完整性的更多信息,请参阅改进 AWS DMS 迁移的性能主题中的使用索引、触发器和引用完整性约束

验证任务范围内的源表是否具有级联约束

API 密钥:mysql-check-cascade-constraints

此迁移前评测可检查是否有任何 MySQL 源表具有级联约束。DMS 任务不会迁移或复制级联约束,因为 MySQL 不会在二进制日志中记录这些事件的更改。虽然AWS DMS不支持这些限制,但你可以对关系数据库目标使用变通办法。

有关支持级联约束和其他约束的信息,请参阅对 AWS DMS 中的迁移任务进行故障排除主题中的索引、外键或级联更新内容或删除内容未迁移

验证超时值是否适用于 MySQL 源或目标

API 密钥:mysql-check-target-network-parameter

此迁移前评测可检查任务的 MySQL 端点是否将 net_read_timeoutnet_write_timeoutwait_timeout 设置设为至少 300 秒。为防止迁移期间断开连接,需要进行此项设置。

有关更多信息,请参阅 与目标 MySQL 实例的连接在任务期间中断

验证 max_statement_time 数据库参数

API 密钥:mysql-check-max-statement-time

检查基于 MySQL 的源代码的源参数 - max_Statement_time。如果有大于 10 亿的表,请验证值 max_Statement_time 并建议将其设置为更高的值,以避免任何潜在的数据丢失。

验证批量应用的目标上是否存在主键或唯一索引

API 密钥:mysql-check-batch-apply-target-pk-ui-absence

只有目标表上有主键或唯一索引的表才支持批量应用。没有主键或唯一索引的表会导致批处理失败,将逐一处理更改。建议您将此类表移到各自的任务中,改用事务性应用模式。或者,也可以在目标表上创建唯一键。

有关更多信息,请参阅将与 MySQL 兼容的任何数据库作为 AWS Database Migration Service 的目标

验证批量应用的目标上是否同时存在主键和唯一索引

API 密钥:mysql-check-batch-apply-target-pk-ui-simultaneously

只有目标表上有主键或唯一索引的表才支持批量应用。具有主键和唯一索引的表会同时导致批处理失败,将逐一处理更改。建议您将此类表移到各自的任务中,改用事务性应用模式。或者,如果您正在进行迁移,则可以在目标表上删除唯一键或主键,然后对其进行重建。

有关更多信息,请参阅将与 MySQL 兼容的任何数据库作为 AWS Database Migration Service 的目标

验证在完全加载期间目标数据库上是否启用了二级索引

API 密钥:mysql-check-secondary-indexes

考虑禁用或移除目标数据库中的二级索引。二级索引可能会影响完全加载期间的迁移性能。建议在应用缓存的更改之前启用二级索引。

有关更多信息,请参阅 AWS Database Migration Service 的最佳实践

启用 DMS 验证后,验证表是否有主键或唯一索引

API 密钥:mysql-check-pk-validity

数据验证要求表具有主键或唯一索引。

有关更多信息,请参阅 AWS DMS 数据验证

关于使用 MaxFullLoadSubTasks 设置的建议

API 密钥:mysql-tblnum-for-max-fullload-subtasks

此评测会检查任务中包含的表数量,并建议增加 MaxFullLoadSubTasks 参数以在满载过程中获得最佳性能。默认情况下,同时AWS DMS迁移 8 个表。将 MaxFullLoadSubTasks 参数更改为更高的值可以提高满载性能。

有关更多信息,请参阅完全加载任务设置

检查数字随机化的转换规则

API 密钥:mysql-datamasking-digits-randomize

此评测会验证表映射中使用的列是否与“数字随机化”转换规则兼容。此外,此评测还会检查选择进行转换的任何列是否为主键、唯一约束或外键的一部分,因为应用“数字随机化”转换并不能保证任何唯一性。

查看数字掩码的转换规则

API 密钥:mysql-datamasking-digits-mask

此评测会验证“数字掩码”转换规则是否不支持表映射中使用的任何列。此外,此评测还会检查选择进行转换的任何列是否为主键、唯一约束或外键的一部分,因为对此类列应用“数字掩码”转换可能会导致 DMS 任务失败,因为无法保证唯一性。

查看哈希掩码的转换规则

API 密钥:mysql-datamasking-hash-mask

此评测会验证“哈希掩码”转换规则是否不支持表映射中使用的任何列。它还会检查源列的长度是否超过 64 个字符。理想情况下,目标列长度应大于 64 个字符以支持哈希掩码。此外,此评测还会检查选择进行转换的任何列是否为主键、唯一约束或外键的一部分,因为应用“数字随机化”转换并不能保证任何唯一性。

确认数据验证任务设置和数据掩蔽数字随机化未同时启用

API 密钥:all-to-all-validation-with-datamasking-digits-randomize

此迁移前评测可验证数据验证设置和数据掩蔽数字随机化是否同时启用,因为这些功能不兼容。

确认数据验证任务设置和数据掩蔽哈希掩码未同时启用

API 密钥:all-to-all-validation-with-datamasking-hash-mask

此迁移前评测可验证数据验证设置和数据掩蔽哈希掩码是否同时启用,因为这些功能不兼容。

确认数据验证任务设置和数据掩蔽数字掩码未同时启用

API 密钥:all-to-all-validation-with-digit-mask

此迁移前评测可验证数据验证设置和数据掩蔽数字掩码是否同时启用,因为这些功能不兼容。

检查源 Amazon Aurora MySQL 实例是否不为只读副本

API 密钥:mysql-check-aurora-read-only

此迁移前评估将验证在两个 Amazon Aurora MySQL 集群之间迁移,源终端节点是否必须是 read/write 实例,而不是副本实例。

检查二进制日志保留时间是否设置正确

API 密钥:mysql-check-binlog-retention-time

此迁移前评测可验证“binlog retention hours”的值是否大于 24 小时。

检查源表是否没有不可见列。

API 密钥:mysql-check-invisible-columns

此迁移前评估可验证源表是否没有不可见列。 AWS DMS不会迁移源数据库中不可见列的数据。

验证数据库二进制日志格式是否设置为 ROW 以支持 DMS CDC

API 密钥:mysql-check-binlog-format

此迁移前评测可验证源数据库二进制日志格式是否配置为 ROW 以支持更改数据捕获(CDC)。要将二进制日志格式设置为 ROW,请执行以下操作:

  • 对于 Amazon RDS,请使用数据库的参数组。有关信息,请参阅《Amazon Relational Database Service 用户指南》中的为单可用区数据库配置 MySQL 二进制日志记录

  • 对于托管在本地或亚马逊上的数据库 EC2,请在 my.ini (Microsoft Windows) 或 my.cnf (UNIX) 中设置binlog_format值。

此评估仅对完全加载迁移和 CDC 迁移或仅 CDC 迁移有效。此评估对仅完全加载迁移无效。有关自管理 MySQL 服务器的更多信息,请参阅将与 MySQL 兼容的自管理数据库作为 AWS DMS 的源

验证源数据库中是否至少存在一个选定对象

API 密钥:all-check-source-selection-rules

此迁移前评估验证源数据库中是否至少存在一个在选择规则中指定的对象,包括基于通配符的规则的模式匹配。

验证源数据库中是否存在包含生成列的表

API 密钥:mysql-check-generated-columns

此迁移前评估检查是否有任何 MySQL 源表生成了列。 AWS DMS任务不会迁移或复制生成的列。有关如何迁移生成的列的信息,请参阅使用 MySQL 数据库作为源代码的限制 AWS DMS

验证是否已 skipTableSuspensionForPartitionDdl 为分区表启用

API 密钥:mysql-check-skip-table-suspension-partition-ddl

此迁移前评估可检测源数据库中的分区表并验证参数设置。skipTableSuspensionForPartitionDdl不设置此参数可能会导致迁移期间出现不必要的表暂停。欲了解更多详情,请参阅以下链接:使用 MySQL 数据库作为源代码的限制 AWS DMS

验证 max_allowed_packet 大小是否可以处理源 LOB 列

API 密钥:mysql-check-max-allowed-packet-lob

AWS DMS检测源表中超出当前max_allowed_packet设置的 LOB 列。这种不匹配可能会导致数据迁移期间的复制失败。有关更多信息,请参阅 排除 MySQL 中的问题

验证源数据库中是否存在辅助约束和索引(非主约束)

API 密钥:all-check-secondary-constraints

此迁移前评估验证源数据库中是否存在辅助约束和索引(外键、校验约束、非聚集索引)。