Backups MySQL con mysqldump

Mysqldump, como la mayoría sabéis, es una herramienta de mysql que sirve para realizar copias de seguridad de bases de datos. Es esencial conocer el uso básico de esta herramienta, como es esencial tener un sistema de backups adecuado para cualquier dato almacenado con un mínimo de importancia.

Os voy a poner los ejemplos más básicos y comunes para realizar backups desde línea de comandos con mysqldump.

Realizar backup de una única base de datos:

mysqldump -u root -p nombre_base_de_datos > fichero.sql

De este modo, realizará el backup de la base de datos, solicitando la clave del usuario root mysql, si queréis también se puede especificar pegado a la letra «p» -pclave.

Y si quisieramos restaurar esa base de datos, haríamos lo siguiente:

mysql -u root -p  nombre_base_de_datos < fichero.sql

Lo mismo ocurre con la clave del usuario root, la podemos especificar o esperar a que la pregunte.

Si quisieramos realizar un backup de todas las bases de datos:

mysqldump -u root -p --all-databases > fichero.sql

Y si solo quisieramos hacer backup de un par de bases de datos:

mysqldump -u root -p --databases base_datos1 base_datos2 > fichero.sql

Para hacer backup de una sola tabla, dentro de una base de datos:

mysqldump -u root -p base_datos tabla > fichero.sql

Esto es, a grandes rasgos, lo más básico de la herramienta mysqldump, en la propia ayuda de la herramienta encontraréis mucha más información:

mysqldump --help

21 comentarios en “Backups MySQL con mysqldump

  1. Hola sabes como usar ese código desde Java

    mysql -u root -p nombre_base_de_datos < fichero.sql

    como ejecuto eso desde un programa en java

    • Pues es necesario usar un proceso del sistema operativo…Algo como:
      Process proceso = Runtime.
      ———getRuntime().
      ———exec(«mysql -uusuario -p basededatos < fichero.sql");
      proceso.waitFor();

      Para ello recuerda tener mysql en el PATH del sistema.

  2. También podemos comprimir directamente el backup usando tuberías (pipes):
    mysqldump –opt -u nombre_usuario -p base_datos nombre_tabla1 | gzip > copia_seguridad.sql.gz

    Un saludo,
    Alejandro Arco

  3. Para los que no estan muy familiarizados con la consola de comandos recomendaria esta herramienta: MySQLBackupFTP (http://mysqlbackupftp.com). La utilizo en mi servidor web y es una buena herramienta. Tiene una version gratuita que permite programar backups de 2 bases de datos ademas que envia notificationes por email una vez que los backups se han efectuado.

  4. Esto es justamente lo que necesita un usuario sin conocimientos como yo.
    Esta a escrito a un nivel muy entendible.

    Pero tengo unos problemillas al querer programarlo como tarea automatizada.

    Ya lo corrí desde la consola de comandos con la siguiente intrucción(adaptada a mi caso) y puedo hacer el respaldo:
    mysqldump –opt -u root -p1234 base1 >RESPALDO.sql

    pero al meter ese comando en un archivo .bat (usando un ejemplo que encontré por ahí en la red, al ejecutarlo sólo me crea un archivo con el nombre del archivo de respaldo, pero es un archivo vacío, sin contenido.

    A ver si me pueden echar la mano indicandome donde tengo que modificar algo. el contenido de mi archivo .bat es el siguiente:

    @echo off
    echo Running dump…
    C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump –opt -u root -p1234 base1 > RESPALDO.sql
    echo Done!

    Trabajo en Windows 7, por si sirve de algo la nota.
    Gracias.

    • Hola! El problema son los espacios en los nombres de las carpetas.
      Tenes que poner toda la ruta entre comillas.
      Para guiarte mejor edita un acceso directo de windows y mira como pone.

  5. hola! borre mi web sin querer y suerte tenia archivos guardados de copias y todo lo que habia en el public_html y tambien copias de las bases de datos, he reistalado casi todo mi web site de nuevo con esos archivos pero no acaba de funcionar ya que dice que no conecta con l base de datos, y se que es pq cuando cree las nuevas bases de datos las cree con otros nombres a los de el anteior sitio y importe el contenido de mis bases de datos a otras nuevas pero con nombres distintos y usuario, el contenido es el mismo pero por este detalle mi web no conecta…creo yo…

    alguien sabria como recuperar o recordar esos datos como el nombre de la base de datos y el usuario mysql ya que sin ellos mis datos de las copias de seguridad de mis tablas son inutiles ya que no conectan con mi web site, agradezco cualquier ayuda, gracias?

    • Hola Andrés.

      EN tu public_html tiene que haber un archivo llamado config.php o similar en el cual puedes especificar el nombre de la base de datos, usuario de conexión y password. Cámbialo ahí por el nuevo y debería volver a funcionar.

      Saludos

  6. Esta excelente el tutorial, solo que por alguna razon al restaurar el backup solo me crea la primer tabla, luego me dice esto

    ERROR 1142 (42000) at line 20: INSERT command denied to user ‘root’@’localhost’ for table ‘j25_assets’

    se trata de una base para Joomla pero solo me restaura la tabla j25_assets… alguien tiene idea? será la compatibilidad del codigo sql del backup? el server es un UBUNTU 13.4

    Saludos!

    • ¿Has introducido alguna contraseña cuando la pidió? Revisa si pusiste el parámetro ‘-p’ para que pida la contraseña y puedas introducirla.

      Saludos.

  7. Sabéis si se puede hace para varias bases de datos y que se exporten en varios ficheros (1 por cada base de datos) con el nombre del fichero = al nombre de la base de datos.

    Gracias

  8. Una pregunta, si hago una copia de seguridad de mi base de datos con mysqldump me ocupa 2,71 MB. En cambio, si entro en la base de datos con phpmyadmin y hago una exportación, el archivo me ocupa 3 MB. Puede ser que esté perdiendo información?

    • Puedes ver las diferencias haciendo un diff al fichero:

      diff fichero1.sql fichero2.sql

      Probablemente sea por que mete más comentarios o algo así. Debería ser el mismo dump.
      Saludos

    • No se trata de perdida de información, lo que sucede es que PHPMyAdmin inserta banderas dentro del archivo SQL, son lineas de comentarios para la interpretación de las secciones dentro de la base de datos.

  9. Buen dia,
    Cual es el directorio en servidor donde queda guardado el respaldo?
    Tengo el MySQL instalado en un servidor CentOS
    Slds

Comments are closed.