Migración de una instantánea de RDS for MySQL a Aurora - Amazon Aurora

Migración de una instantánea de RDS for MySQL a Aurora

Puede migrar una instantánea de base de datos de una instancia de base de datos de RDS for MySQL para crear un clúster de base de datos de MySQL Aurora. El nuevo clúster de base de datos Aurora MySQL se rellena con los datos de la instancia de base de datos de RDS for MySQL original. La instantánea de base de datos debe haberse obtenido a partir de una instancia de base de datos de Amazon RDS que ejecute una versión de MySQL compatible con Aurora MySQL.

Puede migrar una instantánea de base de datos manual o automatizada. Una vez creado el clúster de base de datos, podrá crear réplicas de Aurora opcionales.

nota

También puede migrar una instancia de base de datos de RDS para MySQL a un clúster de base de datos de Aurora MySQL. Para ello, debe crear una réplica de lectura de Aurora de su instancia de base de datos de RDS para MySQL de origen. Para obtener más información, consulte Migración de datos desde una instancia de base de datos de RDS para MySQL a un clúster de base de datos de Amazon Aurora MySQL con una réplica de lectura de Aurora.

No se puede migrar a la versión 3.05 o posteriores de Aurora MySQL desde algunas versiones anteriores de MySQL 8.0, como 8.0.11, 8.0.13 y 8.0.15. Le recomendamos que actualice a la versión 8.0.28 de MySQL antes de realizar la migración.

Los pasos generales que debe realizar son los siguientes:

  1. Determine la cantidad de espacio que desea aprovisionar para el clúster de base de datos de Aurora MySQL. Para obtener más información, consulte ¿Cuánto espacio necesito?

  2. Utilice la consola para crear la instantánea en la región de AWS en la que se encuentra la instancia de Amazon RDS MySQL. Para obtener más información acerca de la creación de una instantánea de base de datos, consulte Creación de una instantánea de base de datos.

  3. Si la instantánea de base de datos no se encuentra en la misma región de AWS que su clúster de base de datos, utilice la consola de Amazon RDS; para copiar la instantánea de base de datos en esa región de AWS. Para obtener más información acerca de la copia de una instantánea de base de datos, consulte Copia de una instantánea de base de datos.

  4. Utilice la consola para migrar la instantánea de base de datos y crear un clúster de base de datos de Aurora MySQL con las mismas bases de datos que la instancia de base de datos original de MySQL.

aviso

Amazon RDS limita cada cuenta de AWS a una copia de la instantánea en cada región de AWS en un momento dado.

¿Cuánto espacio necesito?

Al migrar una instantánea de una instancia de base de datos MySQL a un clúster de base de datos de Aurora MySQL, Aurora utiliza un volumen de Amazon Elastic Block Store (Amazon EBS) para formatear los datos de la instantánea antes de migrarlos. En algunos casos, se necesita espacio adicional para formatear los datos para la migración.

Las tablas que no son MyISAM y no están comprimidas pueden alcanzar un tamaño de 16 TB. Si tiene tablas MyISAM, Aurora deberá utilizar espacio adicional en el volumen para convertir las tablas con el fin de que sean compatibles con MySQL de Aurora. Si hay tablas comprimidas, Aurora tendrá que utilizar espacio adicional en el volumen para ampliar esas tablas antes de almacenarlas en el volumen del clúster de Aurora. Debido a este requisito de espacio adicional, debe asegurarse de que ninguna de las tablas MyISAM y de las tablas comprimidas que se van a migrar desde su instancia de base de datos MySQL tiene un tamaño superior a 8 TB.

Reducción de la cantidad de espacio necesario para migrar datos a Amazon Aurora MySQL

Es posible que le interese modificar su esquema de base de datos antes de migrar a Amazon Aurora. Esta modificación puede ser útil en los siguientes casos:

  • Si desea acelerar el proceso de migración.

  • Si no está seguro de cuánto espacio necesita aprovisionar.

  • Si ha intentado migrar los datos y la migración ha generado un error por falta de espacio aprovisionado.

Puede realizar los siguientes cambios para mejorar el proceso de migración de una base de datos a Amazon Aurora.

importante

Asegúrese de realizar estas actualizaciones en una instancia de base de datos nueva restaurada a partir de un snapshot de una base de datos de producción y no a partir de una instancia de producción. A continuación, puede migrar los datos de la instantánea de la nueva instancia de base de datos al clúster de base de datos de Aurora para evitar las interrupciones de servicio en la base de datos de producción.

Tipo de tabla Limitación o directriz

Tablas MyISAM

Aurora MySQL solo admite tablas InnoDB. Si hay tablas MyISAM en la base de datos, tendrá que convertirlas antes de migrarlas a Aurora MySQL. El proceso de conversión requiere más espacio para la conversión de MyISAM a InnoDB durante el procedimiento de migración.

Para reducir el riesgo de quedarse sin espacio o para acelerar el proceso de migración, convierta todas sus tablas MyISAM en tablas InnoDB antes de migrarlas. El tamaño de la tabla InnoDB resultante equivale al tamaño requerido por Aurora MySQL para esa tabla. Para convertir una tabla MyISAM a InnoDB, ejecute el siguiente comando:

alter table <schema>.<table_name> engine=innodb, algorithm=copy;

Tablas comprimidas

Aurora MySQL no admite tablas comprimidas (es decir, tablas creadas con ROW_FORMAT=COMPRESSED).

Para reducir el riesgo de quedarse sin espacio o para acelerar el proceso de migración, amplíe las tablas comprimidas mediante la configuración de ROW_FORMAT DEFAULT, COMPACT, DYNAMIC o REDUNDANT. Para obtener más información, consulte InnoDB row formats (Formatos de fila de InnoDB) en la documentación de MySQL.

Puede utilizar el siguiente script de SQL en su instancia de base de datos MySQL para obtener una lista de las tablas MyISAM o comprimidas de su base de datos.

-- This script examines a MySQL database for conditions that block -- migrating the database into Amazon Aurora. -- It needs to be run from an account that has read permission for the -- INFORMATION_SCHEMA database. -- Verify that this is a supported version of MySQL. select msg as `==> Checking current version of MySQL.` from ( select 'This script should be run on MySQL version 5.6 or higher. ' + 'Earlier versions are not supported.' as msg, cast(substring_index(version(), '.', 1) as unsigned) * 100 + cast(substring_index(substring_index(version(), '.', 2), '.', -1) as unsigned) as major_minor ) as T where major_minor <> 506; -- List MyISAM and compressed tables. Include the table size. select concat(TABLE_SCHEMA, '.', TABLE_NAME) as `==> MyISAM or Compressed Tables`, round(((data_length + index_length) / 1024 / 1024), 2) "Approx size (MB)" from INFORMATION_SCHEMA.TABLES where ENGINE <> 'InnoDB' and ( -- User tables TABLE_SCHEMA not in ('mysql', 'performance_schema', 'information_schema') or -- Non-standard system tables ( TABLE_SCHEMA = 'mysql' and TABLE_NAME not in ( 'columns_priv', 'db', 'event', 'func', 'general_log', 'help_category', 'help_keyword', 'help_relation', 'help_topic', 'host', 'ndb_binlog_index', 'plugin', 'proc', 'procs_priv', 'proxies_priv', 'servers', 'slow_log', 'tables_priv', 'time_zone', 'time_zone_leap_second', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'user' ) ) ) or ( -- Compressed tables ROW_FORMAT = 'Compressed' );

El script genera una salida similar a la del siguiente ejemplo. El ejemplo muestra dos tablas que se deben convertir de MyISAM a InnoDB. La salida también incluye el tamaño aproximado de cada tabla en megabytes (MB).

+---------------------------------+------------------+ | ==> MyISAM or Compressed Tables | Approx size (MB) | +---------------------------------+------------------+ | test.name_table | 2102.25 | | test.my_table | 65.25 | +---------------------------------+------------------+ 2 rows in set (0.01 sec)

Migración de una instantánea de base de datos RDS para MySQL a un clúster de base de datos Aurora MySQL

Puede migrar una instantánea de base de datos de una instancia de base de datos de RDS para MySQL a fin de crear un clúster de base de datos de Aurora MySQL mediante la AWS Management Console o la AWS CLI. El nuevo clúster de base de datos Aurora MySQL se rellena con los datos de la instancia de base de datos de RDS for MySQL original. Para obtener más información acerca de la creación de una instantánea de base de datos, consulte Creación de una instantánea de base de datos.

Si la instantánea de base de datos no se encuentra en la región de AWS en la que desea ubicar sus datos, copie la instantánea de base de datos en dicha región de AWS. Para obtener más información acerca de la copia de una instantánea de base de datos, consulte Copia de una instantánea de base de datos.

Al migrar la instantánea de base de datos con la AWS Management Console, esta realiza las acciones necesarias para crear tanto el clúster de base de datos como la instancia principal.

También puede elegir que el nuevo clúster de base de datos de Aurora MySQL se cifre en reposo mediante una AWS KMS key.

Para migrar una instantánea de base de datos MySQL con la AWS Management Console
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon RDS en https://console.aws.amazon.com/rds/.

  2. Inicie la migración de datos desde la instancia de base de datos MySQL a desde la instantánea:

    Para iniciar la migración desde la instancia de base de datos:

    1. En el panel de navegación, elija Databases (Bases de datos) y, a continuación, seleccione la instancia de base de datos de MySQL.

    2. En Actions (Acciones), elija Migrate latest snapshot (Migrar última instantánea).

    Para iniciar la migración desde la instantánea:

    1. Elija Snapshots (Instantáneas).

    2. En la página Snapshots (Instantáneas), elija la instantánea que desea migrar a un clúster de base de datos de Aurora MySQL.

    3. Elija Snapshot Actions y, a continuación, seleccione Migrate Snapshot.

    Aparece la página Migrate Database.

  3. Defina los siguientes valores en la página Migrate Database (Migrar base de datos):

    • Migrate to DB Engine (Migrar a motor de base de datos): seleccione aurora.

    • DB Engine Version (Versión de motor de base de datos): seleccione la versión del motor de base de datos para el clúster de base de datos de Aurora MySQL.

    • Clase de instancia de base de datos: elija una clase de instancia de base de datos que tenga el almacenamiento y la capacidad requeridos para la base de datos, por ejemplo db.r3.large. Los volúmenes de clúster de Aurora crecen automáticamente a medida que se incrementa la cantidad de datos de la base de datos. Un volumen de clúster de Aurora puede aumentar hasta un tamaño máximo de 128 tebibytes (TiB). Por lo tanto, solo tiene que seleccionar una clase de instancia de base de datos que se adapte a sus necesidades actuales de almacenamiento. Para obtener más información, consulte Información general del almacenamiento de Amazon Aurora.

    • DB Instance Identifier (Identificador de instancias de bases de datos): escriba un nombre para el clúster de base de datos que sea único para su cuenta en la región de AWS que ha seleccionado. Este identificador se utiliza en las direcciones de punto de enlace para las instancias del clúster de base de datos. Puede optar por agregar al nombre información como la región de AWS y el motor de base de datos que ha seleccionado, por ejemplo, aurora-cluster1.

      El identificador de instancias de bases de datos tiene las siguientes limitaciones:

      • Debe contener de 1 a 63 caracteres alfanuméricos o guiones.

      • El primer carácter debe ser una letra.

      • No puede terminar con un guion ni contener dos guiones consecutivos.

      • Debe ser único para todas las instancias de base de datos por cada cuenta de AWS y por cada región de AWS.

    • Virtual Private Cloud (VPC): si ya dispone de una VPC, puede utilizarla con su clúster de base de datos de Aurora MySQL si selecciona el identificador de la VPC, por ejemplo, vpc-a464d1c1. Para obtener más información sobre la creación de una VPC., consulte Tutorial: Creación de una VPC para utilizarla con un clúster de base de datos (solo IPv4).

      De lo contrario, puede elegir que Aurora cree una VPC automáticamente seleccionando Create a new VPC (Crear una nueva VPC).

    • DB subnet group (Grupo de subredes de base de datos): si ya dispone de un grupo de subredes, puede utilizarlo con el clúster de base de datos de MySQL de Aurora si selecciona el identificador del grupo de subredes, por ejemplo, gs-subnet-group1.

      De lo contrario, puede elegir que Aurora cree un grupo de subredes automáticamente seleccionando Create a new subnet group (Crear un nuevo grupo de subredes).

    • Public accessibility (Accesibilidad pública): seleccione No para especificar que a las instancias de su clúster de base de datos solo pueden obtener acceso los recursos que se encuentren dentro de su VPC. Seleccione Yes (Sí) para especificar que los recursos de la red pública pueden obtener acceso a las instancias de su clúster de base de datos. El valor predeterminado es Yes (Sí).

      nota

      No es necesario que su clúster de base de datos de producción esté en una subred pública, ya que solo los servidores de su aplicación necesitan acceso a su clúster de base de datos. Si su clúster de base de datos no necesita estar en una subred pública, defina Publicly Accessible (Accesible públicamente) como No.

    • Availability Zone (Zona de disponibilidad): seleccione la zona de disponibilidad para alojar la instancia principal del clúster de base de datos de Aurora MySQL. Para hacer que Aurora seleccione una zona de disponibilidad automáticamente, seleccione No Preference (Sin preferencias).

    • Database Port (Puerto de base de datos): indique el puerto predeterminado que se utilizará al conectar a instancias del clúster de base de datos Aurora MySQL. El valor predeterminado es 3306.

      nota

      Es posible que se encuentre detrás de un firewall de una compañía que no permite el acceso a los puertos predeterminados, como el puerto predeterminado de MySQL, el 3306. En este caso, proporcione un valor de puerto permitido por el firewall corporativo. Recuerde el valor del puerto cuando se conecte más adelante al clúster de base de datos de Aurora MySQL.

    • Encryption (Cifrado): elija Enable Encryption (Habilitar cifrado) para que el nuevo clúster de base de datos de Aurora MySQL se cifre en reposo. Si elige Enable encryption (Habilitar cifrado), debe elegir una clave de KMS como valor de AWS KMS key.

      Si la instantánea de base de datos no está cifrada, especifique una clave de cifrado para cifrar el clúster de base de datos en reposo.

      Si la instantánea de base de datos está cifrada, especifique una clave de cifrado para cifrar el clúster de base de datos en reposo con la clave de cifrado especificada. Puede especificar la clave de cifrado utilizada por la instantánea de base de datos o una clave distinta. No puede crear un clúster de base de datos sin cifrar a partir de una instantánea de base de datos cifrada.

    • Auto Minor Version Upgrade (Actualización automática a versiones secundarias): este ajuste no se aplica a los clústeres de base de datos Aurora MySQL.

      Para obtener más información acerca de las actualizaciones de motor de Aurora MySQL, consulte Actualizaciones del motor de base de datos de Amazon Aurora MySQL.

  4. Elija Migrate (Migrar) para migrar la instantánea de base de datos.

  5. Elija Instances y, a continuación, seleccione el icono de flecha para mostrar la información detallada del clúster de base de datos y monitorizar el progreso de la migración. En la página de detalles, encontrará el punto de enlace del clúster que se utiliza para conectar a la instancia principal del clúster de base de datos. Para obtener más información acerca de la conexión a un clúster de base de datos de Aurora MySQL, consulte Conexión a un clúster de base de datos Amazon Aurora.

Puede crear un clúster de base de datos de Aurora desde una instantánea de base de datos de una instancia de base de datos de RDS for MySQL con el comando restore-db-cluster-from-snapshot y los siguientes parámetros:

  • --db-cluster-identifier: nombre del clúster de base de datos que se creará.

  • --engine aurora-mysql: para un clúster de base de datos compatible con MySQL 5.7 o con MySQL 8.0.

  • --kms-key-id: el AWS KMS key para cifrar, si lo desea, el clúster de base de datos en función de si la instantánea de base de datos está cifrada o no.

    • Si la instantánea de base de datos no está cifrada, especifique una clave de cifrado para cifrar el clúster de base de datos en reposo. De lo contrario, el clúster no estará cifrado.

    • Si la instantánea de base de datos está cifrada, especifique una clave de cifrado para cifrar el clúster de base de datos en reposo con la clave de cifrado especificada. De lo contrario, el clúster de base de datos se cifrará en reposo con la clave de cifrado de la instantánea de base de datos.

      nota

      No puede crear un clúster de base de datos sin cifrar a partir de una instantánea de base de datos cifrada.

  • --snapshot-identifier: el nombre de recurso de Amazon (ARN) de la instantánea de base de datos que se va a migrar. Para obtener más información sobre los ARN de Amazon RDS, consulte Amazon Relational Database Service (Amazon RDS).

Al migrar la instantánea de base de datos con el comando RestoreDBClusterFromSnapshot, este crea tanto el clúster de base de datos como la instancia principal.

En este ejemplo, va a crear un clúster de base de datos compatible con MySQL 5.7 denominado mydbcluster a partir de una instantánea de base de datos con un ARN definido en mydbsnapshotARN.

Para Linux, macOS, o Unix:

aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier mydbcluster \ --snapshot-identifier mydbsnapshotARN \ --engine aurora-mysql

En Windows:

aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier mydbcluster ^ --snapshot-identifier mydbsnapshotARN ^ --engine aurora-mysql

En este ejemplo, va a crear un clúster de base de datos compatible con MySQL 5.7 denominado mydbcluster a partir de una instantánea de base de datos con un ARN definido en mydbsnapshotARN.

Para Linux, macOS, o Unix:

aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier mydbcluster \ --snapshot-identifier mydbsnapshotARN \ --engine aurora-mysql

En Windows:

aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier mydbcluster ^ --snapshot-identifier mydbsnapshotARN ^ --engine aurora-mysql