Este artículo demuestra cómo migrar un RDS MySQL a Aurora en AWS.

Configuración de registro CNAME en la Zona Privada

En la zona de Route 53, crear un registro CNAME apuntando al endpoint del RDS MySQL actual:

rds-mysql.linuxito.com CNAME rds-mysql.abc123xyz.us-east-1.rds.amazonaws.com

Emplear un TTL de 5 ó 10 segundos. Esto es para que al momento de cambiar de instancia de base de datos se refleje rápidamente.

El CNAME apunta al RDS MySQL. Luego de completar la réplica en Aurora, se cambia el CNAME para que apunte a Aurora en vez de al RDS MSQL. Esta técnica evita tener que editar la configuración de la aplicación y/o reiniciar servicios al momento de cambiar el servidor de bases de datos. La migración es transparente.

Finalizada la migración es posible subir el TTL a 300 segundos para evitar sobrecarga de consultas DNS en el servidor de aplicación.

Luego reconfigurar la aplicación para que apunte al CNAME en lugar del endpoint del RDS.

Creación de réplica Aurora

Se sigue el procedimiento descripto en el artículo Best practices for migrating RDS for MySQL databases to Amazon Aurora.

Abrir la instancia RDS y seleccionar "Actions > Create Aurora read replica". Completar la configuración de la réplica.

Se deja el período de retención de backups de 1 día ya que es gratis y los backups que se hacen son dumps diarios desde el servidor de aplicación.

Se deshabilita "Multi-AZ deployment" y el monitoreo mejorado ("Disable enhanced monitoring"). Por último se define la ventana de mantenimiento deseada.

El proceso de creación de la réplica toma aproximadamente 30 minutos.

Al finalizar la creación, el cluster Aurora y su instancia pasan ambos al estado "Available":

Conectarse al endpoint "Writer" del cluster Aurora:

root@debian:~# mysql -h rds-aurora-cluster.cluster-abc123xyz.us-east-1.rds.amazonaws.com -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 5.7.12 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> 

Consultar el estado del slave, particularmente el valor "Seconds_Behind_Master":

MySQL [(none)]> show slave status\G
        Seconds_Behind_Master: 0

Promoción de la réplica

Antes de promover la réplica es necesario detener las escrituras en el RDS MySQL.

Detener todos los servicios en el servidor de aplicación para que se detengan las escrituras en el RDS MySQL.

# systemctl stop cron apache2 php-fpm

Promover la réplica de Aurora desde "Actions > Promote".

El proceso termina cuando aparece el evento en el log "Promoted Read Replica cluster to a stand-alone database cluster".

En Route 53, cambiar el CNAME para que apunte a Aurora y modificar el TTL a 300 segundos.

Finalmente, detener la instancia del RDS MySQL ("Actions > Stop").

Referencias

Compartí este artículo