Twitter Flickr Pinterest LinkedIn YouTube Google Maps E-mail RSS
formats

Restaurar una base de datos MySQL en modo de rescate

Si no dispones de un backup de la base de datos Mysql en formato .sql o dump, y posees en cambio los ficheros que se encuentran en la carpeta:

carpeta/var/lib/mysql/data/NOMBRE_BASE_DE_DATOS

Ejemplo:  /var/lib/mysql

En esa carpeta tendremos unos ficheros por cada tabla de la base:

– mitabla.frm  que es el fichero con la definición de la tabla

– mitabla.MYD (extensión en MAYÚSCULAS) que es donde están los datos de la tabla

– mitabla.MYI (extensión en MAYÚSCULAS) donde se almacenan los índices de la tabla

Los pasos para restaurar son los siguientes:

  1. Creamos desde p.e. phpMyAdmin una base de datos que contendrá las tablas (servidor destino).
  2. Copiamos los ficheros anteriores dentro de la carpeta /var/lib/mysql/data/nombreBD
  3. Cambiamos de cada uno de los ficheros el usuario a “mysql – MySQL Server” en este caso y al grupo “mysql”, ambos con los permisos de Lectura y Escritura. Otros no tendrán ningún permiso sobre estos tres ficheros.

Con lo anterior debería funcionar. Uno de los errores que típicos es que a la hora de copiar los ficheros de extensión .frm, .MYD y .MYI se cambiaban  a minúsculas las extensiones por lo que cuando desde phpMyAdmin intentaba leer estas tablas obtenía el siguiente error:

#1017 – Can’t find file: mitabla (errno: 2)

Que decir que tendremos que enviar esta información mediante ftp desde el servidor rescue hacia otro. (Puede ser local montando un filezilla server)

Para que el servidor ftp, funcione es necesario, desactivar el cortafuegos local, entrar en el router, dirigir la IP publica hacia la local y los puertos 21, activar zona DMZ en dicha ip local. (en función del router).

Otra posibilidad, 2 Alternativa

Para hacer un backup de una base de datos en modo rescue, debe seguir estos pasos:

– Montar las particiones / y /home

Código:
# mount /dev/sda1 /mnt/
# mount /dev/sda2 /mnt/home

Montar los directorios /proc y /dev para poder ejecutar comandos del sistema

Código:
# mount -o bind /proc/ /mnt/proc/
# mount -o bind /dev /mnt/dev

Hacer chroot sobre /mnt para empezar a trabajar como root en nuestras particiones

Código:
# chroot /mnt

Arrancamos el motor MySQL en modo seguro con el comando:

Código:
@ mysqld_safe --skip-grant-tables --skip-networking &

Entramos a MySQL con el comando:

Código:
@ mysql

Miramos nuestras bases de datos con el comando:

Código:
mysql> show databases;

Y salimos:

Código:
mysql> exit

Ejecutamos el dump con el comando:

Código:
@ mysqldump test > test.sql

Y ya tendremos nuestro backup sql que habrá que sacar del servidor antes de reinstalar.

 

Para subir los ficheros podemos emplear este script.

#!/bin/bash

FTP_HOST='xxx.xxx.xxx.xxx'
FTP_LOGIN='miservidor.net'
FTP_PASS='******'

ftp -in << EOF
open ${FTP_HOST}
user ${FTP_LOGIN} ${FTP_PASS}
bin
verbose
prompt
put $1
bye
EOF

Etiquetas:

Una respuesta

  1. johnbel

    Muy bueno, me sirvió bastante

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Home Bases de datos Restaurar una base de datos MySQL en modo de rescate
© www.palentino.es, desde el 2012 - Un Blog para compartir conocimientos ...

Uso de cookies en mi sitio palentino.es

Este sitio web utiliza cookies para que tengamos la mejor experiencia de usuario. Si continúas navegando estás dando tu consentimiento para la aceptación de las mencionadas cookies y la aceptación de la política de cookies

ACEPTAR
Aviso de cookies