Uno de los errores mas raros que me he encontrado, por lo casual que aparece cuando le da la gana, es cuando, al intentar iniciar una base de datos nueva o reiniciar una existente, aparece un error que no permite arrancar el servicio. Hoy he querido realizar un Tutorial para dar solución a un servicio MySQL que no reinicia y compartirlo con mis lectores.
Aun no se cual es la causa exacta, el error se manifiesta directamente en la respuesta del systemctl status mysqld
como error y solo da escuetos datos para a continuacion guiarnos al journalctl -xe
que nos revela un error mas especifico, pero todavia muy extraño [ERROR] Unknown/unsupported storage engine: InnoDB
Por el momento, es posible que la causa del problema, no directamente de sus consecuencias, esta relacionado con un problema de limites de memoria. El OOMKiller, del que ya hable antes, puede haber interrumpido algún proceso de respaldo mientras se ejecutaba, por lo que los datos quedaron finalmente corruptos.
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] /usr/sbin/mariadbd (mysqld 10.5.18-MariaDB-0+deb11u1) starting as process 2372 ...
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Uses event mutexes
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Number of pools: 1
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Using Linux native AIO
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Initializing buffer pool, total size = 134217728, chunk size = 134217728
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Completed initialization of buffer pool
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=3207198642,3207198642
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT at 3207198642 between the checkpoint 3207198642 and the end 3229941512.
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
ene 07 22:11:35 interlan mariadbd[2372]: 2023-01-07 22:11:35 0 [Note] InnoDB: Starting shutdown...
ene 07 22:11:36 interlan mariadbd[2372]: 2023-01-07 22:11:36 0 [ERROR] Plugin 'InnoDB' init function returned error.
ene 07 22:11:36 interlan mariadbd[2372]: 2023-01-07 22:11:36 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
ene 07 22:11:36 interlan mariadbd[2372]: 2023-01-07 22:11:36 0 [Note] Plugin 'FEEDBACK' is disabled.
ene 07 22:11:36 interlan mariadbd[2372]: 2023-01-07 22:11:36 0 [ERROR] Unknown/unsupported storage engine: InnoDB
ene 07 22:11:36 interlan mariadbd[2372]: 2023-01-07 22:11:36 0 [ERROR] Aborting
ene 07 22:11:36 interlan systemd[1]: mariadb.service: Main process exited, code=exited, status=1/FAILURE
Solución a servicio MySQL que no reinicia
Si no tienes aprecio a los datos que contenía mysql/mariadb, es probable que le apuestes a desinstalar y reinstalar, pero esto no arreglará el problema. tendrías que hacer una limpieza total para lograrlo, pero por lo mismo, te ahorraré unos cuantos pasos con ayuda de un usuario de la pagina serverfault llamado apache, quien sugiere la respuesta mas sencilla y fácil de ejecutar.
Dependiendo de tu instalación, en mi caso, Debian 8, hay que eliminar los archivos ib_logfile0
e ib_logfile1
del directorio /var/lib/mysql/
luego de eso, reiniciar el servicio con systemctl restart mysqld
y vuelve a funcionar normalmente.
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile0
systemctl restart mysqld
Aunque la solución es sencilla, es un problema que puede desconcertar si no se sabe tratar. La primera vez que me salió fue por constantes OOMKiller debido a falta de memoria RAM en un sistema que carecía de swap. Los archivos ib_logfile
no son archivos de logs como los que se pueden encontrar en /var/logs
sino que son archivos de registro de transacciones que se utilizan para mantener la integridad de los datos almacenados. Se supone que mediante estos archivos es posible hasta reconstruir la base de datos en caso de algún problema, pero en este caso, el problema eran esos archivos.
Si bien, una vez eliminados estos archivos se vuelven a reconstruir, no es bueno eliminarlos a la ligera porque en caso de tener una base de datos en producción, pueden causar un gran desastre.
3 respuestas a “Tutorial: Solución a servicio MySQL que no reinicia”
[…] tienes algún problema con tu servidor MySQL, visita esta entrada, tal vez te ayude en caso de que el servicio no inicie tras un apagado […]
Me paso este error, pero era por espacio en disco, también es bueno revisarlo antes de borrar archivos importantes.
Justamente ayer me salió por falta de espacio en el disco. Estuve a punto de borrar cosas a lo loco. no se como se me ocurrió consultar el espacio libre, con lo que todo volvió a la normalidad cuando lo resolví