MYSQLDUMP

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"
Scroll al inicio