Uso de una base de datos compatible con MySQL como destino para AWS Database Migration Service - AWS Database Migration Service

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de una base de datos compatible con MySQL como destino para AWS Database Migration Service

Puede migrar datos a cualquier base de datos compatible con MySQL utilizando AWS DMS, desde cualquiera de los motores de datos de origen compatibles con AWS DMS. Si va a migrar a una base de datos compatible con MySQL en las instalaciones, entonces AWS DMS requiere que su motor de origen resida dentro del ecosistema de AWS. El motor puede estar en un servicio administrado por AWS como Amazon RDS, Amazon Aurora o Amazon S3. O el motor puede estar en una base de datos autoadministrada en Amazon EC2.

Puede utilizar SSL para cifrar las conexiones entre su punto de enlace compatible con MySQL y la instancia de replicación. Para obtener más información acerca de cómo utilizar SSL con un punto de enlace compatible con MySQL, consulte Uso de SSL con AWS Database Migration Service.

Para obtener información sobre las versiones de MySQL que AWS DMS admite como destino, consulte Objetivos para AWS DMS.

Puede utilizar las siguientes bases de datos compatibles con MySQL como destinos para AWS DMS:

  • MySQL Community Edition

  • MySQL Standard Edition

  • MySQL Enterprise Edition

  • MySQL Cluster Carrier Grade Edition

  • MariaDB Community Edition

  • MariaDB Enterprise Edition

  • Column Store de MariaDB

  • MySQL de Amazon Aurora

nota

Independientemente del motor de almacenamiento del origen (MyISAM, MEMORY, etc.), AWS DMS crea una tabla de destino compatible con MySQL como la tabla InnoDB de forma predeterminada.

Si necesita una tabla con un motor de almacenamiento que no sea InnoDB, puede crear manualmente la tabla en el destino compatible con MySQL y migrar la tabla con la opción Do nothing (No hacer nada). Para obtener más información, consulte Configuración de tareas de carga completa.

Para obtener más información sobre cómo trabajar con las bases de datos compatibles con MySQL como destino para AWS DMS, consulte las secciones siguientes.

Uso de cualquier base de datos compatible con MySQL como destino para AWS Database Migration Service

Antes de empezar a trabajar con una base de datos compatible MySQL como destino para AWS DMS, asegúrese de que cumple los siguientes requisitos previos:

  • Proporcione una cuenta de usuario para AWS DMS que tiene privilegios de lectura/escritura a la base de datos compatible con MySQL. Para crear los privilegios necesarios, ejecute los siguientes comandos.

    CREATE USER '<user acct>'@'%' IDENTIFIED BY '<user password>'; GRANT ALTER, CREATE, DROP, INDEX, INSERT, UPDATE, DELETE, SELECT ON <schema>.* TO '<user acct>'@'%'; GRANT ALL PRIVILEGES ON awsdms_control.* TO '<user acct>'@'%';
  • Durante la fase de migración de carga completa, debe desactivar las claves externas en las tablas de destino. Para desactivar las comprobaciones de claves externas en una base de datos compatible con MySQL durante una carga completa, puede agregar el siguiente comando a la sección Atributos de conexión adicionales de la consola de AWS DMS para el punto de conexión de destino.

    Initstmt=SET FOREIGN_KEY_CHECKS=0;
  • Establezca el parámetro de base de datos local_infile = 1 para permitir que AWS DMS cargue datos en la base de datos de destino.

Restricciones en el uso de una base de datos compatible con MySQL como destino para AWS Database Migration Service

Al utilizar una base de datos MySQL como destino, AWS DMS no admite lo siguiente:

  • Las instrucciones del lenguaje de definición de datos (DDL): TRUNCATE PARTITION, DROP TABLE y RENAME TABLE.

  • Utilizar una instrucción ALTER TABLE table_name ADD COLUMN column_name para añadir columnas al inicio o en la mitad de una tabla.

  • Al cargar datos en un destino compatible con MySQL en una tarea de carga completa, AWS DMS no informa de los errores causados por restricciones en los registros de tareas, que pueden provocar errores clave duplicados o discrepancias con el número de registros. Esto se debe a la forma en que MySQL maneja los datos locales con el comando LOAD DATA. Asegúrese de hacer lo siguiente durante la fase de carga completa:

    • Desactivar restricciones

    • Utilice la validación de AWS DMS para asegurarse de que los datos son coherentes.

  • Al actualizar el valor de una columna con el valor existente, las bases de datos compatibles con MySQL devuelven una advertencia 0 rows affected. Aunque este comportamiento no es un error desde el punto de vista técnico, es diferente de la forma en que abordan la situación otros motores de base de datos. Por ejemplo, Oracle realiza una actualización de una fila. Para bases de datos compatibles con MySQL, AWS DMS genera una entrada en la tabla de control awsdms_apply_exceptions y registra la siguiente advertencia.

    Some changes from the source database had no impact when applied to the target database. See awsdms_apply_exceptions table for details.
  • Aurora sin servidor está disponible como destino para Amazon Aurora versión 1, compatible con MySQL versión 5.6. Aurora sin servidor está disponible como destino para Amazon Aurora versión 2, compatible con MySQL versión 5.7. (Seleccione la versión 2.07.1 de Aurora MySQL para poder usar Aurora sin servidor con la compatibilidad de MySQL 5.7). Para obtener más información sobre Aurora sin servidor, consulte Uso de Amazon Aurora sin servidor en la Guía del usuario de Amazon Aurora.

  • AWS DMS no admite el uso de un punto de conexión de lectura para Aurora o Amazon RDS, a menos que las instancias estén en modo de escritura, es decir, los parámetros read_only y innodb_read_only estén configurados en 0 o OFF. Para obtener más información acerca del uso de Amazon RDS y Aurora como objetivos, consulte lo siguiente:

Configuración de punto de conexión al usar una base de datos compatible con MySQL como destino para AWS DMS

Puede utilizar la configuración de punto de conexión para configurar la base de datos de destino compatible con MySQL de forma similar al uso de atributos de conexión adicionales. Se especifican los ajustes cuando se crea el punto de conexión de destino mediante la consola de AWS DMS o mediante el comando create-endpoint en la AWS CLI, con la sintaxis JSON --my-sql-settings '{"EndpointSetting": "value", ...}'.

La siguiente tabla muestra la configuración de punto de conexión que puede utilizar con MySQL como destino.

Nombre Descripción

TargetDbType

Especifica dónde se migran las tablas de origen en el destino, bien en una base de datos o en varias. Si especifica SPECIFIC_DATABASE, debe especificar el nombre de la base de datos, ya sea cuando utilice la AWS CLI o la AWS Management Console.

Valor predeterminado: MULTIPLE_DATABASES

Valores válidos: {SPECIFIC_DATABASE, MULTIPLE_DATABASES}

Ejemplo: --my-sql-settings '{"TargetDbType": "MULTIPLE_DATABASES"}'

ParallelLoadThreads

Mejora el desempeño cuando se cargan datos en la base de datos de destino compatible con MySQL. Especifica el número de subprocesos que se va a utilizar para cargar los datos en la base de datos de destino compatible con MySQL. Si se configuran muchos subprocesos esto puede repercutir negativamente en el desempeño de la base de datos porque se requiere una conexión independiente para cada subproceso.

Valor predeterminado: 1

Valores válidos: 1-5

Ejemplo: --my-sql-settings '{"ParallelLoadThreads": 1}'

AfterConnectScript

Especifica un script que se ejecuta inmediatamente después de que AWS DMS se conecta al punto de conexión.

Por ejemplo, puede especificar que el destino compatible con MySQL debe traducir las instrucciones recibidas al conjunto de caracteres latin1, que es el conjunto de caracteres compilado de manera predeterminada de la base de datos. Este parámetro normalmente mejora el desempeño al convertir de clientes UTF8.

Ejemplo: --my-sql-settings '{"AfterConnectScript": "SET character_set_connection='latin1'"}'

MaxFileSize

Especifica el tamaño máximo (en KB) de cualquier archivo .csv que se utilice para transferir datos a una base de datos compatible con MySQL.

Valor predeterminado: 32768 KB (32 MB)

Valores válidos: 1-1 048 576

--my-sql-settings '{"MaxFileSize": 512}'

CleanSrcMetadataOnMismatch

Limpia y vuelve a crear la información de metadatos de la tabla en la instancia de replicación cuando se produce una discordancia. Un ejemplo es una situación en la que la ejecución de una instrucción DDL modificada en una tabla podría dar como resultado información distinta acerca de la tabla en caché en la instancia de replicación. Booleano.

Valor predeterminado: false

Ejemplo: --my-sql-settings '{"CleanSrcMetadataOnMismatch": false}'

Puede utilizar atributos de conexión adicionales para configurar la base de datos de destino compatible con MySQL.

En la tabla siguiente se muestran los atributos de conexión adicionales que puede utilizar con MySQL como destino.

Nombre Descripción

Initstmt=SET FOREIGN_KEY_CHECKS=0;

Desactiva las comprobaciones de claves externas.

Ejemplo: --extra-connection-attributes "Initstmt=SET FOREIGN_KEY_CHECKS=0;"

Initstmt=SET time_zone

Especifica la zona horaria para la base de datos compatible con MySQL de destino.

Valor predeterminado: UTC

Valores válidos: los nombres de las zonas horarias disponibles en la base de datos MySQL de destino.

Ejemplo: --extra-connection-attributes "Initstmt=SET time_zone=US/Pacific;"

Como alternativa, puede usar el parámetro AfterConnectScript del comando --my-sql-settings para desactivar las comprobaciones de claves foráneas y especificar la zona horaria de la base de datos.

Tipos de datos de destino para MySQL

La siguiente tabla muestra los tipos de datos de destino de base de datos MySQL que se admiten cuando se utiliza AWS DMS y la asignación predeterminada desde los tipos de datos de AWS DMS.

Para obtener más información sobre los tipos de datos de AWS DMS, consulte Tipos de datos de AWS Database Migration Service.

Tipos de datos de AWS DMS

Tipos de datos de MySQL

BOOLEANO

BOOLEANO

BYTES

Si la longitud es de 1 a 65 535, utilice VARBINARY (longitud).

Si la longitud es de 65 536 a 2 147 483 647, utilice LONGLOB.

DATE

DATE

TIME

TIME

TIMESTAMP

"Si la escala es => 0 y =< 6, utilice DATETIME (escala)

Si la escala es => 7 y =< 9, utilice: VARCHAR (37)

INT1

TINYINT

INT2

SMALLINT

INT4

INTEGER

INT8

BIGINT

NUMERIC

DECIMAL (p,s)

REAL4

FLOAT

REAL8

DOUBLE PRECISION

STRING

Si la longitud es de 1 a 21 845, utilice VARCHAR (longitud).

Si la longitud es de 21 846 a 2 147 483 647, utilice LONGTEXT.

UINT1

UNSIGNED TINYINT

UINT2

UNSIGNED SMALLINT

UINT4

UNSIGNED INTEGER

UINT8

UNSIGNED BIGINT

WSTRING

Si la longitud es de 1 a 32 767, utilice VARCHAR (longitud).

Si la longitud es de 32 768 a 2 147 483 647, utilice LONGTEXT.

BLOB

Si la longitud es de 1 a 65 535, utilice BLOB.

Si la longitud es de 65 536 a 2 147 483 647, utilice LONGBLOB.

Si la longitud es 0, utilice LONGBLOB (compatibilidad completa con LOB).

NCLOB

Si la longitud es de 1 a 65 535, utilice TEXT.

Si la longitud es de 65 536 a 2 147 483 647, utilice LONGTEXT con ucs2 para CHARACTER SET.

Si la longitud es 0, utilice LONGTEXT (compatibilidad completa con LOB) con ucs2 para CHARACTER SET.

CLOB

Si la longitud es de 1 a 65 535, utilice TEXT.

Si la longitud es de 65 536 a 2 147 483 647, utilice LONGTEXT.

Si la longitud es 0, utilice LONGTEXT (compatibilidad completa con LOB).