You are on page 1of 17

Tema 4.

- Copias de Seguridad con MySQL

Formas de llevar a cabo un backup de una base de datos MySQL

Muchas aplicaciones Web hacen uso de bases de datos donde almacenan toda la informacin que se mueve en ese portal. Comercios electrnicos, blogs, plataformas elearning o pginas Web corporativas de empresas no podran funcionar sin este tipo de sistemas de almacenamiento de la informacin. Ante esta situacin reali ar copias de seguridad de esas bases de datos se presenta como una tarea imprescindible si queremos tener la seguridad de que en caso de sufrir cualquier imprevisto de p!rdida de informacin, poder acudir al bac"up correspondiente # recuperar esos datos. $on muchos los que piensan que este tipo de acciones pueden resultar mu# complicadas # que %nicamente e&pertos informticos pueden llevar a cabo estas acciones. 'or suerte esto no es as, sobre todo gracias a herramientas que nos facilitan este proceso. (s presentamos la forma de hacer una copia de seguridad de una base de datos M#$)* de dos formas distintas+ ,. -tili ando la aplicacin Wor"bench .. Mediante lnea de comandos. Antes mencionaremos los diferentes tipos de copias que e&isten+ Clasificacin atendiendo al momento en que se realiza+ Copia de seguridad en fro.- 'ara solventar los problemas derivados de la e/ecucin concurrente del $012 # del mecanismo de copia seguridad se para la ejecucin del SGBD. Copia de seguridad en caliente.- 3o afectan al servicio #a que este no se para, pero pueden comprometer la integridad de la copia.

Pgina1/17

Tema 4.- Copias de Seguridad con MySQL

Clasificacin atendiendo al tipo de informacin que se archiva+ Fsica.- $e salvaguardan 4haciendo copia5 los ficheros fsicos que contienen los datos de la base de datos 46/+ 6n 7nnodb m#sql, ficheros de datos ibdata, ficheros de estructuras .frm # fichero de log ib8logfile&5 gica.- $e e&traen los datos de las tablas e&portndolos a fic!eros de te"to 4o alg%n otro formato5. Copias ms lentas, pero son e&portables a diferentes $012. 9!cnica com%nmente denominada e"portacin de datos# el proceso inverso es la importacin de datos. Clasificacin atendiendo a como se constru$e la copia de seguridad+ Completa.- $e almacena toda la informacin de una o varias bases de datos. %ncremental.- $lo se almacena la informacin que cambi desde la %ltima copia de seguridad. Minimi an el tiempo que dura la copia, pero el procedimiento para su restauracin es ms comple/o. Combinando las diferentes clasificaciones, tenemos las siguientes tipos de copias de seguridad+ Bac&up completa# fsica $ en fro.- Copiar los ficheros que forman la base de datos parando previamente el $012. Comando cop# o cp Bac&up completa# fsica $ en caliente.- Copiar los ficheros sin de/ar a los usuarios sin cone&in. 6s necesario a recurrir a !erramientas que nos proporcione el $012. Bac&up completa# lgica $ en caliente.- Consultas a la base de datos # guardar los resultados en ficheros. :arios mecanismos dependiendo del $012. 6n fro no tiene sentido. Bac&up incremental $ fsica 'en caliente o fro(.- $olo se almacenan los cambios a partir de la %ltima copia. 6n M#sql consiste en copiar los archivos que almacenan las transasacciones 4log binario5. M#sql dispone de herramientas # comandos para llevar a cabo esta tarea+ M#$)* W(;<163C= 4Copia gica5 M#sqldump 4copia lgica5 M#sqlhotcop# 4copias en caliente motor M#7sam5

M#sql 6nterprise 1ac"up 4copias en caliente motor 7nnodb5

Pgina2/17

Tema 4.- Copias de Seguridad con MySQL

*(A2 2A9A, $(-;C6, $6*6C9 .. 739(

BACKUPS LGICOS Copias fsicas en fro


2epender del motor de almacenamiento del que se haga uso. 7nnodb

M#7sam
1sicamente consiste en copiar los ficheros de datos # estructuras a otro lugar, ficheros .frm, .M>24datos m#isam5 # M>74indices m#isam5, ibdata4datos 7nnodb5 # logfile4log innodb5, con el SGBD parado. 73C(3:6376396$+ *os usuarios no podrn operar durante el transcurso del bac"up. =abr que tener en cuenta, si se ha restaurado por completo el sistema, que la base de datos information8schema no tenga registrada ni la base de datos ni las tablas de la base de datos restaurada, # que en la base de datos m#sql no se tengan los permisos adecuados, por ellos es fundamental restaurar tambi!n estas dos bases de datos.

Copias fsicas en caliente

6n el motor de

almacenamiento )$%sam se puede usar el comando m$sql!otcop$. 6s un script 'erl que usa los comandos *(C< 9A1*6$, ?*-$= 9A1*6$ # cp o scp. 0enera una serie de archivos.

Pgina3/17

Tema 4.- Copias de Seguridad con MySQL

*a restauracin se reali a en fro # consiste en copiar los ficheros # reiniciar el servidor.

)$sql!otcop$, requiere unos cuantos privilegios del usuario que e/ecuta el comando. Concretamente, se requieren+ 'ermisos de $6*6C9 sobre las tablas de la base de datos 'ermisos de *(C< 9A1*6$ 'ermisos de ;6*(A2

$e puede crear un usuario de bac"up con estos permisos, con tal de que el usurario se use %nicamente para tareas de copias de seguridad, sin necesidad de otorgarle permisos adicionales.
mysql> create user backup@'localhost identified by mipassword; mysql> grant select on basededatos.* to backup@'localhost with grant option; mysql> grant lock tables on basededatos.* to backup@localhost; mysql> grant reload on *.* to backup@localhost;

6l usuario bac"up quedar entonces con los siguientes permisos+


mysql> show grants for backup@localhost; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! " #rants for backup@localhost " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!! " #$%&' $()*%+ *& *.* '* 'backup'@'localhost' ,+(&',-,(+ ./ 0%112*$+ '3454gd6' " " #$%&' 1()(7'8 )*79 '%.)(1 *& :basededatos:.* '* 'backup'@'localhost' " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ; rows in set <=.== sec>

Con este usuario, #a se podr e/ecutar el comando m$sql!otcop$ sobre la base de datos @basededatos@, tal # como sigue+
mysqlhotcopy basededatos !!user?backup !!password?mipassword @destino

*as primeras e/ecuciones han reducido el tiempo del bac"up de .A minutos 4reali ado con m#sqldump5 a poco ms de , min BA segundos, aunque tambi!n es verdad que los bac"ups reali ados con m#sqlhotcop#, ocupan el do*le que los resultantes de usar m#sqldump, una ve comprimidos ambos. 6n el motor de almacenamiento %nnod* se usa la herramienta )$sql +nterprise Bac&up

'ermite hacer copias de seguridad de cualquier tipo.

Pgina4/17

Tema 4.- Copias de Seguridad con MySQL

Caliente ?ro

BACKUPS LGICOS
M#sql dispone del comando m$sqldump para generar respaldos de bases de datos 6l comando m$sqldump genera un fic!ero de instrucciones S, que son capaces de, posteriormente, volver a generar la misma base de datos que tenamos. 3ormalmente, este fichero contiene un C;6A96 9A1*6 por cada tabla de la base de datos, instrucciones para crear ndices, # numerosos 73$6;9 para llenar las tablas con datos 4uno por registro5. $in embargo, este comando, puede resultar mu# lento, para bases de datos grandes.

Backup de MySql desde Workbench(Logicos)


1. 'rimero abre el Wor"bench # con!ctate como $erver Administracin.

2. Una ve adentro, en el men% de la i quierda dale a 2ata 6&port.

B. $elecciona las base de datos C9ablas que deseas reali ar el bac"up.

Pgina /17

Tema 4.- Copias de Seguridad con MySQL

reaci!n de una copia de seguridad para una base de datos nica


6n primer lugar, estos son los pasos para crear una copia de seguridad de una base de datos %nica. ,.- $eleccione la base de datos que desea copiar haciendo clic en la casilla de verificacin /unto a !l. ..- A continuacin, especifique el archivo de destino de la copia de seguridad. M#$)* Wor"bench tiene la caracterstica avan ada de lo que le permite decidir si desea e"portar a una carpeta de copia de seguridad del pro$ecto 4cada tabla e&portada se graba en un archivo aparte. "Export to Self-Contained File"5 o para e"portar a un arc!ivo autocontenido 4todos los ob/etos de base de datos e&portados se graban en un solo archivo.- "Export to Self-Contained File" 5 .Adems, se puede introducir el nombre completo de la ruta en la que desea que el servidor para crear el archivo 4s5.

reaci!n de una copia de seguridad de las tablas individuales


M#$)* Wor"bench le da la opcin de copia de seguridad de las tablas individuales. ,.- 'ara ello, haga clic en el nombre de la base de datos que contiene la tabla 4s5 que desea copiar. 9enga en cuenta que las tablas contenidas en la base de datos que eligi se mostrarn en la parte central de la pantalla. ..- 6n la lista de tablas, eli/a los de copia de seguridad haciendo clic en las casillas de verificacin. B.- Como antes, indica el destino de la copia de seguridad. -sted puede elegir el destino predeterminado o escriba un nombre de ruta completo. D. 7ndica el ?ile 'atch 4lugar # nombre del archivo a guardar.5 E. 6n la parte inferior, se encuentran chec"s desmarca el que dice F$"ip table data 4nodata5F.

Pgina!/17

Tema 4.- Copias de Seguridad con MySQL

G. 4(pcional5 $i deseas tambien reali ar bac"ups de tus procedures, functions, etc. 6n la parte inferior marca el chec" que dice F2ump $tored 'roceduresF. H. 'or ultimo dale a I$tart e&portJ.

Backup mediante l"nea de comando


El comando mysqldump es un programa que incluye por defecto el gestor de base de datos MySQL y que permite la posibilidad de realizar copias de seguridad de los datos almacenados ejecutando la instruccin mediante lnea de comando. Este comando permite crear copias de seguridad que pueden ser restaurados en distintos tipos de gestores de bases de datos ya que devuelve un fic ero SQL con todas las sentencias necesarias para la restauracin de la copia en cualquier otro sitio. El comando dispone de una amplia gama de opciones que nos permitir! realizar el bac"up de la forma m!s conveniente# aunque para su uso es necesario que podamos conectarnos a la consola del servidor# cosa que no est! disponible en alojamientos compartidos pero s en el caso de disponer de un $%S# un servidor dedicado o un gestor MySQL en la nube.
m$sqldump es un comando con decenas de opciones, para verlas todas utili a la a#uda en lnea que se proporciona a trav!s de Khelp
mysqldump --help

*o anterior muestra las posibles opciones especficas de la versin de M#$)* que utilices as que pueden variar con respecto a la siguiente lista+ m$sqldump -.C%-/+S )0S C-)1/+S

Opcin
--add-drop-database --add-drop-table --all-databases --comments

Corto

Descripcin
Aade la sentencia 'DROP DATABASE' antes de cada sentencia ' REATE DATABASE' Aade la sentencia 'DROP TAB!E' antes de cada sentencia ' REATE TAB!E' Respalda todas las tablas de todas las bases de datos" Aade comentarios en el archi#o de respaldo" Esta opci$n est% por de&ecto acti#ada' para desacti#ar los comentarios utili(a --s)ip-comments" Produce una salida m%s compatible con otros sistemas de bases de datos o #ersiones anteriores de +yS,!"nombre puede tomar estos #alores- ansi' mysql./.' mysql01' post2resql' mssql' oracle' db/' ma3db" 4sa sentencias 56SERT completas que incluyen nombres de columnas" 5ncluye todas las opciones espec7&icas

-A -i

--compatible*nombre

--complete-insert --create-options

-c

Pgina7/17

Tema 4.- Copias de Seguridad con MySQL

de +yS,! para la creaci$n de tablas que se usan con la sentencia ' REATE TAB!E'" Permite respaldar una o m%s bases de datos" Despu8s de la opci$n se indica9n: el9los: nombre9s: de la9s: base de datos a respaldar" Se respalda cada base de datos completa" En la salida se incluye con esta opci$n las sentencias ' REATE DATABASE' y '4SE' antes de cada nue#a base de datos" 4sa la sentencia '56SERT' con el &ormato de m;ltiples re2istros con #arias listas de '<A!4ES'" Esto produce una salida m%s reducida y acelera el proceso de 56SERTS cuando el archi#o es restaurado" 5deal para bases de datos con tablas que contienen miles de re2istros" Si se tienen #ie=s o #istas en la base de datos a respaldar y la #ista hace re&erencia a una tabla que ya no e3iste' el #aciado del respaldo terminar% con un error sin completarse" on esta opci$n se podr% continuar" Se reali(a el respaldo de el ser#idor +yS,! indicado por nombre' puede ser una direcci$n 5P o un nombre de ser#idor #%lido" Si no se especi&ica el de&ault eslocalhost" Si no se desea respaldar una tabla en espec7&ico se utili(a esta opci$n' es obli2ario indicar la base de datos un punto y despu8s nombre de la tabla" Si son #arias tablas las que se han de i2norar se usa esta opci$n m;ltiples #eces" Tambi8n puede usarse para i2norar #istas" Si el respaldo #iene de un ser#idor +yS,! que actua como maestro en una esquema de replicaci$n' el uso de esta opci$n es muy importante ya que incluira sentencias del tipo > ?A6@E +ASTER TO> que indican la posici$n en los archi#os de bit%cora binarios necesarios para que los ser#idores escla#os se sincronicen adecuadamente" Esta opci$n suprime las sentencias > REATE DATABASE> que por de&ecto se incluyen en el respaldo" 6o escribe o respalda re2istro al2uno solo el esquema de la base de datos" Esta opci$n esta por defecto activada' produce un #aciado r%pido y totalmente compatible con otros ser#idores +yS,!" Es un alias que acti#a las opciones-add-drop-table' --create-options' -e3tended-insert' entre otras"

--databases

-B

--e3tended-insert

-e

--&orce

-&

--host*nombre

-h nom

--i2nore-table*bd.tabla

--master-data

--no-create-db --no-data

-n -d

--opt

Pgina"/17

Tema 4.- Copias de Seguridad con MySQL

--pass=ordA?passB

--port*num

--quic)

--quote-names

--routines

--sin2le-transaction

--s)ip-opt

--tri22ers

!a contrasea para conectarse al ser#idor indicado en la opci$n --host" Si usas la opci$n corta p no debe -pApassB haber un espacio" Es posible no indicar la contrasea y despu8s de presionar la tecla intro se pre2untar% por esta" Si ser#idor indicado en la opci$n -host utili(a un puerto di&erente al -P num de&ault del ser#icio mysql 9..1C: debe de indicarse con esta opci$n" <a de la mano con la opci$n --sin2letransactionya que aplica principalmente para tablas 2randes y -q del tipo transaccional" Permite a2ili(ar la escritura al archi#o de respaldo al leer re2istro por re2istro sin mandarlo a un bu&&er pre#io" Opci$n por de&ecto acti#ada" Pone entre comilla 2ra#e >D> a los nombres de los obEetos como base de datos' tablas' columnas" Es recomendable -, deEarla siempre para e#itar problemas de compatibilidad' pero si se desea desacti#ar utili(a la opci$n --s)ipquote-names 5ncluye en el respaldo rutinas almacenadas 9procedimientos y &unciones:" on esta &unci$n se incluyen las sentencias > REATE PRO ED4RE> F > REATE G46 T5O6> que permiten re-crear completamente procedimientos almacenados y -R &unciones" Esta opci$n 6O esta por de&ecto enmysqldump asi que es moti#o de sorpresa para DBA's nue#os enterarse que el respaldo en el que tanto con&iaban no est% completo al momento de necesitarlo' sino utili(aron esta opci$n" Opci$n ;til solo con tablas transaccionales como las del tipo 5nnoDB' ya que 2aranti(a la inte2ridad y la consistencia sin bloquear las tablas" Esto lo lo2ra al emitir una sentencia >START TRA6SA T5O6> antes de #aciar los datos al respaldo" Desacti#a la opci$n por de&ecto --opt' con lo que se tienen que indicar indi#idualmente las opciones a las que --opt hace re&erencia" 5ncluye tri22ers creados en el respaldo" Esta opci$n es autom%tica' esta por de&ecto' sino se quiere utili(ar el respaldo de tri22ers utili(a --s)ip-tri22ers -u nom El nombre de usuario de +yS,! para conectarse al ser#idor indicado en la opci$n --host"

--user*nombre

Pgina#/17

Tema 4.- Copias de Seguridad con MySQL

--#erbose

-#

--3ml

-H

+odo #erboso" 5mprime in&ormaci$n de lo que est% haciendo el respaldo' usa doble -# -# para modo aun m%s #erboso" En #e( de un respaldo por de&ecto &ormateado con sentencias S,!' esta opci$n o&rece una salida en un &ormato H+! bien &ormado"

Uso bsico
9res formas bsicas de invocar mysqldump son posibles+
I: mysqldump AopcionesB nombreJbd AnombreJtablaI nombreJtabla/ """B K respaldo"sql /: mysqldump AopcionesB --databases nombreJbdI nombreJbd/ K respaldo"sql .: mysqldump AopcionesB --all-databases K respaldo"sql

,5 respalda una sola base de datos, indicando su nombre, # opcionalmente una o ms tablas de la misma base de datos. $i no se indican tablas, se respaldan todas. .5 respalda una o ms bases de datos de forma completa, no se pueden indicar tablas individuales de esta manera. B5 respalda de forma completa todas las bases de datos del servidor M#$)* de forma completa, no se pueden indicar tablas individuales de esta manera. 6n todos los casos se indica que la salida del comando, es decir, el vaciado del respaldo se guarde en el archivo llamado Frespaldo.sqlF, este archivo es el resultado final, lo que puede utili arse despu!s para restaurar una base de datos 4v!ase e/emplos ms adelante5.

C !o "acer copias de se#uridad de una base de datos $%S&L con mysqldump


6ste comando se inclu#e dentro de las utilidades del propio servidor M#$)*, por lo que #a se instal cuando instalaste M#$)*. 'ara comprobar que dispones de mysqldump, abre una consola de comandos # e/ecuta lo siguiente+
$ mysqldump # para comprobar la versin instalada $ mysqldump --version mysqldump Ver 10.XX Distrib 5.X.XX

$i se produce un error de tipo "command not found", es posible que no ha#as instalado M#$)* correctamente o que tengas que indicar la ruta completa hasta donde se encuentre el comando, como por e/emplo+
Pgina1$/17

Tema 4.- Copias de Seguridad con MySQL

$ /usr/local/mysql/bin/mysqldump

Copia de seguridad bsica


6/ecuta el siguiente comando para reali ar una copia de seguridad completa de la base de datos llamada 6O+BREJBASEJDEJDATOS. 3o olvides reempla ar T4J4S4AR5O # T4J O6TRASELA por las credenciales que utili as para acceder al servidor de base de datos+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

$i por e/emplo el usuario es root, la contraseLa tambi!n es root # la base de datos se llama acme, el comando que debes e/ecutar es el siguiente+
$ mysqldump --user=root --password=root acme > copia_seguridad.sql

$i por motivos de seguridad no quieres escribir la contraseLa como parte del comando, puedes reempla ar la opcin --pass=ord*HH por -p. Al hacerlo, M#$)* te pedir que escribas la contraseLa a mano cada ve que realices una copia de seguridad+
$ mysqldump --user=root -p acme > copia_seguridad.sql Enter password: *********

Recuperando una copia de seguridad


*as copias de seguridad slo son %tiles si se pueden recuperar fcilmente los datos cuando se produce un error. $uponiendo que los datos a recuperar se encuentran en el archivo copiaJse2uridad"sql, el comando que debes e/ecutar para recuperar la informacin de la base de datos es el siguiente+
$ mysql --user=TU_USUARIO --password=TU_CONTRASEA base_de_datos< copia_seguridad.sql

(bserva cmo en este caso se e/ecuta el comando mysql # no el comando mysqldump. -tili ando los mismos datos que en el e/emplo anterior, el comando a e/ecutar sera+
$ mysql --user=root --password=root acme< copia_seguridad.sql

Copias de seguridad de ms de una base de datos


3ormalmente el comando mysqldump se utili a para reali ar la copia de seguridad de una %nica base de datos. 3o obstante, en ocasiones es necesario copiar varias bases de datos. 'ara ello, utili a la opcin --databases e indica el nombre de todas las bases de datos separados por un espacio en blanco:

Pgina11/17

Tema 4.- Copias de Seguridad con MySQL

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --databases NOMBRE_BASE_DE_DATOS_1 NOMBRE_BASE_DE_DATOS_2 NOMBRE_BASE_DE_DATOS_3 > copia_seguridad.sql

$i lo que quieres es reali ar una copia de seguridad de todas las bases de datos, utili a en su lugar la opcin --all-databases+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --all-databases > copia_seguridad.sql

Incluyendo solamente algunas tablas en la copia de seguridad


'or defecto, el comando mysqldump vuelca todas las tablas de la base de datos indicada. 'ara incluir solamente una o ms tablas, indica sus nombres despu!s del nombre de la base de datos+
# volcando una sola tabla $ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA NOMBRE_BASE_DE_DATOS NOMBRE_TABLA > copia_seguridad.sql # volcando tres tablas $ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA NOMBRE_BASE_DE_DATOS NOMBRE_TABLA_1 NOMBRE_TABLA_2 NOMBRE_TABLA_3 > copia_seguridad.sql

Excluyendo algunas tablas de la copia de seguridad


'or defecto, el comando mysqldump vuelca todas las tablas de la base de datos indicada. 'ara no incluir en la copia de seguridad alguna tabla concreta, indcalo con la opcin -i2nore-table, cu#o valor debe indicarse como 6O+BREJBASEJDEJDATOS"6O+BREJTAB!A 4si indicas solamente el nombre de la tabla,

se producir un error5+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --ignore-table=NOMBRE_BASE_DE_DATOS.NOMBRE_TABLA NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

$i ests haciendo por e/emplo una copia de seguridad de una base de datos llamada tienda pero no quieres que se inclu#a una tabla llamada #entas, e/ecuta el siguiente comando+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --ignore-table=tienda.ventas tienda > copia_seguridad.sql

Pgina12/17

Tema 4.- Copias de Seguridad con MySQL

'ara e&cluir varias tablas, indica sus nombres con otras tantas opciones --i2noretable+

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --ignore-table=NOMBRE_BASE_DE_DATOS.NOMBRE_TABLA_1 --ignore-table=NOMBRE_BASE_DE_DATOS.NOMBRE_TABLA_2 --ignore-table=NOMBRE_BASE_DE_DATOS.NOMBRE_TABLA_3 NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

Limitando el nmero de registros de cada tabla


'or defecto, el comando mysqldump vuelca todos los registros de todas las tablas. $i quieres filtrar previamente los registros, aLade la opcin --=here, que permite indicar la condicin de tipo M?ERE que se aLade a las consultas SE!E T que se reali an para e&traer todos los registros+

$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --where="edad > 18 AND edad < 65" NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

$i lo que te interesa es simplemente limitar el n%mero de registros volcados para cada tabla, puedes utili ar la opcin --=here /unto con el siguiente truco e&trado del sitio $tac"(verfloM+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --where="1 limit 1000" NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

*a opcin --=here*>I limit I111> hace que slo se e&traigan los primeros I"111 registros de cada tabla. 'ara a/ustar este valor a tus necesidades, reempla a el valor
I111 pero no cambies la primera parte 4I limit5.

Volcando la estructura de las tablas pero no sus datos


'or defecto, el comando mysqldump vuelca tanto la estructura de las tablas como toda su informacin. $i slo te interesa volcar la estructura de las tablas # columnas, utili a la opcin --no-data. As podrs crear otra base de datos e&actamente igual pero vaca+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --no-data NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

Pgina13/17

Tema 4.- Copias de Seguridad con MySQL

Creando archivos con lneas ms cortas


'or defecto, el comando mysqldump combina cientos de instrucciones 56SERT individuales en una sola gran instruccin 56SERT para insertar muchos registros a la ve +
INSERT INTO `NOMBRE_DE_TABLA` VALUES (1, '...', '...', '...'), (2, '...', '...', '...'), (3, '...', '...', '...'), (4, '...', '...', '...'), (5, '...', '...', '...'), (6, '...', '...', '...');

6ste es el comportamiento recomendado en la ma#ora de las situaciones, pero puede provocar errores con sistemas antiguos incapaces de procesar lneas de miles de b#tes de longitud. 7gualmente, puedes tener problemas con tu editor de te&tos al intentar abrir un archivo de copia de seguridad que contiene estas lneas tan largas. $i este es tu caso, aLade la opcin --e3tended-insert*&alse para hacer que cada 56SERT se e/ecute con su propia instruccin+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --extended-insert=false NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

$i abres ahora el archivo de la copia de seguridad, vers cmo #a no e&isten instrucciones 56SERT m%ltiples+
INSERT INTO `NOMBRE_DE_TABLA` VALUES (1, '...', '...', '...'); INSERT INTO `NOMBRE_DE_TABLA` VALUES (2, '...', '...', '...'); INSERT INTO `NOMBRE_DE_TABLA` VALUES (3, '...', '...', '...'); INSERT INTO `NOMBRE_DE_TABLA` VALUES (4, '...', '...', '...'); INSERT INTO `NOMBRE_DE_TABLA` VALUES (5, '...', '...', '...'); INSERT INTO `NOMBRE_DE_TABLA` VALUES (6, '...', '...', '...');

6l principal problema de esta opcin es que la recuperacin de datos es varios rdenes de magnitud m2s lenta que cuando se combinan varios registros en una %nica instruccin 56SERT.

Evitando el bloqueo de las tablas


'or defecto, el comando m#sqldump bloquea las tablas de la base de datos antes de hacer el volcado de la informacin. 6ste es el comportamiento recomendado para evitar inconsistencias al recuperar la informacin.

Pgina14/17

Tema 4.- Copias de Seguridad con MySQL

$in embargo, si ests haciendo una copia de seguridad del servidor de produccin # tiene mucha actividad, este comportamiento puede ser inaceptable. 'ara evitarlo, aLade la opcin --loc)-tables*&alse+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --lock-tables=false NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

Creando bases de datos con datos binarios


'or defecto, el comando m#sqldump vuelca toda la informacin tal # como se almacena en la base de datos. $i guardas archivos binarios 4como imgenes o archivos '2?5 en alguna tabla, pueden producirse errores al procesar despu!s la informacin binaria o al recuperarla. 'ara evitar estos problemas, puedes for ar a que M#$)* convierta la informacin binaria a un formato he&adecimal ms seguro para transmitirlo # recuperarlo. 'ara ello, aLade la opcin --he3-blob+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --hex-blob NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

6l principal problema de esta opcin es que puede aumentar mucho el tamaLo del archivo de la copia de seguridad.

Cambiando el formato de salida


'or defecto, el comando mysqldump hace un volcado de informacin en formato $)*. $i prefieres utili ar el formato NM*, aLade la opcin --3ml+
$ mysqldump --user=TU_USUARIO --password=TU_CONTRASEA --xml NOMBRE_BASE_DE_DATOS > copia_seguridad.sql

6l contenido del archivo generado ser algo como lo siguiente+

<?xml version="1.0"?> <mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <database name="NOMBRE_BASE_DE_DATOS"> <table_structure name="XXX"> <field Field="ID" Type="int(11)" Null="NO" Key="PRI" Extra="auto_increment" /> <!-- ... --> </table_structure> <table_data name="XXX"> <row> <field name="ID">1</field>

Pgina1 /17

Tema 4.- Copias de Seguridad con MySQL

<!-- ... --> </row> </table_data> </database> </mysqldump>

Como utilizar mysqldump para crear una copia de seguridad de su base de datos con Windows
,. Abra un smbolo del sistema de WindoMs. .. B. D. =aga clic en 7nicio -O 6/ecutar 6scriba FcmdF en el cuadro de dilogo # haga clic en el botn F(<F. cd C+ P'rogram ?ilesPM#$)*PM#$)* $erver E.EPbin 6/ecute el programa m#sqldump utili ando los siguientes argumentos+ M#sqldump -u 3nom*re de usuario4 -p 3contrase5a4 -h 3!ost4 3nom*re de la *ase4 O C+ P 3nom*re de arc!ivo4 . sql $i ha facilitado todos los argumentos correctamente, el programa se conectar al servidor de m#sql actual # crear un volcado de toda la base de datos en el directorio que ha especificado en el directorio C+ P. 3o ha# ning%n mensa/e que indique la descarga se ha completado, el cursor de te&to simplemente pasar a la siguiente lnea. =e aqu un e/emplo de la sinta&is de la lnea de comandos+

Cambie el directorio a la siguiente para acceder a la utilidad m#sqldump. Crear un volcado de la base de datos m#sql actual o una mesa +

Copias de seguridad incrementales


Las copias de seguridad completas son muy f!ciles de restaurar. Sin embargo# si una &' es grande ser! muy lenta de acer# interrumpir! el trabajo del S(&' y el espacio en disco se agotar! r!pidamente.

Pgina1!/17

Tema 4.- Copias de Seguridad con MySQL

Las copias de seguridad incrementales permiten almacenar solamente los cambios ec os desde un cierto momento. %or ejemplo# se podra acer una copia completa el da ) de cada mes y luego al *nal de cada da# una incremental. Si ubiera un fallo# por ejemplo# el da )+# se necesitar!n aplicar las copias en orden empezando por la completa seguida de los ), incrementos. Esto signi*ca que la restauracin de copias incrementales es m!s pesada de acer que las completas. %ara poder acer copias incrementales# MySQL debe aber sido arrancado con la opcin correcta. mysqld --log-bin mysql -u root -p mysql. update... /Esto obliga a volcar los nuevos logs que /se ayan podido generar mysqladmin -u root -p flus -logs 0sando los comandos mysqlbinlog podemos volcar cualquier arc ivo de log en un *c ero mysql.

Pgina17/17

You might also like