MySQL assessments - AWS Database Migration Service

MySQL assessments

This section describes individual premigration assessments for migration tasks that use a MySQL, Aurora MySQL-Compatible Edition or Aurora MySQL-Compatible Edition Serverless source endpoint.

Validate if a table uses a storage engine other than Innodb

API key: mysql-check-table-storage-engine

This premigration assessment validates whether the storage engine used for any table in the Source MySQL database is an engine other than Innodb. DMS creates target tables with the InnoDB storage engine by default. If you need to use a storage engine other than InnoDB, you must manually create the table on the target database and configure your DMS task to use TRUNCATE_BEFORE_LOAD or DO_NOTHING as the full-load task setting. For more information about full-load task settings, see Full-load task settings.

Note

This premigration assessment is not available for Aurora MySQL-Compatible Edition or Aurora MySQL-Compatible Edition Serverless.

For more information about MySQL endpoint limitations, see Limitations on using a MySQL database as a source for AWS DMS.

Validate if auto-increment is enabled on any tables used for migration

API key: mysql-check-auto-increment

This premigration assessment validates whether the source tables that are used in the task have auto-increment enabled. DMS doesn't migrate the AUTO_INCREMENT attribute on a column to a target database.

For more information about MySQL endpoint limitations, see Limitations on using a MySQL database as a source for AWS DMS. For information about handling identity columns in MySQL, see Handle IDENTITY columns in AWS DMS: Part 2.

Validate if the database binlog image is set to FULL to support DMS CDC

API key: mysql-check-binlog-image

This premigration assessment checks whether the source database's binlog image is set to FULL. In MySQL, the binlog_row_image variable determines how a binary log event is written when using the ROW format. To ensure compatibility with DMS and support CDC, set the binlog_row_image variable to FULL. This setting ensures that DMS receives sufficient information to construct the full Data Manipulation Language (DML) for the target database during migration.

To set the binlog image to FULL, do the following:

  • For Amazon RDS, this value is FULL by default.

  • For databases hosed on-premises or on Amazon EC2, set the binlog_row_image value in my.ini (Microsoft Windows) or my.cnf (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

Validate if the source database is a MySQL Read-Replica

API key: mysql-check-database-role

This premigration assessment verifies whether the source database is a read replica. To enable CDC support for DMS when connected to a read replica, set the log_slave_updates parameter to True. For more information about using a self-managed MySQL database, see Using a self-managed MySQL-compatible database as a source for AWS DMS.

To set the log_slave_updates value to True, do the following:

  • For Amazon RDS, use the database's parameter group. For information about using RDS database parameter groups, see Working with parameter groups in the Amazon RDS User Guide.

  • For databases hosed on-premises or on Amazon EC2, set the log_slave_updates value in my.ini (Microsoft Windows) or my.cnf (UNIX).

This assessment is only valid for a full-load and CDC migration, or a CDC-only migration. This assessment is not valid for a full-load only migration.

Validate if a table has partitions, and recommend target_table_prep_mode for full-load task settings

API key: mysql-check-table-partition

This premigration assessment checks for the presence of tables with partitions in the source database. DMS creates tables without partitions on the MySQL target. To migrate partitioned tables to a partitioned table on the target, you must do the following:

  • Pre-create the partitioned tables in the target MySQL database.

  • Configure your DMS task to use TRUNCATE_BEFORE_LOAD or DO_NOTHING as the full-load task setting.

For more information about MySQL endpoint limitations, see Limitations on using a MySQL database as a source for AWS DMS.

Validate if DMS supports the database version

API key: mysql-check-supported-version

This premigration assessment verifies whether the source database version is compatible with DMS. CDC is not supported with Amazon RDS MySQL versions 5.5 or lower, or MySQL versions greater than 8.0.x. CDC is supported only for MySQL versions 5.6, 5.7, or 8.0. For more information about supported MySQL versions, see Source endpoints for data migration.

Validate if the target database is configured to set local_infile to 1

API key: mysql-check-target-localinfile-set

This premigration assessment checks whether the local_infile parameter in the target database is set to 1. DMS requires the 'local_infile' parameter to be set to 1 during full load in your target database. For more information, see Migrating from MySQL to MySQL using AWS DMS.

This assessment is only valid for a full-load or full-load and CDC task.

Validate if target database has tables with foreign keys

API key: mysql-check-fk-target

This premigration assessment checks whether a full load or full and CDC task migrating to a MySQL database has tables with foreign keys. The default setting in DMS is to load tables in alphabetical order. Tables with foreign keys and referential integrity constraints can cause the load to fail, as the parent and child tables may not be loaded at the same time.

For more information about referential integrity in DMS, see Working with indexes, triggers, and referential integrity constraints in the Improving the performance of an AWS DMS migration topic.

Validate if source tables in the task scope have cascade constraints

API key: mysql-check-cascade-constraints

This premigration assessment checks if any of the MySQL source tables have cascade constraints. Cascade constraints are not migrated or replicated by DMS tasks, because MySQL doesn't record the changes for these events in the binlog. While AWS DMS doesn't support these constraints, you can use workarounds for relational database targets.

For information about supporting cascase constrains and other constraints, see Indexes, Foreign Keys, or Cascade Updates or Deletes Not Migrated in the Troubleshooting migration tasks in AWS DMS topic.

Validate if the timeout values are appropriate for a MySQL source or target

API key: mysql-check-target-network-parameter

This premigration assessment checks whether a task’s MySQL endpoint has the net_read_timeout, net_wait_timeout and wait_timeout settings set to at least 300 seconds. This is needed to prevent disconnects during the migration.

For more information, see Connections to a target MySQL instance are disconnected during a task.