Recuperación de una base de datos MySQL de un disco formateado

1
44290

Recuperación de una base de datos MySQL de un disco formateado

En este tutorial vamos a ver que podemos hacer para intentar recuperar una base de datos MySQL de la cuál no se tiene copia desde un disco duro que ha sido formateado o está corrupto.

Introducción

Como todos sabemos, una de los recursos más importantes que tiene una empresa son los datos con los que trabaja: clientes, pedidos, etc.

Normalmente una gran parte de esta información es almacenada en base de datos y es accedida por los trabajadores de la empresa a través de aplicaciones.

Debido a la importancia de esta información, es necesario tener políticas de administración, así como de copias de seguridad para poder restaurar la
información en caso de ser necesario.

Por desgracia, normalmente por desconocimiento o exceso de confianza, muchas pequeñas y medianas empresas carecen de estas políticas.

¿Qué información tenemos que recuperar del disco duro pare recuperar la base de datos MySQL?

Para recuperar las bases de datos necesitamos:

  1. Saber dónde y cómo guarda el servidor MySQL la información de nuestras bases de datos.
  2. Un programa de recuperación de datos (aunque el HDD haya sido formateado es posible recuperar la información), por ejemplo: Easy Recovery.

¿Dónde y cómo guarda el servidor MySQL la información de nuestras bases de datos?

Por defecto, el servidor MySQL crea un directorio para cada base de datos dentro del directorio %MYSQL_PATH%/data. Por ejemplo, los datos de una
BD de nombre autentia_tntconcept se almacenarían en %MYSQL_PATH%/data/autentia_tntconcept

Nota:%MYSQL_PATH% es la ruta donde está instalado el servidor MySQL.

MySQL trata principalmente con los siguientes tipos de archivos:

  1. Archivos con extensión .frm: Guardan la definición de una tabla u objeto de la base de datos.
  2. Archivos con extensión .myd: Guardan los datos de una tabla de tipo MyISAM.
  3. Archivos con extensión .myi: Guardan los datos de un índice de una tabla de tipo MyISAM.

Como sabemos, la mayoría de las tablas suelen ser de tipo InnoDB. Por defecto, TODOS los datos de TODAS las tablas de tipo InnoDB de TODAS las bd están en los archivos %MYSQL_PATH%/data/ibdata{n} siendo n=1, 2, 3

¿Cómo reconstruyo la base de datos?

Una vez recuperados los archivos expuestos en el punto anterior, simplemente debemos copiarlos al ordenador donde deseemos restaurarlos manteniendo la misma estructura. Para ello debemos parar el servidor MySQL antes de la copia e iniciarlo después.

Si al iniciar el servidor se produce algún error, borre los archivos %MYSQL_PATH%/data/ib_logfile{n} e inténtelo de nuevo.

Nota importante: Si el archivo %MYSQL_PATH%/data/ibdata{n} tiene datos de muchas BD, sólo serán visibles las BD en donde también tengamos la definición, es decir, el directorio de la base de dados con los archivos .frm.

Bueno, eso es todo, un saludo.
Carlos García. Creador de MobileTest.

1 Comentario

  1. Hola! Recientemente me he encontrado con este problema en el caso de un cliente y tras ver este excelente tutorial, he visto que hay algunos casos en los que se puede haber perdido el fichero Ibdata1 y en los que la recuperación resulta algo más complicada.

    He destinado un rato a crear una entrada en mi blog para intentar cubrir y dar solución al mayor número de casos posibles, espero que a alguien le resulte de ayuda.

    https://www.proyektia.com/recuperar-base-de-datos-mysql-tras-borrar-ibdata1/

    Un saludo!

Dejar respuesta

Please enter your comment!
Please enter your name here