Mysql Fatal error: Can’t open and lock privilege tables: Incorrect file format ‘host’

Mysql incorrect format hosts

Mysql Fatal error, en una de sus versiones (hay muchas más), en las que mysqlcheck no puede reparar las tablas y MySQL no arranca.

Uno de los mayores problemas del apagón eléctrico o apagado forzado de un servidor, junto con determinados sistemas de ficheros como ext3/ext4 (y otros), y MySQL, es la posibilidad de tener múltiples problemas al reiniciarse la máquina, y ver que nuestro servidor MySQL no inicia, y nuestras paginas web, y las cuentas de nuestro hosting alojadas en ese servidor MySQL son incapaces de funcionar.

Revisando los logs de MySQL y realizando tareas de reparación obtenemos distintos mensajes:

Mysql Fatal error. Análisis y solución al problema

Lo primero que debemos hacer es, como siempre, monitorizar los logs del servidor que presenta por lo general ubicados en un servidor Cpanel en /var/lib/mysql/nombredelhost.err abriendo una consola shell

Nombre del fichero log
El nombre del fichero log usado es el que normalmente existe en Cpanel por su configuración. Sin embargo, el log de MySQL puede tener otros nombres y otras ubicaciones de acuerdo a la configuración usada por nuestra distribución, o configurado en los guiones (scripts) de inicio de MySQL o en los de configuración, como my.cnf

Después en otra consola o shell interactiva con screen ejecutaremos los comandos necesarios para monitorizar el problema.

Inicio o reinicio del servidor mysql

Este mensaje es grave ya que mysql no puede arrancar y aquí tenemos distintas opciones según nuestra política de copias de seguridad.

Copias de seguridad de WHM/Cpanel incluyendo Databases Directory

Si tenemos activa una de las dos opciones siguientes, podremos intentar la secuencia indica mas abajo.
Backup Cpanel opción directorio Hacemos copia de seguridad por si hay que revertir el proceso

Descomprimimos la copias de seguridad de los ficheros de mysql y reemplazamos la base de datos mysql (1)

Con esto deberiamos ver en el log el mensaje de puesta en marcha de MySQL

Sin copias de seguridad por directorio de la base de datos en WHM/Cpanel pero con copias de seguridad mysqldump

Esta opción es valida también para otros sistemas sin Cpanel con la salvedad de que los path pueden cambiar de acuerdo a la instalación del sistemas o las preferencias del administrador.

Copia de seguridad del directorio de mysql pero con copia de mysql con mysqldump
Iniciamos mysql sin privilegios
Ejecutamos mysqlcheck para revisar y reparar la base de datos mysql
Hacemos un backup con mysqldump de la BD mysql
Eliminamos la base de datos mysql y recreamos la base de datos mysql (2)
Restauramos nuestra base de datos mysql desde nuestra copia de mysqldump (3)
Matamos (kill) el proceso mysql iniciado sin privilegios y con &
Inciamos mysql normalmente
Otros errores adicionales surgidos tras el arranque de mysql relativos a otras bases de datos

En nuestro sitio obtenemos un mensaje de error de nuestro software indicando que una tabla no puede usar y que esta marcada para ser reparada. Intentamos su reparación y obtenemos:

Solución reparando la BD con

Palabras y cadenas relacionadas

  • [ERROR] Fatal error: Can’t open and lock privilege tables: Incorrect file format ‘host’
  • unable to start mysql Fatal error: Can’t open and lock privilege tables
  • Can’t open the mysql.plugin
  • table mysql wont start
  • Can’t open and lock privilege tables
  • [ERROR] Fatal error: Can’t open and lock privilege tables
  • Can’t open the mysql.plugin table.
  • Please run mysql_upgrade to create it.
  • mysql wont start/cant restore mysql
Copias de seguridad
Ante problemas como estos cabe recordar de que un administrador de sistemas, o un usuario de hosting, no debe confiar todo su trabajo a las aplicaciones y/o contratos de servicios que le garanticen la salvaguarda de sus datos. Es bueno, generar copias de seguridad con métodos alternativos. Conozco quienes solo se preocupan por tener copias de las copias de las copias, pero todas ellas basadas del mismo sistema. Si ese sistema falla, toda la cadena de copias no servirá para nada. En el caso de Cpanel, no son pocos los problemas que uno puede tener si confía plena y unicamente a su sistema de copias de seguridad.

(1) En Cpanel esta instalado por defecto rsync. En mi opinión muchas operaciones con sistemas en los que tenemos que hacer copias o restauras ficheros, se realizan con mas velocidad y mejor que comprimiendo y descomprimiendo ficheros. tar cvfz /path/backups/mysql.tar.gz /var/lib/mysql/ podemos sustituirlo por rsync -avzz --progress /var/lib/mysql/ /path/backups/mysql/

(2) Solo en el caso de que nuestro backup original de la bd de mysql se halla realizado sin la opción CREATE DATABASE /*!32312 IF NOT EXISTS*/. Si el mysqldump se realizo de forma correcta, el proceso de restauración del fichero .sql creara la BD mysql

(3)–one-database nos permite restaurar una sola base de datos de un fichero realizado con mysql que contiene todas las bases de datos del servidor (mysqldump –opt). También podemos extraer si lo preferimos la base de datos deseada usando sed.

Si sed lanzara el error sed: RE error: illegal byte sequence como pude ocurrir en Mac OS X, se trata de un problema de locales. Para solventarlo debemos ejecutarlo así:

 


Imagen Designed by Freepik

Comparte este artículo

Artículo Antiguo
Este artículo tiene más de 2 años. Es muy probable que su contenido este anticuado, aunque pueda ser de utilidad, es conveniente que revises otras informaciones al respecto. Si lo encuentras útil o crees que puede ser actualizado, deja tu comentario con la actualización para poder editarlo y que pueda ser útil a los demás.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax