Restaurar base de datos MySQL desde archivos físicos


¿Es posible restaurar una base de datos MySQL desde los archivos físicos de la base de datos? Tengo un directorio que tiene los siguientes tipos de archivo:

Cliente.frm
cliente.MYD
cliente.MYI

Pero para unas 20 tablas más.

Normalmente uso mysqldump o una herramienta similar para obtener todo en 1 archivo SQL, así que ¿cuál es la manera de tratar con este tipo de archivos?

Author: Vincent, 2009-01-27

7 answers

Una tabla MySQL MyISAM es la combinación de tres archivos:

  • El archivo FRM es la definición de la tabla.
  • El archivo MYD es donde se almacenan los datos reales.
  • El archivo MYI es donde se almacenan los índices creados en la tabla.

Debería poder restaurarlos copiándolos en la carpeta de su base de datos (en Linux, la ubicación predeterminada es /var/lib/mysql/)

Debe hacerlo mientras el servidor no se está ejecutando.

 111
Author: Vincent,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-25 20:24:03

De la respuesta de @ Vicent, ya restauré la base de datos MySQL de la siguiente manera:

Paso 1. Apagar el servidor Mysql

Paso 2. Copie la base de datos en su carpeta de base de datos (en Linux, la ubicación predeterminada es /var/lib/mysql). Mantenga el mismo nombre de la base de datos y el mismo nombre de la base de datos en modo mysql.

sudo cp -rf   /mnt/ubuntu_426/var/lib/mysql/database1 /var/lib/mysql/

Paso 3: Cambiar propio y cambiar el modo de la carpeta:

sudo chown -R mysql:mysql /var/lib/mysql/database1
sudo chmod -R 660 /var/lib/mysql/database1
sudo chown  mysql:mysql /var/lib/mysql/database1 
sudo chmod 700 /var/lib/mysql/database1

Paso 4: Copie ibdata1 en la carpeta de su base de datos

sudo cp /mnt/ubuntu_426/var/lib/mysql/ibdata1 /var/lib/mysql/

sudo chown mysql:mysql /var/lib/mysql/ibdata1

Paso 5: copie los archivos ib_logfile0 e ib_logfile1 en la carpeta de la base de datos.

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile0 /var/lib/mysql/

sudo cp /mnt/ubuntu_426/var/lib/mysql/ib_logfile1 /var/lib/mysql/

Recuerde cambiar propio y cambiar raíz de esos archivos:

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile0

sudo chown -R mysql:mysql /var/lib/mysql/ib_logfile1

O

sudo chown -R mysql:mysql /var/lib/mysql

Paso 6 (Opcional): Mi sitio tiene configuración para almacenar archivos en una ubicación específica, luego los copio a la ubicación correspondiente, exactamente.

Paso 7: Inicie su servidor Mysql. Todo vuelve y disfrútalo.

Eso es todo.

Ver más información en: https://biolinh.wordpress.com/2017/04/01/restoring-mysql-database-from-physical-files-debianubuntu/

 14
Author: biolinh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-19 08:43:47

Tengo el mismo problema, pero no se recuperó con éxito la base de datos basado en las instrucciones anteriores.

Solo recuperé las carpetas de la base de datos mysql de mi sistema operativo Ubuntu. Mi problema es cómo recuperar mi base de datos con esa carpeta de datos mysql ilegible. Ahora vuelvo a win7 OS para el entorno de desarrollo.

* NOTA Tengo un servidor de base de datos existente que se ejecuta en win7 y solo necesito unos pocos archivos de base de datos para recuperar de los archivos recuperados. Para recuperar con éxito el archivos de base de datos del sistema operativo Ubuntu Necesito actualizar el nuevo servidor de base de datos mysql instalado la misma versión del sistema operativo Ubuntu en mi sistema operativo win7 para recuperar todo en ese antiguo servidor de base de datos.

  1. Hacer otro nuevo servidor de base de datos mysql misma versión de la archivos recuperados.

  2. Detener el servidor mysql

  3. Copie la carpeta recuperada y pegue en el (C:\ProgramData\MySQL\MySQL Servidor 5.5 \ datos) base de datos mysql es almacenados.

  4. Copiar el archivo ibdata1 ubicado en la carpeta instalada de linux mysql y pegarlo en (C:\ProgramData\MySQL\MySQL Servidor 5.5 \ datos). Un poco más corregir el existente o hacer copia de seguridad antes de reemplazar.

  5. Inicie el servidor mysql y compruebe si se ha recuperado correctamente los archivos de la base de datos.

  6. Para usar la base de datos recuperada en mi servidor mysql utilizado actualmente simplemente exportar la base de datos recuperada e importarla mi mysql existente servidor.

Espero que esto ayude porque no lo hice encuentra una solución a mi problema.

 7
Author: Ivan Igniter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-27 10:08:17

Si está restaurando la carpeta no se olvide de chown los archivos a mysql: mysql

chown -R mysql:mysql /var/lib/mysql-data

de lo contrario, obtendrá errores al intentar soltar una base de datos o agregar una nueva columna, etc..

Y reiniciar MySQL

service mysql restart
 5
Author: Joel Davey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-24 23:00:23

Con MySQL 5.1 (Win7). Para recrear DBs (InnoDbs) He reemplazado todos los contenidos de los siguientes dirs (my.ini params):

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"
innodb_data_home_dir="C:/MySQL Datafiles/"

Después de eso comencé el servicio MySQL y todo funciona bien.

 2
Author: sergey.olifirenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-29 03:37:20

¡Sí lo es! Simplemente agréguelos a su carpeta de base de datos ( dependiendo del sistema operativo ) y ejecute un comando como "MySQL Fix Permissions". Esto re-almacenó la base de datos. Ver también que los permisos correctos se establecen en los archivos también.

 1
Author: Filip Ekberg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-27 19:05:58

Una vez copié estos archivos a la carpeta de almacenamiento de la base de datos para una base de datos mysql que estaba funcionando, inicié la base de datos y esperé a que "reparara" los archivos, luego los extraí con mysqldump.

 0
Author: Spikolynn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-27 19:07:52