Aprende a recuperar bases de datos de archivos IDB y FRM de una instalación de MySQL dañada.

La semana pasada tuve la suerte de tener un corte de energía en uno de nuestros servidores de producción, lo que provocó la corrupción de algunas bases de datos InnoDB almacenadas en el servidor MySQL. Como sabrá, la mayoría de las corrupciones de InnoDB están relacionadas con el hardware y las escrituras de páginas dañadas pueden deberse a cortes de energía o mala memoria.

Aunque había copias de seguridad nuevas, me pregunté qué haría alguien sin copias de seguridad en caso de un evento tan desafortunado. Para mi sorpresa, muchos desarrolladores afirman que es muy difícil restaurar bases de datos de InnoDB con solo la carpeta de datos de MySQL, sin embargo, probé una combinación básica y, afortunadamente, pude exportar casi todas las bases de datos de los archivos con el volcado de MySQL. Hoy, compartiré con ustedes cómo exportar archivos .sql de todos los archivos idb y frm dentro de la carpeta de datos de MySQL en Xampp para Windows.

Información importante

Vale la pena decir que enfrentará esta situación y aplicará esta solución solo en un caso de emergencia real , donde fuiste lo suficientemente irresponsable como para no hacer copias de seguridad de sus bases de datos o simplemente tienen más de un mes. Esto significa que la solución no garantiza el 100% de integridad de sus bases de datos, ya que algunas de ellas pueden terminar siendo corruptas y no podrá deshacerse de ellas (sin embargo, en tal situación, vale la pena intentarlo).

Requisitos

Para intentar recuperar los datos de una antigua instalación de MySQL en una nueva, necesitará:

  1. Una instalación limpia de XAMPP (con la misma versión o superior de MySQL) que funciona y está dispuesto a destruir.
  2. Una copia completa de la carpeta de datos mysql del servidor que está intentando recuperar, por ejemplo,  /var/lib/mysqlen Ubuntu con una instalación de Plesk. Esta copia incluye todos los datos de sus bases de datos, incluyendo el  ibdata1ib_logfile0ib_logfile1archivos.
  3. Mucha suerte (de verdad, la necesitarás).

Habiendo dicho eso, ¡comencemos!

1.Haga una copia del contenido mysql / data de su servidor

El primer paso es obviamente tener una copia de la carpeta de datos de MySQL que desea restaurar en XAMPP  (por ejemplo, / var / lib / mysql en Linux). Suponemos que tiene todo el contenido de la carpeta de datos de mysql que no funciona en su servidor e intentaremos restaurarlo.

Estos datos tienen un formato de carpetas con el nombre de cada una de tus bases de datos, dentro de esas carpetas encontrarás archivos IDB y FRM que contienen teóricamente los datos de tus bases de datos y podrás recuperarlos siempre que no estén dañados. :

Nota

Crea también una copia de seguridad de los datos originales dentro de la carpeta de datos de Xampp, en caso de que quieras que todo funcione antes de comenzar con este tutorial.

MySQL Data Folder Content

Una vez que tenga estos datos, continúe con el siguiente paso.

2. Agregue contenido a la carpeta local mysql / data

A continuación, debe crear una copia de seguridad de su carpeta mysql / data de xampp localmente en caso de que algo falle, por lo que solo necesitará usar el contenido anterior de mysql / data y todo volverá a ser normal. En la carpeta local mysql / data de XAMPP, deberá eliminar todo el contenido original excepto los siguientes directorios (no pueden cambiar, así que asegúrese de eliminar esos directorios de los datos de su servidor):

  • mysql (directorio)
  • mysql_upgrade_info (archivo)
  • performance_schema (directorio)

Luego, agregue el contenido de su servidor (paso 1) sin reemplazar los archivos y directorios mencionados anteriormente.

3. Inicie el servidor MySQL

Después de pegar el contenido, inicie el servicio mysql desde el panel de control:

MySQL Service Xampp

En caso de que el servidor no pueda iniciarse

Si el servidor no puede iniciarse debido a tablas corruptas en algunas de sus bases de datos, puede forzarlo a comenzar a usar la recuperación de InnoDB. Para hacerlo, modifique el archivo my.cnf (en Windows my.inien C:/xampp7/mysql/bin) de MySQL y agregue 2 nuevas propiedades a saber innodb_file_per_tableinnodb_force_recovery en el bloque mysqld:

[mysqld]
# Increment this until the server starts up to a value of 6 if it the
# server can't start after pasting the new /mysql/data content
# See: https://dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html
innodb_force_recovery = 2
innodb_file_per_table=1

Esto le permitirá iniciar MySQL para guardar las bases de datos que no están dañadas. Guarde los cambios en el archivo y reinicie el servicio mysql y, en teoría, ahora podrá volcar las bases de datos.

4. Volcado de bases de datos

Usando el símbolo del sistema, cambie al directorio de los binarios de MySQL en la instalación de Xampp, generalmente C:\xampp\mysql\bin:

cd C:\xampp\mysql\bin

Y ejecuta la consola mysql accediendo como root o cualquier usuario que tuvieras en la instalación de Xampp:

Nota

Es importante iniciar sesión como root, por lo que podrá ver todas las bases de datos disponibles en el motor.

mysql -u root

Esto abrirá la consola mysql, esto significa que puede ejecutar consultas, específicamente la que enumera todas las bases de datos disponibles en el motor ( SHOW DATABASES;):

Databases List Xampp

Finalmente, salga del proceso de mysql en el proceso de comando y comience exportando sus bases de datos con mysqldump:

mysqldump -u root -p DATABASE_NAME > OUTPUT_DATABASE_BACKUP.sql

A menos que una de las tablas de su base de datos esté dañada, podrá exportarla sin problemas. A veces, el servicio mysql se bloqueará, sin embargo, reiniciarlo y volver a intentarlo será la solución.

Información

Como puede estar buscando una solución para su problema, probablemente haya notado lo difícil que es encontrar algo que funcione, ya que de acuerdo con su caso, algunas cosas pueden no ser una opción para usted. Es por eso que también enumeraremos más artículos que pueden serte útiles y te darán una idea de cómo solucionar tu problema (en caso de que sea realmente posible, de lo contrario las copias de seguridad serán tu única salvación):

  1. Recuperación de una tabla InnoDB dañada .
  2. Cómo recuperar archivos innoDB MySQL usando MAMP en una Mac .
  3. Cómo restaurar datos de archivos InnoDB IDB y FRM .
  4. Restaurar la tabla de archivos frm e idb en InnoDB .

Que te diviertas ❤️!


Interesado en la programación desde los 14 años, Carlos es un programador autodidacta, fundador y autor de la mayoría de los artículos de Our Code World.

Conviertete en un programador más sociable

Patrocinadores