Cargando



Copias de seguridad avanzadas para bases de datos MySQL

Cuando se realizan copias de seguridad de bases de datos MySQL, resulta habitual utilizar el comando mysqldump sin opciones. veamos sus opciones interesantes para realizar copias de seguridad avanzadas.


feb 19 2014 21:31
Profesional
sep 07 2016 12:23

Cuando se realizan copias de seguridad de bases de datos MySQL, resulta habitual utilizar el comando mysqldump sin opciones. Sin embargo, este comando tiene muchas opciones interesantes que permiten realizar copias de seguridad avanzadas.

 

Por defecto, el comando mysqldump genera una copia de la estructura sql todas las tablas de la base de datos indicada, en un archivo de texto sql. Para incluir solamente una o más tablas, indica sus nombres después del nombre de la base de datos.

 

Desde la ventana de terminal en el directorio de mysql:

# Copia de seguriad de una sola tabla

$ mysqldump –user=usuario --password=clave basededatos tabla > copia_seguridad.sql
# Copia de seguriad de tres tablas

$ mysqldump –user=usuario --password=clave basededatos tabla1 tabla2 tabla3 > copia_seguridad.sql
Ejemplos de 1 o 3 tablas.

 

 

1. Excluyendo algunas tablas de la copia de seguridad


Para no incluir en la copia de seguridad alguna tabla concreta, debemos indicarlo con la opción --ignore-table, cuyo valor debe indicarse

 

Si está haciendo por ejemplo una copia de seguridad de una base de datos llamada comercio pero no quieres que se incluya una tabla llamada ventas, ejecuta el siguiente comando:

$ mysqldump --user=usuario--password=clave --ignore-table=comercio.ventas comercio > copia_seguridad.sql
Es decir copiar toda la base de datos comercio menos la tabla ventas. Si queremos excluir varias tablas deberemos utilizar el siguiente comando:
$ mysqldump --user=usuario --password=clave

--ignore-table=comercio.ventas

--ignore-table=comercio.productos

--ignore-table=comercio.precios

comercio > copia_seguridad.sql
(Para excluir varias tablas, indica sus nombres con otras tantas opciones --ignore-table)

 

 

2. Limitando el número de registros de cada tabla


Por defecto, el comando mysqldump copiara todos los registros de todas las tablas. Si quieres filtrar previamente los registros, añade la opción --where, que permite indicar la condición de tipo WHERE que se añade a las consultas SELECT que se realizan para extraer todos los registros:
$ mysqldump --user=usuario --password=clave

--where="edad > 18 AND edad < 65"

basededatos > copia_seguridad.sql

Si queremos extraer solo algunos registros de la base de datos por ejemplo los primeros 500
$ mysqldump --user=usuario –password=clave

--where="1 limit 500"

basededatos > copia_seguridad.sql
Se extraerían con limite en 500.

 

 

3. Copiar solo la estructura de las tablas pero no sus datos


Por defecto, el comando mysqldump vuelca tanto la estructura de las tablas como toda su información. Si sólo te interesa volcar la estructura de las tablas y columnas, utiliza la opción --no-data. Así podrás crear otra base de datos exactamente igual pero vacía:
$ mysqldump --user=usuario --password=clave

--no-data basededatos > copia_seguridad.sql
Normalmente cuando se generan los insert se agrupan en una sola sentencia para ahorrar líneas de código de la siguiente manera:
INSERT INTO tabla VALUES (1,'nombre1'), (2, 'nombre2'), (3, 'nombre3');
Este es el comportamiento puede provocar errores con sistemas antiguos incapaces de procesar líneas de extensa longitud. Igualmente, puedes tener problemas con tu editor de textos al intentar abrir un archivo de copia de seguridad que contiene estas líneas tan largas.

 

Si nos enfrentamos a este caso, podemos añadirla opción --extended-insert=false para hacer que cada INSERT se ejecute con su propia instrucción:

$ mysqldump --user=usuario –password=clave

--extended-insert=false basededatos > copia_seguridad.sql
El resultado será el siguiente:
INSERT INTO tabla VALUES (1,'nombre1');

INSERT INTO tabla VALUES (2, 'nombre2');

INSERT INTO tabla VALUES (3, 'nombre3');


¿Te ayudó este Tutorial?


1 Comentarios

Fenomenal tuto, gracias!!
No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X