2009-01-27 27 views
93

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

client.frm
client.MYD
client.MYI

pero durante unos 20 más tablas.

Normalmente utilizo mysqldump o una herramienta similar para obtener todo en 1 archivo SQL, entonces, ¿cuál es la forma de tratar con este tipo de archivos?

Respuesta

99

Una tabla MyISAM MySQL 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.

Usted debe ser capaz de restaurar copiándolos en la carpeta de base de datos (en Linux, la ubicación predeterminada es /var/lib/mysql/)

Debe hacerlo mientras el servidor no está en ejecución.

+58

esto es cierto solo para tablas MyISAM. InnoDB almacena sus tablas e índices en un solo tablespace *, que de forma predeterminada consta de los 3 archivos ibdata1, ib_logfile0 e ib_logfile1. para restaurar una base de datos, también necesitaría esos archivos. * espacios de tabla por tabla son posibles, pero no predeterminado –

+14

Dice que tiene archivos .frm .myi y .myd. Entonces asumí que eran tablas MyISAM. – Vincent

+0

right - point taken :) –

1

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

+0

lo hice, pero que no reconoce las tablas.Como dije en mi comentario sobre la respuesta anterior. – orezvani

0

Una vez copié estos archivos en la carpeta de almacenamiento de la base de datos para una base de datos mysql que funcionaba, inicié el DB y esperé que "reparara" los archivos, luego los extraje con mysqldump.

2

Con MySql 5.1 (Win7). Para recrear DBs (InnoDbs) He sustituido todos los contenidos de directorios siguientes (my.ini params):

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

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

5

Si va a restaurar la carpeta no se olvide de chown los archivos de MySQL: MySQL

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

de lo contrario obtendrá errores al intentar colocar una base de datos o añadir nueva columna etc ..

y reiniciar MySQL

service mysql restart 
+1

esto no es realmente una respuesta a la pregunta, pero fue muy útil. –

+0

en realidad, no deberías clown todo a mysql, la carpeta de la base de datos mysql debe retener el grupo raíz – Galvani

+0

oww this works, thanks. – Offboard

6

tengo el mismo problema, pero no fue recuperado con éxito la base de datos en función de las instrucciones anteriores.

Solo obtuve carpetas de bases de datos mysql recuperadas 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 ejecutándose en win7 y solo necesito unos pocos archivos de base de datos para recuperar de los archivos recuperados. Para recuperar con éxito los archivos de la base de datos del sistema operativo Ubuntu, necesito instalar una nueva versión de la base de datos mysql del mismo sistema de Ubuntu OS en mi sistema operativo win7 para recuperar todo en ese viejo servidor de base de datos.

  1. hacer otra nueva versión del servidor de base de datos misma MySQL desde la archivos recuperados.

  2. detener el servidor MySQL

  3. copie la carpeta recuperada y pegar en el (C: \ Datos de programa \ MySQL \ MySQL Server 5.5 \ data) base de datos MySQL es almacenado.

  4. copie el archivo ibdata1 ubicado en la carpeta instalada de linux mysql y péguelo en (C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data). Un poco más de derecho de la copia de seguridad existente o hacer antes de reemplazar.

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

  6. Para utilizar la base de datos recuperada en mi servidor MySQL usada actualmente simplemente exportar la base de datos recuperada y la importación de mi mysql servidor existente.

Espero que esto ayude porque no he encontrado una solución a mi problema.

+1

método también funciona en ubuntu/debian con archivos ibdata1, ib_logfile0 y ib_logfile1 y la carpeta de la base de datos. el usuario no se copiará, pero luego puede agregar un nuevo usuario a la base de datos y volcarlo con eso. – bokorben

11

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

Paso 1. Apagado del servidor MySQL

Paso 2. Copia de base de datos en la 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 el modo propio y el cambio 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: Copiar ibdata1 en la carpeta de la 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: copiar archivos ib_logfile0 y ib_logfile1 en su carpeta de 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 propia y el cambio de la 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 de configuración para almacenar archivos en una ubicación específica, luego copio esos a la ubicación correspondiente, exactamente.

Paso 7: Inicie su servidor Mysql. Todo vuelve y lo disfrutas.

Eso es.

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

+2

+1 para obtener instrucciones detalladas paso a paso. Pero edité algunas declaraciones para reflejar realmente lo que deberían ser. – Peter

Cuestiones relacionadas