EEPICA's BLOG eepica@nirvana:~# ps aux blog | grep eepica

Restauración de bases de datos MYSQL a partir de archivos

in Technology

Nota inicial: Sólo valido para sistemas operativos GNU/Linux

Hace poco Murphy me acompañó un par de días, entre las tantas desdichas que me acompañaron estuvo el hecho de perder el acceso al servidor de MySQL, a ésto le siguió el pequeño detalle de tener ciertas aplicaciones que requerían de éste servicio. Durante las últimas horas antes de suceder el daño (fin de semana) se realizaron mucho cambios en estas bases de datos. Por alguna extraña razón los últimos backups que se habían generado automáticamente, estaban corruptos y por más de que revisé de mil formas los SQLs de dichos backups, no se lograba tener el 100% de la información, destacando el hecho de posible perdida de datos de horas a partir de las cuales se "murió" el sistema.

Ahora, para contextualizar un poco comentaré algunos de los errores que se encontraban y que impedían la restauración del servicio y la conexión con el servidor MySQL.

  • Imposibilidad de conectarse con el servidor MySQL
  • Imposibilidad de establecer el socket "mysql.sock"
  • Imposibilidad de re-configurar el paquete del servidor MySQL por paquetes corruptos
  • Imposibilidad de re-configurar el paquete del servidor MySQL por errores de dependencias de paquetes
  • Otros...

Soluciones iniciales:

  • Crear, modificar, borrar n-mil veces el archivo mysql.sock, a través del cual se estable ce la conexión con el servidor MySQL
  • Re-configuración del paquete del servidor MySQL
  • Instalación de paquetes hermanos al proyecto MySQL
  • Desinstalación del servidor MySQL
  • Reinicio con diferentes variables del servicio MySQL
  • Conexión remota
  • Restauración de archivos de MySQL a través de LiveCDs
  • Otros...

Después de pasar gran parte del día buscando soluciones, finalmente cerca de la media noche decidí restaurar las bases de datos almacenadas en dicho servidor a través de sus archivos. Esta solución se conoce popularmente como "Restauración en bruto".

Ya que estamos un poco contextualizados pasaremos a hablar un poco acerca del proceso de restauración de bases de datos MySQL a través de sus archivos.

Importante :

  • Dentro de la carpeta /var/lib/mysql/ encontraremos los archivos necesarios para la restauración de nuestras bases de datos. Cada base de datos contenida en el servidor tendrá una carpeta con su nombre (el de la base de datos) que contendrá archivos de tipo "frn","MYD" y "MYI"
  • Se necesita un espacio para la creación y restauración de nuestras bases de datos, es decir necesitaremos crear un servidor nuevo, cuyas características deberán ser las mismas de nuestro servidor afectado (Versión de MySQL, entre otras)
  • Se deberá crear el correspondiente usuario de MySQL (mysql) y asignar los correspondientes permisos a éste.
  • Se deberán asignar los permisos correspondientes permisos a los archivos y carpetas que darán vida a nuestro nuevo servidor.

Ahora, manos a la obra!

  1. Instalar una máquina con características semejantes de sistema operativo y versión de servidor MySQL. Esto puede hacerse usando alguna herramienta de virtualización y creando nuestra máquina a partir de esta.
  2. Reemplazar los archivos de la carpeta "/var/lib/mysql/" de nuestro servidor afectado a nuestro nuevo o temporal servidor.
  3. Crear (en caso de no existir) el usuario mysql para el servidor MySQL y reasignar los permisos correspondientes (asignarlo como "dueño" de la carpeta)
    • Es importante re-asignar los permisos a esta carpeta, dado que los archivos contenidos en esta han sido reemplazados y los permisos seguramente tendrán asignados como usuario, al usuario que haya realizado el procedimiento anterior.
    • El procedimiento a usar sería: "chwon mysql:mysql /var/lib/mysql/"
  4. Asignar los permisos correspondientes a la carpeta "/var/lib/mysql/"
    • Como se mencionó en el paso anterior, el usuario y dueño de los archivos contenidos es el usuario a través del cual se ha realizado el procedimiento de reemplazo de los mismos, es decir que los permisos de estos archivos serán los permisos del usuario.
    • Los permisos de la carpeta y archivos contenidos en la misma deberán ser: "drwxr-xr-x"
    • El procedimiento a usar sería: chmod -R 755 /var/lib/mysql/
  5. Reiniciar el servidor MySQL

Si todo ha funcionado bien, nuestro servidor iniciará normalmente y nuestras bases de datos podrán ser accedidas a través del cliente que deseemos.

Saludos!

PD: Esta entrada lleva un gran toque de agradecimiento a @poterpig que me acompañó, apoyó y colaboró durante todo el proceso.

Comments (6)

  • 16 Nov 2010 02:45:37

    Excelente articulo lo pondre en twitter
    newegg promo code

  • 16 Nov 2010 22:07:39

    Muy buen blog , te felicito .
    horoscopo diaro

  • 18 Nov 2010 05:09:04

    Muy buen articulo, estoy casi 100% de acuerdo contigo :)
    college loan

  • 18 Nov 2010 05:10:28

    Hola, muy interesante el articulo, saludos desde Chile!
    college loan consolidation

  • 28 Jan 2011 05:00:19

    Muy buen artículo flaquita. Agrego tu blog a mis marcadores. Saludos.

  • 28 Jan 2011 14:16:44

    @scs_calleros Gracias! Un gusto leerte ;-)

Leave a comment