Cómo restaurar una de mis bases de datos MySQL de .myd
, .myi
, .frm
archivos?
Cómo restaurar una de mis bases de datos MySQL de .myd
, .myi
, .frm
archivos?
Respuestas:
Si se trata de tablas MyISAM, entonces colocar los archivos .FRM, .MYD y .MYI en un directorio de base de datos (por ejemplo, /var/lib/mysql/dbname
) hará que esa tabla esté disponible. No tiene que ser la misma base de datos de donde provienen, el mismo servidor, la misma versión de MySQL o la misma arquitectura. También es posible que deba cambiar la propiedad de la carpeta (por ejemplo, chown -R mysql:mysql /var/lib/mysql/dbname
)
Tenga en cuenta que los permisos ( GRANT
, etc.) son parte de la mysql
base de datos. Entonces no serán restaurados junto con las mesas; Es posible que deba ejecutar las GRANT
declaraciones apropiadas para crear usuarios, dar acceso, etc. ( mysql
Es posible restaurar la base de datos, pero debe tener cuidado con las versiones de MySQL y cualquier ejecución necesaria de la mysql_upgrade
utilidad).
En realidad, probablemente solo necesite .FRM (estructura de tabla) y .MYD (datos de tabla), pero tendrá que reparar la tabla para reconstruir .MYI (índices).
La única restricción es que si está bajando de categoría, será mejor que revise las notas de la versión (y probablemente ejecute la tabla de reparación). Las versiones más recientes de MySQL agregan características, por supuesto.
[Aunque debería ser obvio, si combina y combina tablas, la integridad de las relaciones entre esas tablas es su problema; A MySQL no le importará, pero su aplicación y sus usuarios sí. Además, este método no funciona en absoluto para las tablas InnoDB. Solo MyISAM, pero considerando los archivos que tienes, tienes MyISAM]
check table sometable;
y luego ejecutar la reparación (solo si es necesario): repair table sometable;
Acabo de descubrir una solución para esto. Estoy usando MySQL 5.1 o 5.6 en Windows 7.
No es necesario ubicar el archivo .MYI y .MYD para esta recuperación.
innodb_force_recovery = 4
nivel (no estoy seguro de que fuera necesario en este caso). ¡Gracias a dios!
ibdata1
es InnoDB, no MyISAM.
Una cosa a tener en cuenta:
El archivo .FRM tiene la estructura de su tabla y es específico para su versión de MySQL.
El archivo .MYD NO es específico de la versión, al menos no versiones menores.
El archivo .MYI es específico, pero puede omitirse y regenerarse REPAIR TABLE
como dicen las otras respuestas.
El objetivo de esta respuesta es hacerle saber que si tiene un volcado de esquema de sus tablas, puede usarlo para generar la estructura de la tabla, luego reemplazar esos archivos .MYD con sus copias de seguridad, eliminar los archivos MYI y repararlos. todas. De esta manera, puede restaurar sus copias de seguridad a otra versión de MySQL, o mover su base de datos por completo sin usar mysqldump
. He encontrado esto súper útil al mover grandes bases de datos.
¡Sencillo! Crear una base de datos ficticia (por ejemplo, abc)
Copie todos estos archivos .myd, .myi, .frm en mysql \ data \ abc en donde mysql \ data \ es el lugar donde se almacenan .myd, .myi, .frm para todas las bases de datos.
Luego vaya a phpMyadmin, vaya a db abc y encontrará su base de datos.
Creo que .myi puedes repararlo desde mysql.
Si ve este tipo de mensajes de error de MySQL: La base de datos no pudo ejecutar la consulta (consulta) 1016: No se puede abrir el archivo: 'sometable.MYI'. (errno: 145) Mensaje de error: 1034: archivo de clave incorrecto para la tabla: 'sometable'. Intente repararlo, entoncesb probablemente tenga una tabla dañada o dañada.
Puede verificar y reparar la tabla desde un indicador de mysql como este:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
y ahora tu mesa debería estar bien:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
Encontré una solución para convertir los archivos a un .sql
archivo (luego puede importar el .sql
archivo a un servidor y recuperar la base de datos), sin necesidad de acceder al /var
directorio, por lo tanto, no necesita ser un administrador del servidor para hacerlo.
Requiere XAMPP o MAMP instalado en su computadora.
C:\XAMPP
) y al subdirectorio mysql\data
. El camino completo debe serC:\XAMPP\mysql\data
Dentro verá carpetas de cualquier otra base de datos que haya creado. Copiar y pegar la carpeta completa de .myd
, .myi
y .frm
archivos en allí. La ruta a esa carpeta debe ser
C:\XAMPP\mysql\data\foldername\.mydfiles
Luego visite localhost/phpmyadmin
en un navegador. Seleccione la base de datos que acaba de pegar en la mysql\data
carpeta y haga clic en Exportar en la barra de navegación. Elige exportarlo como un .sql
archivo. Luego aparecerá preguntando dónde guarda el archivo
¡Y eso es todo! Usted (debe) tener ahora un .sql
archivo que contiene la base de datos que fue originalmente .myd
, .myi
y .frm
archivos. Luego puede importarlo a otro servidor a través de phpMyAdmin creando una nueva base de datos y presionando 'Importar' en la barra de navegación, luego siguiendo los pasos para importarlo
Puede copiar los archivos en un directorio de subdirectorio con el nombre apropiado de la carpeta de datos siempre que sea la misma versión EXACT de mySQL y haya retenido todos los archivos asociados en ese directorio. Si no tiene todos los archivos, estoy bastante seguro de que tendrá problemas.
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
Dice cambiar el nombre de los archivos ib_ *. Lo hice y me devolvió la base de datos.
La descripción anterior no fue suficiente para que las cosas funcionen para mí (probablemente densa o perezosa), así que creé este script una vez que encontré la respuesta para ayudarme en el futuro. Espero que ayude a otros
vim fixperms.sh
#!/bin/sh
for D in `find . -type d`
do
echo $D;
chown -R mysql:mysql $D;
chmod -R 660 $D;
chown mysql:mysql $D;
chmod 700 $D;
done
echo Dont forget to restart mysql: /etc/init.d/mysqld restart;
Para aquellos que tienen Windows XP y tienen instalado MySQL server 5.5: la ubicación de la base de datos es C: \ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ data, a menos que haya cambiado la ubicación dentro de la instalación de MySql Workbench GUI