mysqldump puede ser utilizado para generar respaldos de bases de datos y ser usados o incluso para ser transferidos a otro servidor de base datos SQL (No estrictamente tiene que ser un servidor MySQL).
Obtener todos los comandos disponibles
mysqldump --help
Ejemplos, usos y opciones más comunes
Respaldo de una sola base de datos completa
mysqldump clientes > clientes.sql
Respaldo de una sola base de datos con dos tablas
mysqldump clientes saldos facturas > clientes.sql
Respaldo completo de base de datos clientes y ventas
mysqldump --databases clientes ventas > respaldo_cli_ven_sep_2011.sql
Respaldamos la base de datos clientes pero ignoramos las tablas ‘temporal’ y ‘basura’ (Obligatorio indicar base.tabla)
mysqldump clientes --ignore-table=clientes.temporal --ignore-table=clientes.basura > respaldo_clientes_2011.sql
Respaldo completo de todas las bases de datos
mysqldump --all-databases > respaldo_full_sep_2011.sql
Si se tiene contraseña (como debe ser) se indica usuario y que pregunte por el password
mysqldump -u root -p --all-databases > respaldo_full_sep_2011.sql
No muy buena idea, pero se puede indicar el password directamente, además nos aseguramos que se indiquen las opciones por defecto más comunes
mysqldump -u root -psecreto --all-databases --opt > respaldo_full_sep_2011.sql
Respaldo de una base de datos transaccional tipo InnoDB o BDB asegurando su consistencia
mysqldump -u root -p --single-transaction --quick ventas > respaldo_ventas_2011.sql
Todas las bases de datos del host 192.168.0.100 y agregamos los procedemientos almacenados que sean respaldados también.
mysqldump -h 192.168.1.100 -u root -p --routines --all-databases > respaldo_ventas_2011.sql
Respaldo de las bases de datos clientes y pedidos, con todas las opciones específicas para re-crear las tablas, además añadimos ‘drop database’ para asegurarnos que en la restauración se creé desde cero el respaldo, además ignoramos errores..
mysqldump -u root -p --create-options --add-drop-database --force --databases clientes pedidos > respaldo_ven_ped_2011.sql
Respaldo completo de un servidor MySQL maestro en replicación, indicando en el respaldo la posición para sincronización con servidores esclavos, además añadimos insertar completos que incluyen los nombres de columnas en sentencias INSERT
mysqldump -u root --password=secreto --all-databases --master-data --complete-insert > respaldo_2011.sql
Respaldamos solo el esquema de clientes sin registros
mysqldump --no-data clientes > respaldo_esquema_clientes_2011.sql
Se produce una salida compatible para restaurar la base de datos en Oracle
mysqldump --compatible=oracle --databases clientes > respaldo_clientes_oracle_2011.sql
mysqldump con gzip
Al mismo tiempo que realizamos el respaldo podemos comprimirlo para ahorrar espacio en nuestros respaldos.
mysqldump -u root -p --all-databases | gzip > respaldo_2011.sql.gz
Para descomprimir lo anterior y dejar el archivo listo para la restauración en si utiliza gunzip
gunzip respaldo_2011.sql.gz
Restaurando el respaldo
Hay varias maneras de lograr la restauración del respaldo. Con el comando mysql
:
mysql -u root -p < respaldo.sql
Si se utilizó gzip
para comprimir el respaldo, se puede descomprimir y restaurar en una sola línea:
gunzip < respaldo.sql.gz | mysql -u root -p
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 restauración:
mysql -u root -p clientes < respaldo_clientes.sql
Lo anterior (cuando ya existe la base de datos) también se puede lograr con el comando mysqlimport
mysqlimport -u root -p clientes respaldo_clientes.sql
Es posible también utilizar la opción «-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:
mysql -u root -p -e "source /ruta/a/respaldo.sql"