Backup de bases de datos MySQL con mysqldump

  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
  • : Function eregi_replace() is deprecated in /home/drupaleros/public_html/modules/smileys/smileys.module on line 91.
Tags:
MySQLUn pequeño script en PHP que nos permitirá hacer backups de múltiples bases de datos MySQL en un archivo por base de datos.

Primero algo de la sisntaxis de mysqldump, como para no andar copiando y pegando a lo pavote Guiño:

mysqldump [OPTIONS] database [tables]
O
mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
O
mysqldump [OPTIONS] --all-databases [OPTIONS]

ni loco pienso traducir man mysqldump No, pero sí voy a enumerar las opciones y cuáles usaremos:

[-A|--all-databases]
[-a|--all]
[-#|--debug=...]
[--character-sets-dir=...]
[-?|--help]
[-B|--databases]
[-c|--complete-insert]
[-C|--compress]
[--default-character-set=...]
[-e|--extended-insert]
[--add-drop-table]
[--add-locks] [--allow-keywords]
[--delayed-insert]
[-F|--flush-logs]
[-f|--force]
[-h|--host=...]
[-l|--lock-tables]
[-n|--no-create-db]
[-t|--no-create-info]
[-d|--no-data]
[-O|--set-variablevar=option]
[--opt]
[-p|--password[=...]]
[-P|--port=...]
[-q|--quick]
[-Q|--quote-names]
[-S|--socket=...]
[--tables]
[-T|--tab=...]
[-u|--user=#]
[-v|--verbose]
[-V|--version]
[-w|--where=]
[--delayed]
[-e|--extended-insert]
[--fields-terminated-by=...]
[--fields-enclosed-by=...]
[--fields-optionally-enclosed-by=...]
[--fields-escaped-by=...]
[--lines-terminated-by=...]
[-v|--verbose] [-V|--version]
[-O net_buffer_length=#, where # < 16M]

Las opciones que a mí me resultan útiles son las siguientes:

-A|--all-databases: para hacer backup de todas las bbdd de un sólo viaje, cómodo para hacer el backup, no tanto para restaurar, sobre todo si las bbdd son grandes.
-a|--all: Include all MySQL specific create options. (completito completito digamos Riendo)
-B|--databases: especifica los nombres de las bbdd, igual que --all-databases van a un sólo archivo.
--default-character-set=...: para evitar problemas con acentos y eñes, etc.
-e|--extended-insert: usa una sintaxis para los INSERTs optimizada, más rápida.
--add-drop-table: añade un DROP TABLE ... antes de cada CREATE TABLE ...
-F|--flush-logs: Flush logs file in server before starting dump. (si alguien lo quiere traducir Sonriendo, aunque tiene toda la onda de que si algo todavía no lo escribió en la bbdd, con esta opción lo hará ANTES de comenzar el backup).
-h|--host=...: comúnmente localhost.
-l|--lock-tables: Lock all tables for read.-l|--lock-tables: Lock all tables for read.
--opt: Es lo mismo que: --add-drop-table --add-locks --all --extended-insert --quick --lock-tables
-p|--password[=...]: el password del usuario con que nos conectaremos.
-q|--quick: Don't buffer query, dump directly to stdout.
-u|--user=#: el usuario con que realizamos la conexión.
-e|--extended-insert: Use the new multiline INSERT syntax. (Gives more compact and faster inserts statements.)

Como algunas resumen más de una (--opt), destaco en negrita las que explicitaré en el script.

Así que la cosa quedaría más o menos así:

...

Estoy mudando algunos contenidos a mi página personal Sonriendo, puedes encontrar esta entrada completa allí: http://gustavopardo.com.ar/node/697.

Cordial Saludo, he tratado de correr tu intersante scrip de mysqldump pero desafortunadamente no me funciona...

Que podré estar haciendo mal... en localhost me genera el archivo pero vacio y en el servidor no hace nada...

En localhost instale todo con FoxServ 3.0, debe instalar una versión superior o que podrá ser...

En el servidor no se como hacer para que la copia de seguridad la guarde directamente al Pc en una carpeta predefinida.

Agradezco mucho su colaboración.

hola,

lo primero sería intentar correr el mysqldump solo en localhost desde consola (o pantalla dos, no desde php) y ver si te genera el archivo correctamente,

si no lo hace buscar en los logs de errores de mysql para ver qué es lo que está pasando.

si en localhost el mysqldump funciona bien, verifica si en el servidor tienes habilitada la función exec() de php (si estás en un shared hosting es posible que no).

si no la tienes habilitada, deberás tirar de cron para ejecutar el mysqldump desde consola.

saludos.
gustavo pardo.