Exportación de datos desde una instancia de base de datos MySQL mediante replicación - Amazon Relational Database Service

Exportación de datos desde una instancia de base de datos MySQL mediante replicación

Puede usar la replicación para exportar datos desde una instancia de base de datos RDS para MySQL o posterior a una instancia MySQL que se ejecuta fuera de Amazon RDS. En esta situación, la instancia de base de datos MySQL es la instancia de base de datos MySQL de origen y la instancia de MySQL que se ejecuta fuera de Amazon RDS es la base de datos MySQL externa.

La base de datos MySQL externa puede ejecutarse en las instalaciones en su centro de datos o en una instancia Amazon EC2. La base de datos MySQL externa debe ejecutar la misma versión que la instancia de base de datos MySQL de origen o una versión posterior.

La replicación a una base de datos MySQL externa solo se admite durante el tiempo que se tarda en exportar una base de datos desde la instancia de base de datos MySQL de origen. La replicación deberá haber terminado cuando se hayan exportado los datos y las aplicaciones pueden empezar a acceder a la instancia MySQL externa.

La siguiente lista muestra los pasos que se deben dar. Cada paso se describe más detalladamente en las siguientes posteriores.

  1. Prepare una instancia externa de base de datos MySQL.

  2. Prepare la instancia de base de datos MySQL de origen para replicación.

  3. Utilice la utilidad mysqldump para transferir la base de datos desde la instancia de base de datos MySQL de origen a la base de datos MySQL externa.

  4. Inicie la replicación a la base de datos MySQL externa.

  5. Una vez completada la exportación, detener la replicación.

Preparar una base de datos MySQL externa

Realice los siguientes pasos para preparar la base de datos MySQL externa.

Para preparar la base de datos MySQL externa

  1. Instale la base de datos MySQL externa.

  2. Conéctese a la base de datos MySQL externa como usuario maestro. A continuación, cree los usuarios que requieran los administradores, aplicaciones y servicios que acceden a la base de datos.

  3. Siga las instrucciones de la documentación de MySQL para preparar la base de datos MySQL externa como réplica. Para obtener más información, consulte la documentación de MySQL.

  4. Configure una regla de salida para que la base de datos MySQL externa funcione como réplica de lectura durante la exportación. La regla de salida permite que la base de datos MySQL externa se conecte a la instancia de base de datos MySQL de origen durante la replicación. Especifique una regla de salida que permita conexiones de Protocolo de control de transmisión (TCP) al puerto y la dirección IP de la instancia de base de datos MySQL.

    Especifique las reglas de salida adecuadas para su entorno:

    • Si la base de datos MySQL externa se está ejecutando en una instancia Amazon EC2 en una nube privada virtual (VPC) basada en el servicio Amazon VPC, especifique las reglas de salida en un grupo de seguridad de VPC. Para obtener más información, consulte Control de acceso con grupos de seguridad.

    • Si la base de datos MySQL externa se está ejecutando en una instancia Amazon EC2 que no está en una VPC, especifique las reglas de salida en un grupo de seguridad clásico de EC2.

    • Si la base de datos MySQL externa está instalada en las instalaciones, especifique las reglas de salida en un firewall.

  5. Si la base de datos MySQL externa se está ejecutando en una VPC, configure reglas para las reglas de la lista de control de acceso (ACL) de la VPC además de la regla de salida del grupo de seguridad:

    • Configure una regla ACL de entrada que permite tráfico TCP hacia los puertos 1024–65535 desde la dirección IP de la instancia de base de datos MySQL de origen.

    • Configure una regla ACL de salida que permita tráfico TCP saliente hacia el puerto y la dirección IP de la instancia de base de datos MySQL de origen.

    Para obtener más información acerca de las ACL de red de Amazon VPC, consulte ACL de red en la Guía del usuario de Amazon VPC.

  6. (Opcional) Configure el parámetro max_allowed_packeten el tamaño máximo para evitar que se produzcan errores de replicación. Recomendamos este ajuste.

Preparar la instancia de base de datos MySQL de origen

Realice los siguientes pasos para preparar la instancia de base de datos MySQL de origen como origen de replicación.

Para preparar la instancia de base de datos MySQL de origen

  1. Asegúrese de que el equipo cliente tenga suficiente espacio en disco disponible para guardar los registros binarios mientras se configura la replicación.

  2. Conéctese a la instancia de base de datos MySQL de origen y cree una cuenta de replicación siguiendo las instrucciones de Creating a User for Replication en la documentación de MySQL.

  3. Configure reglas de ingreso en el sistema que ejecuta la instancia de base de datos MySQL de origen para permitir que la base de datos MySQL externa se conecte durante la replicación. Especifique una regla de entrada que permita conexiones TCP al puerto que utiliza la instancia de base de datos MySQL desde la dirección IP de la base de datos MySQL externa.

  4. Especifique las reglas de salida:

  5. Si la instancia de base de datos MySQL se ejecuta en una VPC, configure reglas ACL de VPC además de la regla de entrada del grupo de seguridad.

    • Configure una regla ACL de entrada para permitir conexiones TCP hacia el puerto que utiliza la instancia de Amazon RDS desde la dirección IP de la base de datos MySQL externa.

    • Configure una regla ACL de salida para permitir conexiones TCP desde los puertos 1024–65535 hacia la dirección IP de la base de datos MySQL externa.

    Para obtener más información acerca de las ACL de red de Amazon VPC, consulte ACL de red en la Guía del usuario de Amazon VPC.

  6. Asegúrese de que el periodo de retención de copia de seguridad configurado es lo bastante largo para que no se purguen logs binarios durante la exportación. Si se vacía alguno de los registros antes de que termine la exportación, deberá reiniciar la replicación desde el principio. Para obtener más información acerca de la configuración del periodo de retención de copia de seguridad, consulte Trabajo con copias de seguridad.

  7. Utilice el procedimiento almacenado mysql.rds_set_configuration para configurar un periodo de retención de registro binario lo bastante largo como para que no se vacíen registros binarios durante la exportación. Para obtener más información, consulte Acceso a los registros binarios de MySQL.

  8. Como medida adicional para asegurarse de que no se vacíen los registros binarios de la instancia de base de datos MySQL origen, cree una réplica de lectura en Amazon RDS de la instancia de base de datos MySQL de origen. Para obtener más información, consulte Creación de una réplica de lectura.

  9. Una vez creada la réplica de lectura de Amazon RDS, ejecute el procedimiento almacenado mysql.rds_stop_replication para detener el proceso de replicación. La instancia de base de datos MySQL de origen ya no vacía sus archivos de registro binarios, por lo que están disponibles para el proceso de replicación.

  10. (Opcional) Configure los parámetros max_allowed_packet y slave_max_allowed_packet en el tamaño máximo para evitar errores de replicación. El tamaño máximo de ambos parámetros es 1 GB. Recomendamos esta configuración para ambos parámetros. Para obtener información acerca de cómo configurar los parámetros, consulte Modificación de parámetros de un grupo de parámetros de base de datos.

Copia de la base de datos

Realice los siguientes pasos para copiar la base de datos.

Para copiar la base de datos

  1. Conéctese a la réplica de lectura de RDS de la instancia de base de datos MySQL de origen y ejecute la instrucción SHOW REPLICA STATUS\G de MySQL. Anote los valores siguientes:

    • Master_Host

    • Master_Port

    • Master_Log_File

    • Exec_Master_Log_Pos

    nota

    Versiones anteriores de MySQL utilizaban SHOW SLAVE STATUS en lugar de SHOW REPLICA STATUS. Si usa una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE STATUS.

  2. Use la utilidad mysqldump para crear una instantánea, que copia los datos de Amazon RDS a su equipo cliente local. A continuación, ejecute otra utilidad para cargar los datos en la base de datos MySQL externa. Asegúrese de que el equipo cliente tenga suficiente espacio para albergar los archivos de mysqldump de las bases de datos que se van a replicar. Para las bases de datos de gran tamaño, este proceso puede tardar varias horas. Siga las instrucciones de Creación de una instantánea de datos mediante mysqldump en la documentación de MySQL.

    En el ejemplo siguiente se muestra cómo ejecutar mysqldump en un cliente y, a continuación, canalizar el volcado a la utilidad de cliente mysql, con lo que los datos se cargan en la base de datos de MySQL externa.

    Para Linux, macOS o Unix:

    mysqldump -h source_MySQL_DB_instance_endpoint \ -u user \ -ppassword \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 \ --compress \ --port 3306

    Para Windows:

    mysqldump -h source_MySQL_DB_instance_endpoint ^ -u user ^ -ppassword ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 ^ --compress ^ --port 3306

    El siguiente ejemplo ejecuta mysqldump en un cliente y escribe el volcado en un archivo.

    Para Linux, macOS o Unix:

    mysqldump -h source_MySQL_DB_instance_endpoint \ -u user \ -ppassword \ --port=3306 \ --single-transaction \ --routines \ --triggers \ --databases database database2 > path/rds-dump.sql

    Para Windows:

    mysqldump -h source_MySQL_DB_instance_endpoint ^ -u user ^ -ppassword ^ --port=3306 ^ --single-transaction ^ --routines ^ --triggers ^ --databases database database2 > path\rds-dump.sql

Finalización de la exportación

Realice los siguientes pasos para completar la exportación.

Para finalizar la exportación

  1. Utilice la instrucción CHANGE MASTER de MySQL para configurar la base de datos MySQL externa. Especifique el ID y la contraseña del usuario a los que se han concedido permisos REPLICATION SLAVE. Especifique los valores Master_Host, Master_Port, Relay_Master_Log_File y Exec_Master_Log_Pos que obtuvo de la instrucción SHOW REPLICA STATUS\G de MySQL que ejecutó en la réplica de lectura de RDS. Para obtener más información, consulte la documentación de MySQL.

    nota

    Versiones anteriores de MySQL utilizaban SHOW SLAVE STATUS en lugar de SHOW REPLICA STATUS. Si usa una versión de MySQL anterior a la 8.0.23, utilice SHOW SLAVE STATUS.

  2. Utilice el comando START REPLICA de MySQL para iniciar la reproducción desde la instancia de base de datos MySQL de origen a la base de datos MySQL externa.

    Esto inicia la replicación desde la instancia de base de datos MySQL de origen y exporta todos los cambios de origen que se han producido después de detener la replicación desde la réplica de lectura de Amazon RDS.

    nota

    Versiones anteriores de MySQL utilizaban START SLAVE en lugar de START REPLICA. Si usa una versión de MySQL anterior a la 8.0.23, utilice START SLAVE.

  3. Ejecute el comando SHOW REPLICA STATUS\G de MySQL en la base de datos MySQL externa para verificar que está funcionando como una réplica de lectura. Para obtener más información sobre la interpretación de los resultados, consulte la documentación de MySQL.

  4. Después de que la reproducción en la base de datos MySQL externa haya alcanzado la instancia de base de datos MySQL de origen, utilice el comando STOP REPLICA de MySQL para detener la reproducción desde la instancia de base de datos MySQL de origen.

    nota

    Versiones anteriores de MySQL utilizaban STOP SLAVE en lugar de STOP REPLICA. Si usa una versión de MySQL anterior a la 8.0.23, utilice STOP SLAVE.

  5. En la réplica de lectura en Amazon RDS llame al procedimiento almacenado mysql.rds_start_replication. Ello permitirá a Amazon RDS comenzar a vaciar los archivos de registro binarios de la instancia de base de datos MySQL de origen.