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

Herramientas utilizadas

Solución paso a paso

Base de datos Origen

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

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

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.