cont=info_admon_021
mysqldump es parte de los "MySQL Client Programs" programas de cliente de MySQL, que puede ser utilizado
para generar respaldos de bases de datos y ser usados o incluso para ser transf eridos a otro servidor de
base datos SQL (No estrictamente tiene que ser un servidor MySQL).
En este gua prctica de LinuxTotal aprenders (por ejemplos) los usos y opciones ms comunes de este
potente comando de MySQL.
Uso bsico
Tres f ormas bsicas de invocar mysqldump son posibles:
1) respalda una sola base de datos, indicando su nombre, y opcionalmente una o ms tablas de la misma base
de datos. Si no se indican tablas, se respaldan todas.
2) respalda una o ms bases de datos de f orma completa, no se pueden indicar tablas individuales de esta
manera.
3) respalda de f orma completa todas las bases de datos del servidor MySQL de f orma completa, no se pueden
indicar tablas individuales de esta manera.
En todos los casos se indica que la salida del comando, es decir, el vaciado del respaldo se guarde en el
archivo llamado "respaldo.sql", este archivo es el resultado f inal, lo que puede utilizarse despus para restaurar
una base de datos (vase ejemplos ms adelante).
Opciones ms comunes
mysqldump es un comando con decenas de opciones, para verlas todas utiliza la ayuda en lnea que se
proporciona a travs de --help
mysqldump --help
1 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
Lo anterior muestra las posibles opciones especf icas de la versin de MySQL que utilices asi que pueden
variar con respecto a la siguiente lista:
2 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
Esta opcin esta por def ecto activada, produce un vaciado rpido y totalmente
--opt compatible con otros servidores MySQL. Es un alias que activa las opciones
--add-drop-tab le, --create-options, --extended-insert, entre otras.
La contrasea para conectarse al servidor indicado en la opcin --host. Si usas
--password[=pass] -p[pass] la opcin corta p no debe haber un espacio. Es posible no indicar la contrasea
y despus de presionar la tecla intro se preguntar por esta.
-P Si servidor indicado en la opcin --host utiliza un puerto dif erente al def ault del
--port=num
num servicio mysql (3306) debe de indicarse con esta opcin.
Va de la mano con la opcin --single-transaction ya que aplica principalmente
--quick -q para tablas grandes y del tipo transaccional. Permite agilizar la escritura al
archivo de respaldo al leer registro por registro sin mandarlo a un buff er previo.
Opcin por def ecto activada. Pone entre comilla grave "`" a los nombres de los
objetos como base de datos, tablas, columnas. Es recomendable dejarla
--quote-names -Q
siempre para evitar problemas de compatibilidad, pero si se desea desactivar
utiliza la opcin --skip-quote-names
Incluye en el respaldo rutinas almacenadas (procedimientos y f unciones). Con
esta f uncin se incluyen las sentencias "CREATE PROCEDURE" Y "CREATE
FUNCTION" que permiten re-crear completamente procedimientos almacenados
--routines -R y f unciones. Esta opcin NO esta por def ecto en mysqldump asi que es motivo
de sorpresa para DBA's nuevos enterarse que el respaldo en el que tanto
conf iaban no est completo al momento de necesitarlo, sino utilizaron esta
opcin.
Opcin til solo con tablas transaccionales como las del tipo InnoDB, ya que
garantiza la integridad y la consistencia sin bloquear las tablas. Esto lo logra al
--single-transaction
emitir una sentencia "START TRANSACTION" antes de vaciar los datos al
respaldo.
Desactiva la opcin por def ecto --opt, con lo que se tienen que indicar
--skip-opt
individualmente las opciones a las que --opt hace ref erencia.
Incluye triggers creados en el respaldo. Esta opcin es automtica, esta por
--triggers
def ecto, sino se quiere utilizar el respaldo de triggers utiliza --skip-triggers
El nombre de usuario de MySQL para conectarse al servidor indicado en la
--user=nomb re -u nom
opcin --host.
Modo verboso. Imprime inf ormacin de lo que est haciendo el respaldo, usa
--verb ose -v
doble -v -v para modo aun ms verboso.
En vez de un respaldo por def ecto f ormateado con sentencias SQL, esta
--xml -X
opcin of rece una salida en un f ormato XML bien f ormado.
3 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
Respaldamos la base de datos clientes pero ignoramos las tablas 'temporal' y 'basura' (Obligatorio indicar
base.tabla)
Si se tiene contrasea (como debe ser) se indica usuario y que pregunte por el passw ord
No muy buena idea, pero se puede indicar el passw ord directamente, adems nos aseguramos que se indiquen
las opciones por def ecto ms comunes
Respaldo de una base de datos transaccional tipo InnoDB o BDB asegurando su consistencia
Todas las bases de datos del host 192.168.0.100 y agregamos los procedemientos almacenados que sean
respaldados tambin.
Respaldo de las bases de datos clientes y pedidos, con todas las opciones especf icas para re-crear las
tablas, adems aadimos 'drop database' para asegurarnos que en la restauracin se cre desde cero el
respaldo, adems ignoramos errores..
4 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
mysqldump -u root -p --create-options --add-drop-database --force --databases clientes pedidos > respaldo_ven_p
Respaldo completo de un servidor MySQL maestro en replicacin, indicando en el respaldo la posicin para
sincronizacin con servidores esclavos, adems aadimos insertar completos que incluyen los nombres de
columnas en sentencias INSERT
Para descomprimir lo anterior y dejar el archivo listo para la restauracin en si utiliza gunzip
gunzip respaldo_2011.sql.gz
Restaurando el respaldo
Hay varias maneras de lograr la restauracin del respaldo. Con el comando mysql:
Si se utiliz gzip para comprimir el respaldo, se puede descomprimir y restaurar en una sola lnea:
Si el respaldo contiene una sola base de datos y no contiene sentencias 'drop database' y 'create database', se
puede entonces indicar la base de datos donde se debe realizar la restauracin:
5 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
Lo anterior (cuando ya existe la base de datos) tambin se puede lograr con el comando mysqlimport
Es posible tambin utilizar la opcin "-e" (execute) de mysql, que permite ejecutar un archivo con sentencias
SQL, y un respaldo es exactamente eso, un largo script con sentencias SQL para recrear esquema y datos:
Solo si la ejecucin del comando f ue correcta y termina, anexa un pequeo mensaje al f inal de un archivo de
btacora, asi podemos consultarlo y observar que todos los das termin correctamente
Guardar el respaldo como respaldoMySQL.sh y cambia sus permisos de ejecucin que permita ejecucin chmod
700 respaldoMySQL.sh (ver artculos relacionados ms abajo para enlace de este comando)
6 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
#!/bin/bash
#################################################################################################
# Copyright 2005-2017 Sergio Gonzlez Durn (sergio.gonzalez.duran@gmail.com)
# Se concede permiso para copiar, distribuir y/o modificar este programa siempre
# y cuando se cite al autor y la fuente de linuxtotal.com.mx y segn los trminos
# de la GNU General Public License (http://www.gnu.org/licenses/translations.html),
# Versin 3 o cualquiera O Posterior publicada por la Free Software Foundation.
#################################################################################################
fecha=`date +%Y%m%d_%H%M`
archivo="mysql_$fecha.sql.gz"
La lnea cron correspondiente para su ejecucin programada quedara de la siguiente manera en /etc/crontab
0 23 * * * root /ruta/a/respaldoMySQL.sh
7 de 8 03/04/2017 11:40
mysqldump - Una gua prctica https://www.linuxtotal.com.mx/index.php?cont=info_admon_021
8 de 8 03/04/2017 11:40