Salvar (y recuperar) una base de datos MySQL

Esta receta explica una forma sencilla de hacer una copia de seguridad de una base de datos MySQL completa para poderla restaurar en caso de catástrofe o mudanza.

Hacer una copia de seguridad

El comando a utilizar es mysqldump que tiene la siguiente sintaxis:

mysqldump -u [user] -p [dbname] > [backup.sql]

por ejemplo:

# mysqldump —single-transaction -u admin -p drupal > drupal_backup.sql

Puesto que se pretende obtener un “foto fija” de la base de datos, es conveniente evitar que un acceso inoportuno pueda dejar el fichero volcado es un estado inconsistente. Esto se puede conseguir con varias opciones aunque la recomendada es --single-transaction.

Recuperar la base de datos desde un fichero

Se utiliza el método habitual para ejecutar sentencias SQL desde un fichero. Para el ejemplo sería:

# mysql -u admin -p drupal < drupal_backup.sql

Comentarios

El primer enlace que se adjunta se ha tomado como base para esta receta. En ese documento se explica también el uso de mysqlimport, sin embargo yo no he conseguido hacerlo funcionar tal como se indica. Se supone que se puede recuperar una base de datos que ya exista, pero la página de manual dice que sirve únicamente para recuperar una tabla, y no una base de datos completa.

También está disponible el comando mysqlhotcopy que tiene una funcionalidad similar a mysqldump.

Referencias

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Problemas para hacer la copia

Hola, yo antes no estaba enterado sobre la existencia de mysqldump. Cuando hice la copia de seguridad solo copie la carpeta de la base de datos, (con todos los archivos frm, MYI, y MYD)

Ahora no se como recuperarlos, ya probe con varios experimentos remplazando y creando carpetas de base de datos sea manualmente o automaticamente. Los datos sigo teniendolos, pero no tengo manera de hacerlo tomar en mysql. Que hago?

Pensaba que con solo copiar y pegar carpetas con las base de datos eran suficientes.

Error de back catastrofe en restauracion

Hola TODOS, MI CASO ES EL SIGUIENTE originalmente instal el mysql 4.1 en una particion del disco en la misma tengo las bases. El tema es que formate la unidad donde se encontraba el sistema y el back up no me funciono. Pero tengo la carpeta con los datos originales de la base de datos en la particion. Como puedo restaurar la informacion que tengo? saludos

int-0's picture

No lo entiendo muy bien...

...veamos... si formateas una partición no hay ningún backup que "salte" y guarde tus datos importantes antes de limpiarlo todo. Por otro lado.... si tienes la carpeta con los datos originales... no has perdido nada, símplemente úsalos... como ya te he dicho, no entiendo nada.

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

RESPALDOS MYSQL

jajaja
todos ya leimos infinidad de manuales y "recetas", pero seguimos preguntandonos DONDE, COMO y PORQUE.

Hacer un respaldo de la base de datos es muy facil ya hasta un niño de primaria sabe como hacerlo. Pero ese no es el problema...

Cuando reespaldas una BD de 30 MB (minimo) al momento de restaurarla se tarda horas para finializar este proceso.

Pienso que la verdadera pregunta es ¿COMO REESTAURAR UNA BD DE FORMA RAPIDA ?

Lk2's picture

Para quien no sabe

Una receta con esta cosa tan "trivial", como tu la consideras, puede ser útil para aquel que esté dando sus primeros pasos con MySQL.

Pienso que las recetas "triviales" son de las más útiles, porque por muy fácil que sea algo siempre puede hacernos falta mirar un pequeño recordatorio.

Además, si una receta no te hace falta no la uses, no entiendo el objetivo de tu crítica.

Y por favor, respeta la ortografía.

david.villa's picture

Esta receta ofrece la

Esta receta ofrece la solución a otro problema bien diferente como tu mismo han acertado a deducir. Si el tiempo que requiere recuperar la base de datos a un estado conocido es crítico, la solución obvia es la replicación hardware, ya sea del disco o de toda la máquina, o bien mantener la base de datos en RAM si no es problema disponer de unas cuantos gigas.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

darkgnu's picture

es fácil...

...memorizándola...
----------------------------------------------------------
$ mv *.net /dev/null

----------------------------------------------------------
$ mv *.net /dev/null

me urge saber algo

hola… esta informacion esta muy bien pero con lo que voy a preguntar me voy a oir muy tonta pro no me importa siempre y cuando me saquen de la duda.. hablan sobre poner comandos y todo esta muy bien… lo entiendo.. pero como o mas bien a donde entro para que me ponga un prompt? al simbolo de sistema? o como?
trato de restaurar una base de datos y me dejaron 3 programas que son MYSQL, APACHE Y PHP pro no los se utilizar.. tambien me dejaron 2 carpetas que 1 son el formato de los formularios y la segunda carpeta tiene todo el contenido de la basse de datos disque.. pero trato de buscar un documetno .sql y x mas que le busco no lo encuentro
saludos y gracias

david.villa's picture

Esos comandos

…que aparecen en la receta son para ejecutar directamente con una cuenta de usuario en la máquina en la que esté instalado mysql-server. También se podrían ejecutar desde un máquina diferente si se indica la máquina y tienes configurado mysql-server para permitir conexiones externas, aunque no es lo habitual, por cuestiones de seguridad.

No soy portavoz de ningún colectivo, grupo o facción. Mi opinión es personal e intransferible.

Está muy bien esa forma de

Está muy bien esa forma de hacer copias de seguridad, sobre todo si no se consigue nada estandar cuando quieres pasarlo o al servidor o a localhost, ya que en mi caso se hace de formas diferentes y tengo que salvarlo de formas diferentes en cada caso.

Ahora tengo el problema de que se excede de tiempo cuando intento importar el código sql en phpmyadmin.

Pero para los que no usamos sql más que para poder usar drupal o cualquier otro cms, ¿puedes explicar dónde hay que escribir esos comandos? Y no me refiero a si es en phpmyadmin, mysql o una ventana de msdos sin más, me refiero a donde en concreto del lado que sea porque me estoy volviendo loco buscando información por todos lados.

Muchas gracias.

cleto's picture

Pues...

... esto se debe poner en un terminal (como indica el pequeño icono que viene en el recuadro que contiene). En GNU es fácil abrir un terminal:

Aplicaciones -> Accesorios -> Terminal.

Te saldrá una pantalla con los mismos colores que MS-DOS, pero sin serlo. Es ahí donde tienes que poner ese galimatías incomprensible, digno de un exhaustivo criptoanálisis.

Recuerda que esto es un portal de software libre.

Un saludo!

**"Hay obras de caridad
y obras de sentimiento...
pero las que más duran
son las del Ayuntamiento"**
Cleto