MariaDB 评测 - Amazon 数据库迁移服务
验证源数据库中的 server_id 是否设置为 1 或更大验证是否为源数据库设置了自动删除二进制日志验证仅在设置为 true 时 BatchApplyEnabled 才使用受限 LOB 模式验证是否禁用了二进制日志事务压缩验证 DMS 用户是否拥有源数据库的 REPLICATION CLIENT 和 REPLICATION SLAVE 权限验证 DMS 用户是否拥有源数据库表的 SELECT 权限验证 DMS 用户是否拥有将 MySQL 兼容数据库作为目标的必要权限验证一个表是否使用了 InnoDB 以外的存储引擎验证是否对任何用于迁移的表启用了自动增量验证数据库二进制日志格式是否设置为 ROW 以支持 DMS CDC验证数据库二进制日志映像是否设置为 FULL 以支持 DMS CDC验证源数据库是否为 MariaDB 只读副本验证一个表是否有分区,并建议对完全加载任务设置使用 TRUNCATE_BEFORE_LOAD 或 DO_NOTHING验证 DMS 是否支持该数据库版本验证目标数据库是否配置为将 local_infile 设置为 1验证目标数据库是否有带外键的表验证任务范围内的源表是否具有级联约束验证任务范围内的源表是否已生成列验证超时值是否适用于 MariaDB 源验证超时值是否适用于 MariaDB 目标验证max_statement_time数据库参数验证 Batch Apply 的目标上是否存在主键或唯一索引验证 Batch Apply 的目标上是否同时存在主键和唯一索引验证目标数据库满负荷期间是否启用了二级索引启用 DMS 验证后,验证表是否有主键或唯一索引关于使用MaxFullLoadSubTasks设置的建议检查随机数字的转换规则查看数字掩码的转换规则查看哈希掩码的转换规则确认数据验证任务设置和数据屏蔽数字随机化未同时启用确认数据验证任务设置和数据屏蔽哈希掩码未同时启用确认数据验证任务设置和数据屏蔽数字掩码未同时启用检查二进制日志保留时间是否设置正确检查源表是否没有不可见列
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

MariaDB 评测

本节介绍使用 MariaDB 源端点的迁移任务的各项迁移前评测。

要使用 Amazon DMS API 创建个人预迁移评估,请使用列出的 API 密钥作为 StartReplicationTaskAssessmentRun操作Include参数。

主题

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

API 密钥:mariadb-check-server-id

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

有关 MariaDB 端点限制的更多信息,请参阅将与 MySQL 兼容的自管理数据库作为 Amazon DMS的源

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

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

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

有关 MariaDB 端点限制的更多信息,请参阅将与 MySQL 兼容的自管理数据库作为 Amazon DMS的源

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

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

如果复制中包含 LOB 列,则只能在受限 LOB 模式下使用 BatchApplyEnabled。使用 LOB 模式的其他选项将导致批处理失败, Amazon DMS 并将逐一处理更改。建议您将这些表移到各自的任务中,改用事务性应用模式。

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

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

API 密钥:mariadb-check-binlog-compression

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

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

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

API 密钥:mariadb-check-replication-privileges

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

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

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

API 密钥:mariadb-check-select-privileges

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

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

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

API 密钥:mariadb-check-target-privileges

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

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

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

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

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

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

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

API 密钥:mariadb-check-auto-increment

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

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

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

API 密钥:mariadb-check-binlog-format

此迁移前评测可验证源数据库二进制日志格式是否设置为 ROW 以支持 DMS 更改数据捕获(CDC)。

要将二进制日志格式设置为 ROW,请执行以下操作:

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

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

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

有关自托管 MariaDB 服务器的更多信息,请参阅使用自管理的 MySQL 兼容数据库作为源 Amazon DMS

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

API 密钥:mariadb-check-binlog-image

此迁移前评测可检查源数据库的二进制日志映像是否设置为 FULL。在 MariaDB 中,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 迁移有效。此评估对仅完全加载迁移无效。

有关自托管 MariaDB 服务器的更多信息,请参阅使用自管理的 MySQL 兼容数据库作为源 Amazon DMS

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

API 密钥:mariadb-check-database-role

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

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

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

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

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

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

API 密钥:mariadb-check-table-partition

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

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

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

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

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

API 密钥:mariadb-check-supported-version

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

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

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

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

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

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

API 密钥:mariadb-check-fk-target

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

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

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

API 密钥:mariadb-check-cascade-constraints

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

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

验证任务范围内的源表是否已生成列

API 密钥:mariadb-check-generated-columns

此迁移前评测可检查是否有任何 MariaDB 源表已生成列。DMS 任务不会迁移或复制生成的列。

有关如何迁移生成的列的信息,请参阅与目标 MySQL 实例的连接在任务期间中断

验证超时值是否适用于 MariaDB 源

API 密钥:mariadb-check-source-network-parameter

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

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

验证超时值是否适用于 MariaDB 目标

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

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

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

验证max_statement_time数据库参数

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

Amazon DMS 验证数据库源参数max_statement_time是否设置为 0 以外的值。需要将此参数设置为 0 以适应 DMS 满载过程。您可以考虑在满载完成后更改参数值,因为将其设置为 0 以外的值可能会导致数据丢失。

验证 Batch Apply 的目标上是否存在主键或唯一索引

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

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

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

验证 Batch Apply 的目标上是否同时存在主键和唯一索引

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

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

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

验证目标数据库满负荷期间是否启用了二级索引

API 密钥:mariadb-check-secondary-indexes

必须考虑禁用二级索引或从目标数据库中删除二级索引。二级索引可能会影响满负荷期间的迁移性能。建议在应用缓存的更改之前启用二级索引。

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

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

API 密钥:mariadb-check-pk-validity

数据验证要求表在源和目标上都具有主键或唯一索引。

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

关于使用MaxFullLoadSubTasks设置的建议

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

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

检查随机数字的转换规则

API 密钥:mariadb-datamasking-digits-randomize

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

查看数字掩码的转换规则

API 密钥:mariadb-datamasking-digits-mask

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

查看哈希掩码的转换规则

API 密钥:mariadb-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

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

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

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

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

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

API 密钥:mariadb-check-invisible-columns

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