¿Cómo migro mi instancia de base de datos de Amazon RDS for MySQL con una hora de inicio personalizada?

Última actualización: 15-10-2021

Quiero migrar mi instancia de base de datos de Amazon Relational Database Service (Amazon RDS) para MySQL a otra instancia de base de datos MySQL con una hora de inicio personalizada. ¿Cómo puedo hacerlo?

Descripción corta

Para migrar datos de Amazon RDS for MySQL a otra instancia de base de datos MySQL, puede utilizar uno de los métodos siguientes:

  • Replicación basada en binlog
    Nota: Si utiliza la versión 8.0.17 de MySQL, es posible que el motor no imprima la posición y el nombre del archivo del último archivo binlog durante una recuperación de bloqueo. Como resultado, no podrá utilizar el enfoque de replicación binlog para migrar los datos. Consulte el sitio web de MySQL para obtener información sobre este problema conocido.
  • AWS DMS

Resolución

Replicación de binlog

Requisitos previos:

  • La replicación de binlog utiliza archivos binlog que se generan en el origen para registrar los cambios en curso. Defina el parámetro binlog_format en el formato de registro binario de su elección (ROW, STATEMENT o MIXED). 
  • Aumente el parámetro de horas de retención de binlog a un valor superior al valor actual. De esta forma, los binlogs que aún no se han enviado permanecen en la instancia de origen de Amazon RDS for MySQL.
  • Asegúrese de que se pueda acceder a la instancia de Amazon RDS for MySQL desde el host de destino.

Para migrar datos de Amazon RDS for MySQL a otra instancia de base de datos MySQL mediante la replicación de binlog, realice los siguientes pasos:

1.    Realice restauraciones a un momento dado desde la instancia de base de datos de Amazon RDS de origen con una hora de inicio personalizada (o un valor de un momento dado).

2.    Cree una copia de seguridad de la instancia de RDS de restauración puntual.

Por ejemplo, puede usar mysqldump para realizar esta tarea:

mysqldump -h rdsendpoint -u username -p dbname > backupfile.sql

3.    Compruebe el archivo de registro de errores de la instancia de RDS de restauración a un momento dado y registre el mensaje relacionado con el último archivo binlog y la posición aplicados. 

A continuación se muestra un ejemplo de mensaje de archivo de registro:

[Note] InnoDB: Last MySQL binlog file position 0 456, file name mysql-bin-changelog.152707

Nota: Tendrá que acceder al archivo binlog de registros y a los archivos binlog posteriores para la replicación. La replicación de la instancia de RDS de origen solo se puede realizar mediante estos archivos. El período máximo de retención de binlogs en RDS MySQL se puede establecer en solo siete días y el valor predeterminado es “NULL”. (Para obtener más información, consulte mysql.rds_set_configuration). Por lo tanto, conserve estos archivos binlog en la instancia de origen para completarlos en pasos posteriores.

4.    Configure un usuario de replicación y otorgue los privilegios necesarios al usuario en la instancia de origen de Amazon RDS for MySQL:

mysql> create user repl_user@'%' identified by 'repl_user';
mysql> grant replication slave, replication client on *.* to repl_user@'%';
mysql> show grants for repl_user@'%';

5.    Transfiera el archivo de copia de seguridad al servidor en las instalaciones de destino iniciando sesión en MySQL-target. Cree una nueva base de datos y restaure la base de datos mediante dumpfile en la nueva instancia de base de datos externa:

$ mysql -h hostname -u username -p dbname < backupfile.sql

6.    Detenga el motor MySQL de destino:

$ service mysqld stop

7. Modifique los parámetros del archivo my.cnf para que apunten a su ID de servidor único y a la base de datos que intenta replicar.

Por ejemplo:

server_id=2
replicate-do-db=testdb

Si va a replicar varias bases de datos, puede utilizar la opción replicate-do-db varias veces y especificar esas bases de datos en líneas separadas como esta:

replicate-do-db=<db_name_1>
replicate-do-db=<db_name_2>
replicate-do-db=<db_name_N>

Para obtener más información sobre cómo crear un filtro de replicación con el nombre de la base de datos, consulte replicate-do-db en el sitio web de MySQL.

8.    Guarde el archivo y reinicie el motor de base de datos MySQL en la instancia de base de datos MySQL de destino.

Por ejemplo, si se trata de un sistema Linux, puede usar la siguiente sintaxis:

service mysqld restart

9.    Establezca una conexión con la instancia de base de datos de origen de RDS for MySQL.

Por ejemplo:

mysql> change master to master_host='rds-endpoint',master_user='repl_user', master_password='password', master_log_file='mysql-bin.152707', master_log_pos= 456;

master_host: punto de enlace de la instancia de origen de Amazon RDS for MySQL.
master_user: nombre del usuario de replicación (creado en el paso 4).
master_password: contraseña del usuario de replicación.
master_log_file: el nombre del archivo binlog registrado en el paso 3. (En el paso 3, el resultado de ejemplo indicaba “mysql-bin-changelog.152707” como nombre del archivo binlog).
master_log_pos: posición de binlog registrada en el paso 3. (En el paso 3, el resultado de ejemplo indicaba “456” como posición del archivo binlog).

10.     Inicie sesión en la instancia de base de datos de RDS for MySQL de destino e inicie la replicación con el siguiente comando:

mysql> start slave;

11.  Confirme que la replicación se está sincronizando entre la instancia de base de datos de RDS for MySQL de origen y la instancia de base de datos MySQL de destino:

mysql> show slave status\G

AWS DMS

Antes de configurar la replicación con AWS Database Migration Service (AWS DMS), compruebe los siguientes recursos:

  • Para realizar una copia de seguridad de la instancia restaurada a un momento dado, consulte los pasos 1 a 5 de la sección Replicación de Binlog. Se recomienda seguir estos pasos, ya que la hora de inicio personalizada puede ser en cualquier punto (pasado) del período de retención de copia de seguridad. Después de restaurar la copia de seguridad desde la instancia de base de datos de destino, registre el número de secuencia de registro (LSN) de punto de control que se genera durante el proceso de recuperación de base de datos. Tendrás que hacer referencia al LSN para establecer una hora de inicio de captura de datos de cambio (CDC). Para obtener el LSN de punto de control, revise el archivo de registro de errores de la instancia de MySQL de RDS restaurada, inmediatamente después de que finalice la operación de restauración a un momento dado. Por ejemplo:
[Note] InnoDB: Log scan progressed past the checkpoint lsn 44326835524
  • Para iniciar el CDC desde un punto de inicio personalizado, el usuario puede ejecutar el comando show master status para devolver un nombre de archivo binlog, una posición y muchos otros valores.  Para obtener más información sobre cómo iniciar el CDC desde un punto de inicio personalizado, consulte Realizar la replicación a partir de un punto de inicio de CDC.
  • Para comprobar los requisitos previos para configurar una base de datos MySQL como origen de la replicación de AWS DMS, consulte Uso de una base de datos compatible con MySQL como origen de AWS DMS.
  • Para comprobar los requisitos previos para configurar una base de datos MySQL como destino de la replicación de AWS DMS, consulte Uso de una base de datos compatible con MySQL como destino de AWS Database Migration Service.

  • ¿Le resultó útil este artículo?


    ¿Necesita asistencia técnica o con la facturación?