Cómo migrar una base de datos MySQL a un endpoint existente de RDS Aurora MySQL

Estaba trabajando en una consolidación de bases de datos, para poder centralizar en una sola instancia de Aurora MySQL múltiples bases de datos que se tenían dispersas en MySQL. Les explicaré el paso a paso realizado para lograr esta consolidación como también todas las lecciones aprendidas.

Escenario

Yo tenia una instancia Aurora MySQL tipo R (optimizada en memoria) la cual estaba reservada a 12 meses, por la pandemia actual la carga sobre esta base de datos había bajado considerablemente, como una estrategia de costos consideré consolidar las BD MySQL compatibles en el endpoint de aurora. Así comencé el proceso de consolidación de las mismas.

Herramientas utilizadas

  • Toda la consolidación se hizo utilizando Cloud9 utilizando la terminal.

Solución paso a paso

Base de datos Origen

1- Conectarse desde Cloud9 a la instancia a través de la terminal:

mysql -h MYENDPOINT.cluster-ID.us-east-1.rds.amazonaws.com -u databaseuser -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 167040453
Server version: 5.7.12 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

2- Se ejecuta el dump sobre la base de datos seleccionada con el siguiente comando:

mysqldump -h MYENDPOINT.cluster-ID.us-east-1.rds.amazonaws.com     -u MyUser     -p'MyPassword'     --port=3306     --single-transaction     --routines     --triggers     --databases  MyDatabase     --compress      --port 3306 MyDatabase.sql

2.1- Opcionalmente podemos también enviar el dump directamente a S3 con el siguiente comando:

mysqldump -h MYENDPOINT.cluster-ID.us-east-1.rds.amazonaws.com     -u MyUser     -p'MyPassword'     --port=3306     --single-transaction     --routines     --triggers     --databases  MyDatabase     --compress      --port 3306 | gzip -9 | aws s3 cp - s3://MyBucket/MyDatabase.sql.gz

Base de datos Destino

1- Conectarse al endpoint destino:

mysql -h MYENDPOINT_DESTINO.cluster-ID.us-east-1.rds.amazonaws.com -u databaseuser -p

2- Crear un usuario de la BD:

CREATE USER 'MyUser_DESTINO'@'%' IDENTIFIED BY 'MyPassword_DESTINO';

3- Crear la BD:

CREATE DATABASE MyDatabase_DESTINO;

4- Asignar los privilegios al usuario creado sobre la base de datos creada:

GRANT ALL PRIVILEGES on MyDatabase_DESTINO.* To MyUser_DESTINO@'%';

5- Aplicar los cambios sobre las tablas:

FLUSH PRIVILEGES;

6- Cargar el Dump en la nueva base de datos:

mysql -h MYENDPOINT_DESTINO.cluster-ID.us-east-1.rds.amazonaws.com -u MyUser_DESTINO -MyPassword_DESTINO' MyDatabase_DESTINO < MyDatabase.sql

7- Verificación de la carga de la BD, una vez conectados a la BD destino revisamos la cantidad de tablas y que tengamos la información cargada:

mysql> use MyDatabase_DESTINO;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+----------------------------------------------------------+
| Tables_in_MyDatabase_DESTINO |
+----------------------------------------------------------+
| MyTabla_1 |
| MyTabla_2 |
| MyTabla_3 |

Lecciones Aprendidas

1- El proceso fue muy sencillo, idealmente recomiendo ejecutarlo en Cloud9, recuerden que el role asignado a la instancia de Cloud9 debería tener permisos sobre escritura en S3 si se dese hacer el paso 2.1 al migrar el dump a s3.

2- Una vez hicimos la consolidación de las BD, el monitoreo detallado por cloudwatch registró un incremento en carga de la BD pero algo no crítico que pueda afectar el rendimiento de las BD.

3- También este proceso puede ejecutarse utilizando herramientas gráficas como MySQL Workbench o similares.

4- Si piensas hacer el examen de AWS Database Speciality deberías practicar este tipo de laboratorios antes del examen.

AWS x10, Tech Director en Globant con más de 7 años de experiencia en AWS.

AWS x10, Tech Director en Globant con más de 7 años de experiencia en AWS.