(3 min. de lectura)
El mantenimiento de MySQL y MariaDB de forma periódica es una de las tareas más importantes para garantizar el rendimiento, seguridad y estabilidad de cualquier base de datos MySQL o MariaDB. Un buen plan de mantenimiento puede evitar caídas inesperadas, reducir tiempos de respuesta y alargar significativamente la vida útil de los servidores.
¿Por qué es necesario el mantenimiento?
Aunque MySQL y MariaDB son muy robustos, con el paso del tiempo se producen:
Fragmentación de tablas y índices
Acumulación de datos temporales y logs
Estadísticas desactualizadas del optimizador
Crecimiento descontrolado de archivos "ibdata1" y "binlogs"
Posibles datos corrompidos
Tareas diarias / semanales de mantenimiento
Monitorización básica
Uso de CPU, RAM y disco (htop, iotop, MySQL Workbench o herramientas como Percona Monitoring and Management
Comprobar conexiones activas:
SHOW PROCESSLIST;
SHOW STATUS LIKE 'Threads%';
Optimización de tablas
-- Para InnoDB (recomendado)
OPTIMIZE TABLE nombre_tabla;
-- Para todas las tablas de una base de datos
mysqlcheck -o --all-databases
Mantenimiento mensual recomendado
Revisar y purgar binlogssql
PURGE BINARY LOGS BEFORE DATE_SUB(NOW(), INTERVAL 7 DAY);
-- O configurarlo automáticamente:
SET GLOBAL expire_logs_days = 7;
Limpiar el slow query log
Identificar y optimizar las consultas más lentas:
SELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 20;
Comprobar integridad de tablasbash
mysqlcheck -c --all-databases
Reiniciar el caché de consultas, si se usa
FLUSH QUERY CACHE;
Mantenimiento avanzado en InnoDB
Reducir el "ibdata1", archivo de system tablespace
Este es uno de los problemas más comunes. La solución más limpia es:
Exportar todas las bases de datos con "mysqldump", por ejemplo
Detener MySQL
Eliminar los ficheros "ibdata1", "ib_logfile0" y "ib_logfile1"
Reiniciar MySQL, los ficheros del punto anterior se recrearán con el tamaño controlado
Importar los dumps
Configuraciones recomendadas en "my.cnf" / "mariadb.cnf"
innodb_file_per_table = 1
innodb_buffer_pool_size = 70% de RAM disponible
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1# Para máxima seguridad
Buenas prácticas de mantenimiento
Backups regulares: Usar mysqldump, Percona XtraBackup, mejor para entornos grandes, o MariaDB Backup.
Actualizaciones: Mantener siempre la versión de MySQL/MariaDB actualizada (parches de seguridad).
Índices: Revisar periódicamente con "EXPLAIN" y eliminar índices redundantes.
Particionamiento: Para tablas muy grandes (> 50-100 millones de filas).