
Introducción
La migración de una base de datos MySQL es una operación crítica que afecta a la integridad de los datos, la estabilidad de las aplicaciones y las funciones de restauración. Le explicamos cómo utilizar mysqldump, migrar usuarios, preservar la integridad de los datos y tener en cuenta las sutilezas de las diferentes versiones de MySQL.
¿Cuándo es necesaria una migración?
- Transferencia a un nuevo proveedor de alojamiento o a un nuevo servidor.
- Actualización de la versión de MySQL.
- Configuración de la replicación o la distribución de la carga.
- Consolidación de bases de datos.
Riesgos y cómo minimizarlos
- Incompatibilidad de versiones: diferencias en sql_mode, default_authentication_plugin, codificaciones (utf8mb4_unicode_ci vs utf8mb4_0900_ai_ci).
- Pérdida de permisos: los usuarios se registran por separado y deben transferirse manualmente.
- Tiempo de inactividad de la aplicación durante la migración sin replicación.
- Volcado incoherente: –single-transaction solo funciona con InnoDB; para MyISAM, es necesario FLUSH TABLES WITH READ LOCK.
Plan paso a paso para la migración
Paso 1. Crear un volcado
Palabra clave principal (1): migración de base de datos MySQL.
Crear un volcado conservando la lógica:
mysqldump -u root -p --single-transaction --routines --triggers --events olddb > dump.sql
- –single-transaction reduce los bloqueos (solo funciona para InnoDB).
- –routines, –triggers, –events conserva los procedimientos, los desencadenantes y los programadores de eventos.
Paso 2. Transfiera el volcado
Transfiéralo mediante SCP o rsync a través de un canal seguro. Compruebe la integridad del archivo:
sha256sum dump.sql
Paso 3. Creación de la base de datos
En el nuevo servidor:
mysql -u root -p -e "CREATE DATABASE newdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
Nota: utf8mb4_unicode_ci puede diferir de utf8mb4_0900_ai_ci en MySQL 8.0.
Paso 4. Importe el volcado.
mysql -u root -p newdb < dump.sql
Paso 5. Transferir usuarios y permisos
- Ejecute SHOW GRANTS FOR «user»@“host” y transfiera CREATE USER/GRANT.
- En MySQL 8.0, puede utilizar mysqlpump –users.
- Tenga en cuenta default_authentication_plugin (en 8.0 es caching_sha2_password).
Paso 6. Comprobación de la integridad
- Compare el número de filas de las tablas.
- Compruebe las sumas de control (pt-table-checksum).
- Pruebe las consultas SQL importantes.
Paso 7. Minimizar el tiempo de inactividad
Para sistemas críticos, utilice la replicación:
- Configure el nuevo servidor como esclavo.
- Espere a que se sincronice.
- Cambie del maestro al esclavo sin tiempo de inactividad.
Lista de comprobación antes de la migración
Unidad | ¿Qué hay que comprobar? |
Versiones | Compatibilidad con MySQL/MariaDB |
Codificación | Asegúrate de que utf8mb4 y las clasificaciones sean correctas. |
Modo SQL | Comparar sql_mode |
Derechos | Verificar GRANT |
Complementos | default_authentication_plugin |
Réplica | Comprobar el retraso |
Rollback
- Cree una copia de seguridad del servidor antiguo.
- Para realizar un rollback, puede iniciar el servidor antiguo como esclavo y, a continuación, volver atrás.
Conclusión
La migración de una base de datos MySQL es segura si se tienen en cuenta las versiones, se utilizan copias de seguridad y se comprueba la integridad. La replicación evita el tiempo de inactividad y las copias de seguridad permiten realizar una restauración rápida. La migración de una base de datos MySQL requiere un enfoque minucioso en términos de permisos, clasificación y parámetros.