Cómo recuperar datos del archivo ibdata1

En MySQL, ibdata1 es un archivo de datos de espacio de tablas de un solo sistema. El archivo se utiliza para almacenar datos e índices de todas las tablas de una base de datos MySQL que se ejecuta en un motor de almacenamiento InnoDB.

Puede haber casos en los que necesite recuperar datos del archivo ibdata1, como:

  • Eliminación accidental del archivo ibdata1
  • Corrupción de datos en el archivo ibdata1 debido a un bloqueo del servidor, falla de hardware, ataque de ransomware, etc.

Ahora analicemos qué puede hacer para recuperar los datos cuando el archivo ibdata1 se elimina o se corrompe.

Métodos para recuperar datos del archivo ibdata1

Método 1: recuperar la base de datos InnoDB manualmente

Puede intentar restaurar la copia de seguridad para recuperar los datos del archivo ibdata1. Si no tiene la copia de seguridad, intente volcar, descartar y volver a crear las bases de datos dañadas.

Nota: En algunos casos, la corrupción de datos puede ocurrir debido a que el sistema operativo causa daños en su archivo de caché. En ese caso, reiniciar su sistema podría solucionar el problema de corrupción. Si esto no ayuda, continúe con la solución de problemas de los pasos a continuación.

A diferencia de la base de datos MyISAM, puede reparar las tablas InnoDB. Sin embargo, InnoDB inicia automáticamente la recuperación de fallas al inicio para recuperarse de una salida inesperada del servidor. Pero, si no puede iniciar el motor InnoDB, fuerce el inicio de la recuperación de InnoDB. Si lo hace, obligará al motor InnoDB a iniciarse y evitará que las operaciones en segundo plano le permitan volcar los datos.

Los pasos se enumeran a continuación:

  • Abra el archivo de configuración de MySQL (my.cnf) en su servidor.
  • Localizar [mysqld] en el archivo my.cnf.
  • Agregue la siguiente línea en [mysqld] sección:

innodb_force_recovery = 1

  • Intente reiniciar su servidor MySQL (mysqld). Si es así, continúa con el siguiente paso. Si el servicio MySQL no se inicia, repita el paso 2 y aumente el valor de innodb_force_recovery hasta que se reinicie.

¡Precaución! Puede incrementar el valor de ‘innodb_force_recovery’ de 1 a 6. Sin embargo, establecer el valor en 4 o más puede dañar el archivo de datos y provocar la pérdida permanente de datos. Además, innodb_force_recovery establecido en un valor superior a 3 no permite eliminar y crear una tabla. Más información sobre innodb_force_recovery en aquí .

  • Una vez que mysqld comience a ejecutarse en modo de recuperación, realice un volcado (copia de seguridad) de las bases de datos bloqueadas y exporte todas las bases de datos:

mysqldump –todas-las-bases de datos –add-drop-database –add-drop-table –rutinas > mysqldump-all.sql

Aquí, las bases de datos se exportarán a mysqldump-all.sql.

  • Inicie su programa mysql y use el comando DROP DATABASE para eliminar la base de datos o las bases de datos dañadas.

Nota: si no puede eliminar una base de datos, intente eliminarla manualmente después de detener el servidor MySQL (mysqld).

  • Detener mysqld.

Si no pudo eliminar la base de datos en el paso 6 anterior, intente eliminar la base de datos afectada manualmente ejecutando los comandos:

cd /var/lib/mysql

rm -rf nombre_bd

  • Retire el motor InnoDB del modo de recuperación. Para hacerlo, comente la siguiente línea en el [mysqld] sección en su archivo my.cnf:

#innodb_force_recovery=4

  • Guarde los cambios realizados hasta ahora en el archivo de configuración de MySQL e inicie el servidor MySQL.
  • Ejecute el siguiente comando para importar todas las bases de datos exportadas desde el archivo de volcado creado en el paso 5:

mysql < mysqldump-all.sql

Esto restaurará las bases de datos. Vea si las bases de datos restauradas contienen el archivo ibdata1 y sus datos.

Método 2: utilice la herramienta de recuperación de MySQL

Si faltan datos importantes en la base de datos InnoDB restaurada o los pasos mencionados anteriormente no logran recuperar los datos, intente usar Stellar Repair for MySQL. Es una herramienta de recuperación de MySQL especializada que repara bases de datos dañadas que se ejecutan en el motor de almacenamiento InnoDB. La base de datos reparada contiene la carpeta de datos que contiene ibdata1 y otros archivos de datos de InnoDB. Puede recuperar datos de los archivos recuperados mientras mantiene la integridad de los datos. Además, ayuda a recuperar datos del motor de base de datos MyISAM.

Mira cómo funciona el software:

Conclusión

¿Desea recuperar datos del archivo ibdata1 que está eliminado o dañado? Esto puede impedirle iniciar el motor de base de datos InnoDB. Forzar la recuperación de InnoDB puede ayudarlo a volcar y exportar las bases de datos afectadas. A continuación, puede eliminar las bases de datos y reiniciar el servidor, lo que volverá a crear el archivo ibdata1. A continuación, importe las bases de datos del archivo de volcado a su servidor MySQL y restaure la base de datos. Si esto no funciona o causa un problema de integridad de datos, usando Reparación estelar para MySQL puede ayudar.

Related Posts