Desarrollo y bases de datos
Convertir base de datos MyISAM a InnoDB, cambiando el motor de almacenamiento
Una aplicación puede requerir convertir tablas MyISAM a InnoDB. No reemplaces texto globalmente dentro del volcado ni vacíes la base de producción: el cambio debe probarse sobre una copia independiente y conservar el original como reversión.
1. Crear y verificar una copia inmutable
Detén temporalmente las escrituras y genera un volcado. La opción -p solicitará la contraseña sin incluirla en el comando:
umask 077 mysqldump --routines --triggers -u USUARIO_MYSQL -p BASE_DE_DATOS > base-antes-innodb.sql sha256sum base-antes-innodb.sql > base-antes-innodb.sql.sha256 chmod 400 base-antes-innodb.sql base-antes-innodb.sql.sha256 sha256sum -c base-antes-innodb.sql.sha256
Descarga el volcado y su checksum a otro almacenamiento. No modifiques estos ficheros.
2. Restaurar y revisar un clon
Crea una base y un usuario nuevos, restaura la copia y configura allí un clon de la aplicación:
mysql -u USUARIO_NUEVO -p BASE_NUEVA < base-antes-innodb.sql
Previsualiza las tablas MyISAM y su tamaño:
SELECT TABLE_NAME, ENGINE, TABLE_ROWS, DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'BASE_NUEVA' AND ENGINE = 'MyISAM';
Revisa claves duplicadas, índices, espacio libre y compatibilidad de la aplicación. La conversión puede bloquear tablas y necesitar espacio adicional.
3. Convertir solo las tablas revisadas
Genera una lista de sentencias exactas, compruébala y ejecuta cada una únicamente en el clon:
SELECT CONCAT('ALTER TABLE `', TABLE_NAME, '` ENGINE=InnoDB;') AS sentencia_a_revisar FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'BASE_NUEVA' AND ENGINE = 'MyISAM';
No uses una sustitución global en el .sql: podría alterar datos de usuario, comentarios o configuraciones que contengan la palabra MyISAM.
4. Validar y hacer el cambio
Compara el esquema, los índices y el recuento de filas de todas las tablas entre la base original y el clon. Prueba acceso, búsquedas, escritura, tareas programadas y las operaciones críticas de la aplicación.
Solo después de validar el clon, detén de nuevo las escrituras, sincroniza los cambios finales si corresponde y cambia las credenciales de la aplicación para usar BASE_NUEVA. Mantén la base original intacta y sin escrituras durante el periodo de observación.
Reversión
Si alguna comprobación posterior falla, detén las escrituras y restaura las credenciales anteriores para volver a la base original. Conserva tanto esa base como el volcado verificado hasta confirmar que la conversión es estable.
Si no puedes disponer de un clon o calcular el espacio necesario, contacta con soporte antes de convertir las tablas.
También te puede ayudar