Backup MySQL

26
Backup MySQL Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com Realizar un backup mysql (copia de seguridad) de las bases de datos y tablas MySQL Hacer una copia de seguridad de las tablas y bases de datos MySQL Cuando una base de datos crece, es importante hacer backups de forma regular. Hay varias formas de realizar un backup en MySQL, desde la linea de comandos (usando el comando mysqldump) o usando una aplicación externa como phpMyAdmin. Hacer un backup con Linux Si estamos en un servidor linux podemos ejecutar el siguiente código en la linea de comandos para realizar un backup ver en popup copiar a portapapeles imprimir 1. mysqldump --opt -u nombredeusuario -p basededatos tabla1 > archivodebackup nombredeusuario : es el nombre del usuario que tiene permisos para acceder a la base de datos. basededatos : el nombre de la base de datos de la que queremos realizar el backup. tabla1 : es un parámetro opcional necesario si queremos realizar el backup de sólo una tabla de la base de datos. Podemos escribir más tablas separadas por espacios en blanco. No es necesario especificar ninguna tabla si queremos hacer un respaldo de toda la base de datos. archivodebackup : es el nombre del archivo que contendrá el backup de la base de datos (la estructura de las tablas y los datos). Una vez ejecutado este comando nos pedirá la password del usuario y se creará el archivo de backup en el directorio en el que nos encontramos. Hacer un backup con Windows Si queremos realizar una copia de seguridad desde entornos Windows, deberemos utilizar la linea de comandos ("cmd"). Para abrir la linea de comandos en Windows podemos ir al menú Inicio>Ejecutar, escribir cmd y pulsar enter). Se nos abrirá la linea de comandos de Windows. Ahora hemos de situarnos en la carpeta donde tenemos instalados los binarios de MySQL por ejemplo: c:\mysql\bin (esta ruta depende de dónde instalaste MYSQL) y escribimos el mismo comando que en linux:

Transcript of Backup MySQL

Page 1: Backup MySQL

Backup MySQL

Prohibida la reproducción total o parcial de este artículo sin el previo consentimiento de Webtutoriales.com

Realizar un backup mysql (copia de seguridad) de las bases de datos y tablas MySQL

Hacer una copia de seguridad de las tablas y bases de datos MySQL

Cuando una base de datos crece, es importante hacer backups de forma regular. Hay varias formas de realizar un backup en MySQL, desde la linea de comandos (usando el comando mysqldump) o usando una aplicación externa como phpMyAdmin.

Hacer un backup con Linux

Si estamos en un servidor linux podemos ejecutar el siguiente código en la linea de comandos para realizar un backup

ver en popup copiar a portapapeles imprimir 1. mysqldump --opt -u nombredeusuario -p basededatos tabla1 > archivodebackup  

nombredeusuario: es el nombre del usuario que tiene permisos para acceder a la base de datos.basededatos: el nombre de la base de datos de la que queremos realizar el backup.tabla1: es un parámetro opcional necesario si queremos realizar el backup de sólo una tabla de la base de datos. Podemos escribir más tablas separadas por espacios en blanco. No es necesario especificar ninguna tabla si queremos hacer un respaldo de toda la base de datos.archivodebackup: es el nombre del archivo que contendrá el backup de la base de datos (la estructura de las tablas y los datos).

Una vez ejecutado este comando nos pedirá la password del usuario y se creará el archivo de backup en el directorio en el que nos encontramos.

Hacer un backup con Windows

Si queremos realizar una copia de seguridad desde entornos Windows, deberemos utilizar la linea de comandos ("cmd"). Para abrir la linea de comandos en Windows podemos ir al menú Inicio>Ejecutar, escribir cmd y pulsar enter). Se nos abrirá la linea de comandos de Windows. Ahora hemos de situarnos en la carpeta donde tenemos instalados los binarios de MySQL por ejemplo: c:\mysql\bin (esta ruta depende de dónde instalaste MYSQL) y escribimos el mismo comando que en linux:

ver en popup copiar a portapapeles imprimir 1. mysqldump --opt -u nombredeusuario -p basededatos tabla1 > archivodebackup.txt  

Comprimir un backup en Linux

Podemos comprimir el archivo resultante de hacer el backup tras ejecutar el comando mysql dump. Por ejemplo:

Page 2: Backup MySQL

ver en popup copiar a portapapeles imprimir 1. mysqldump --opt -u nombredeusuario --password=clave basededatos > archivodebackup.

sql   2. tar -cfv archivodebackup.sql.tar archivodebackup.sql   3. gzip archivodebackup.sql  

Backup de una base de datos InnoDB

Para una base de datos transaccional (de tipo InnoDB o BDB) y de gran tamaño, se puede utilizar este comando

ver en popup copiar a portapapeles imprimir 1. mysqldump --opt -q --single-transaction -u nombredeusuario -p  basededatos tabla1 > arc

hivodebackup.txt  

El parámetro -q es útil para bases de datos de gran tamaño.

Backup con phpMyAdmin

phpMyAdmin es una aplicación para navegar a través de las tablas creadas en la base de datos mysql que te permite realizar muchas operaciones.

Es muy sencillo exportar tablas y bases de datos con esta aplicación. Una vez lo hayas instalado, puedes hacer click en la base de datos de la que quieras una copia de seguridad. En el menú de arriba puedes hacer click sobre EXPORT. Entrarás en una página donde podrás escoger el tipo de archivo en que quieres guardar el backup (txt,pdf,csv,etc) y después si quieres exportar sólamente la estructura de la tabla, sólo los datos o los dos. También hay la posibilidad de comprimir el archivo, útil para grandes bases de datos. Finalmente, presionas sobre el botón EXPORT del formulario y te podrás descargar el creado con todos los datos de tus tablas.

Page 3: Backup MySQL

Hacer respaldos de Bases de Datos MySQL con MySQLDumpPosted on 24 octubre 2008 by Abenzoar Enrique Uicab Cuara| 2 comentarios

El comando mysqldump proporciona una manera conveniente para respaldar datos y estructuras de tablas. Hay que notar que mientras el comando mysqldump no es el método más eficiente para crear respaldos ,éste ofrece un medio conveniente para copiar datos y estructuras de tablas que puede ser usado para “poblar” otro servidor SQL, no importando si se trata, o no de un servidor MySQL.

El comando mysqldump puede ser usado para crear respaldos de todas las bases de datos, algunas bases de datos, sólo una de ellas, o incluso ciertas tablas de una base de datos dada. En esta sección se ilustra la sintaxis involucrada con varios posibles escenarios, seguida con unos pocos ejemplos.

Desde una ventana de comandos nos posicionamos en la carpeta “bin” de nuestro directorio mysql y podemos usar las siguientes instrucciones:

Usando el comando mysqldump para respaldar sólo una base de datos:

bin> mysqldump [opciones] nombre_base_datos

Usando el comando mysqldump para respaldar varias tablas de una base de datos:

bin> mysqldump [opciones] nombre_base_datos tabla1 tabla2. . . tablaN

Usando mysqldump para respaldar varias bases de datos:

bin> mysqldump [opciones] --databases [opciones] nombre_bd1 nombre_bd2...

Usando mysqldump para respaldar todas las bases de datos:

bin> mysqldump [opciones] --all-databases [opciones]

Las opciones pueden ser vistas ejecutando el siguiente comando:

bin> mysqldump --help

- Ejemplos -

Respaldar ambos, la estructura y los datos encontrados dentro de la base de datos widgets puede ser realizado como sigue:

bin> mysqldump -u root -p --opt widgets

Alternativamente, quizás se requiera respaldar únicamente los datos, esto es logrado al incluir la opción –no-create-info, lo que significa que no se creen los datos relativos a la creación de las tablas.

bin>mysqldump -u root -p --no-create-info widgets

Page 4: Backup MySQL

Otra variación es respaldar únicamente la estructura de las tablas, esto es logrado al incluir la opción –no-data, que significa la no creación de los datos de las tablas.

bin>mysqldump -u root -p --no-data widgets

Si se está planeando usar mysqldump con el fin de respaldar datos para que puedan ser movidos a otro servidor MySQL, es recomendado que se use la opción “–opt”. Esto nos dará un respaldo optimizado de los datos que tendrá como resultado un tiempo más rápido de lectura cuando se quieran cargar los datos en otro servidor MySQL.

Mientras mysqldump proporciona un método conveniente para respaldar datos, hay un segundo método, el cuales más rápido, y más eficiente. Esto se describe en la siguiente sección.

Visto de una forma msencilla como ejemplos tenemos los siguiente:

Para copiar estructura y datos:c:\mysql\bin>mysqldump -u root -p –opt nombreDeMiDBOrigenaRespaldar > nombreRespaldo.sql

Para copiar solo datos:c:\mysql\bin>mysqldump -u root -p –no-create-info nombreDeMiDBOrigenaRespaldar > nombreRespaldo.sql

Para copiar solo estructura:c:\mysql\bin>mysqldump -u root -p –no-data nombreDeMiDBOrigenaRespaldar > nombre_respaldo.sql

Y para recuperar una copia de seguridad:

C:\mysql\bin>mysql -u root -p contraseña dbDondeSeVaArespaldar < respaldoACargar.sql

Page 5: Backup MySQL

Tutorial MysqlMySQL es un sistema de gestión de base de datos relacional, multihilo y multiusuario con más de seis millones de instalaciones.[1] MySQL AB desarrolla MySQL como software libre en un esquema de licenciamiento dual.

 

  Backup MySQL con mysqldumpEl comando mysqldump del sistema gestor de base de datos MySQL sirve para hacer copias de seguridad. Lo explicamos con detenimiento y vemos sus opciones más importantes.

Este comando permite hacer la copia de seguridad de una o múltiples bases de datos. Además permite que estas copias de seguridad se puedan restaurar en distintos tipos de gestores de bases de datos, sin la necesidad de que se trate de un gestor de mysql. Esto lo consigue creando unos ficheros, que contienen todas las sentencias sql necesarias para poder restaurar la tabla, que incluyen desde la sentencia de creación de la tabla, hasta una sentencia insert por cada uno de los registros que forman parte de la misma.

El comando dispone de una amplia variedad de opciones que nos permitirá realizar la copia de la forma más conveniente para el propósito de la misma.Para poder restaurar la copia de seguridad, bastará con ejecutar todas las sentencias sql que se encuentran dentro del fichero, bien desde la línea de comandos de mysql, o desde la pantalla de creación de sentencias sql de cualquier entorno gráfico como puede ser el Mysql Control Center.

Las limitaciones de la restauración dependerán de las opciones que se han especificado a la hora de hacer la copia de seguridad, por ejemplo, si se incluye la opción --add-drop-table al hacer la copia de seguridad, se podrán restauran tablas que existen actualmente en el servidor (borrándolas primero). Por lo que es necesario estudiar primero los procedimientos que se utilizarán tanto en la copia como en la restauración, para que todo salga correcto!

Algunas de las opciónes que tiene son:

--add-locks Añade LOCK TABLES antes, y UNLOCK TABLE despues de la copia de cada tabla.

Page 6: Backup MySQL

--add-drop-table Añade un drop table antes de cada sentencia create

-A, --all-databases Copia todas las bases de datos. Es lo mismo que utilizar --databases seleccionando todas.

-a, --all Incluye todas las opciones de creación específicas de Mysql.

--allow-keywords Permite la creación de nombes de columnas que son palabras clave, esto se realiza poniendo de prefijo a cada nombre de columna, el nombre de la tabla

-c, --complete-insert Utiliza inserts incluyendo los nombres de columna en cada sentencia (incrementa bastante el tamaño del fichero)

-C, --compress Comprime la información entre el cliente y el servidor, si ambos soportan compresión.

-B, --databases Para copiar varias bases de datos. En este caso, no se especifican tablas. El nombre de los argumentos se refiere a los nombres de las bases de datos. Se incluirá USE db_name en la salida antes de cada base de datos.

--delayed Inserta las filas con el comando INSERT DELAYED.

-e, --extended-insert Utiliza la sintaxis de INSERT multilinea. (Proporciona sentencias de insert más compactas y rápidas.)

-#, --debug[=option_string] Utilización de la traza del programa (para depuración).

--help Muestra mensaje de ayuda y termina.

--fields-terminated-by=... --fields-enclosed-by=... --fields-optionally-enclosed-by=... --fields-escaped-by=... --lines-terminated-by=... Estas opciones se utilizan con la opción -T y tienen el mismo significado que la correspondiente cláusula LOAD DATA INFILE.

-F, --flush-logs Escribe en disco todos los logs antes de comenzar con la copia

-f, --force, Continúa aunque se produzca un error de SQL durante la copia.

-h, --host=.. Copia los datos del servidor de Mysql especificado. El servidor por defecto es localhost.

-l, --lock-tables. Bloquea todas las tablas antes de comenzar con la copia. Las tablas se

Page 7: Backup MySQL

bloquean con READ LOCAL para permitir inserts concurrentes en caso de las tablas MyISAM. Cuando se realiza la copia de múltiples bases de datos, --lock-tables bloqueará la copia de cada base de datos por separado. De forma que esta opción no garantiza que las tables serán consistentes lógicamente entre distintas bases de datos. Las tablas en diferentes bases de datos se copiarán en estados completamente distintos.

-K, --disable-keys Se inluirá en la salida /*!40000 ALTER TABLE tb_name DISABLE KEYS */; y /*!40000 ALTER TABLE tb_name ENABLE KEYS */; Esto hará que carga de datos en un servidor MySQL 4.0 se realice más rápido debido a que los índices se crearán después de que todos los datos hayan sido restaurados.

-n, --no-create-db No se incluirá en la salida CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; Esta línea se incluye si la opción --databases o --all-databases fue seleccionada.

-t, --no-create-info No incluirá la información de creación de la tabla (sentencia CREATE TABLE).

-d, --no-data No incluirá ninguna información sobre los registros de la tabla. Esta opción sirve para crear una copia de sólo la estructura de la base de datos.

--opt Lo mismo que --quick --add-drop-table --add-locks --extended-insert --lock-tables. Esta opción le debería permitir realizar la copia de seguridad de la base de datos de la forma más rápida y efectiva.

-pyour_pass, --password[=your_pass] Contraseña utilizada cuando se conecta con el servidor. Si no se especifica, `=your_pass', mysqldump preguntará la contraseña.

-P, --port=... Puerto utilizado para las conexiones TCP/IP

--protocol=(TCP | SOCKET | PIPE | MEMORY) Especifica el protocolo de conexión que se utilizará.

-q, --quick No almacena en el buffer la sentencia, la copia directamente a la salida. Utiliza mysql_use_result() para realizarlo.

-Q, --quote-names Entrecomilla las tablas y nombres de columna con los caracteres ``'.

-r, --result-file=... Redirecciona la salida al fichero especificado. Esta opción se debería utilizar en MSDOS, porque previene la conversión de nueva línea `\n' en nueva línea y retorno de carro`\n\r'.

--single-transaction Utiliza el comando BEGIN antes de realizar la copia desde el servidor. Es muy útil con las tables InnoDB y el nivel de transacción READ_COMMITTED, porque en este modo realizará la copia de seguridad en un estado consistente sin necesidad de bloquear las aplicaciones.

Page 8: Backup MySQL

Consultar el manual para más detalles.

-S /path/to/socket, --socket=/path/to/socket El fichero de sockets que se especifica al conectar al localhost (que es el host predeterminado).

--tables sobreescribe la opción --databases (-B).

-T, --tab=path-to-some-directory Crea un fichero table_name.sql, que contiene la sentencia de creación de SQL, y un fichero table_name.txt, que contiene los datos de cada tabla. El formato del fichero `.txt' se realiza de acuerdo con las opciones --fields-xxx y --lines--xxx options. Nota: Esta opción sólo funciona si el comando mysqldump se ejecuta en la misma másquina que el demonio mysqld, el usuario deberá tener permisos para crear y escribir el fichero en la ubicación especificada

-u nombre_usuario, --user=nombre_usuarioEl nombre de usuario que se utilizará cuando se conecte con el servidor, el valor predeterminado es el del usuario actual.

-v, --verbose Va mostrando información sobre las acciones que se van realizando (más lento)

-w, --where='cláusula where' Sirve para realizar la copia de determinados registros

-X, --xml Realiza la copia de seguridad en un documento xml

-x, --first-slave Bloquea todas las tablas de todas las bases de datos

Ejemplos de comandos mysqldump:

Para realizar la copia se seguridad de la base de datos mibase al fichero copia_seguridad.sql

mysqldump --opt mibase > copia_seguridad.sql

Otro ejemplo más complejo de comando mysqldump para hacer el backup de una base de datos es el siguiente:

mysqldump --opt --password=miclave --user=miuser mibasededatos > archivo.sql

En este último caso estamos indicando un nombre de usuario y una clave para acceder a la base de datos sobre la que se está haciendo el backup: mibasededatos. Las sentencias SQL para reconstruir esa base de datos se volcarán en el fichero archivo.sql.

Restaurar la base de datos

Si deseamos recuperar la información de un fichero para restaurar una copia de seguridad de la base de datos lo haremos con el comando mysql. Utilizaremos una sintaxis como esta:

mysql mibase < archivo.sql

Page 9: Backup MySQL

En este ejemplo se restauraría la base de de datos mibase con el backup almacenado en el fichero archivo.sql.

Otro ejemplo más complejo de comando para restaurar una base de datos es el siguiente:

mysql --password=miclave --user=miuser mibase < archivo.sql

Es el mismo ejemplo que el anterior, pero indicando un nombre de usuario y una clave con las que acceder a la base de datos mibase.

5.8.1. Copias de seguridad de bases de datos

Debido a que las tablas de MySQL se almacenan como archivos, es fácil hacer una copia de seguridad. Para hacer una copia consistente haga un LOCK TABLES en las tablas relevantes, seguido de un FLUSH TABLES para las tablas. Consulte Sección   13.4.5, “Sintaxis de LOCK TABLES y UNLOCK TABLES ” y Sección   13.5.5.2, “Sintaxis de FLUSH ” . Solo necesita obtener un bloqueo de lectura; esto permite a otros clientes continuar consultando la tabla mientras usted está haciendo una copia de los archivos del directorio de la base de datos. La sentencia FLUSH TABLES es necesaria para asegurarse de que todas las páginas de índice activas se escriben al disco antes de que comience la copia.

Si quiere hacer una copia de una tabla a un nivel SQL, puede utilizar SELECT INTO ... OUTFILE o BACKUP TABLE. Para SELECT INTO ... OUTFILE, el archivo de salida no debe existir previamente. Esto también es cierto para BACKUP TABLE, ya que permitir que archivos externos sean sobreescritos sería un riesgo de seguridad. Consulte Sección   13.2.7, “Sintaxis de SELECT ” y Sección   13.5.2.2, “Sintaxis de BACKUP TABLE ” .

Otra técnica para hacer copias de seguridad de una base de datos es utilizar el programa mysqldump o el script mysqlhotcopy script. Consulte See Sección   8.7, “El programa de copia de seguridad de base de datos mysqldump ” y Sección   8.8, “El programa de copias de seguridad de base de datos mysqlhotcopy ” .

1. Hacer una copia completa de su base de datos: 2. shell> mysqldump --tab=/path/to/some/dir --opt db_name

O:

shell> mysqlhotcopy db_name /path/to/some/dir

Page 10: Backup MySQL

También puede simplemente copiar todos los archivos de tablas (*.frm, *.MYD, y *.MYI) siempre que el servidor no esté actualizando nada. El script mysqlhotcopy utiliza este método. (Pero tenga en cuenta que estos métodos no funcionan si su base de datos contiene tablas InnoDB. InnoDB no almacena los contenidos de las tablas en directorios de base de datos, y mysqlhotcopy funciona solo para tablas MyISAM e ISAM.)

3. Pare mysqld si se está ejecutando, y después reinicielo con la opción --log-bin[=file_name]. Consulte Sección   5.10.3, “El registro binario (Binary Log)” . Los archivos binarios de registro le dan la información que necesita para replicar los cambios que se han producido en la base de datos tras el punto en que usted ejecutó mysqldump.

Para las tablas InnoDB es posible realizar una copia de seguridad en línea que no requiere bloqueos en las tablas; consulte Sección   8.7, “El programa de copia de seguridad de base de datos mysqldump ”

MySQL tiene soporte para copias de seguridad incrementales: Usted necesita iniciar el servidor con la opción --log-bin para activar el registro binario; consulte Sección   5.10.3, “El registro binario (Binary Log)”. En el momento en que usted quiera realizar una copia de seguridad incremental (que contenga todos los cambios que han ocurrido desde la última copia de seguridad, completa o incremental), usted debe rotar el registro binario utilizando FLUSH LOGS. Hecho esto, necesita copiar a la localización de seguridad todos los registros binarios que daten desde el momento de la última copia de seguridad hasta el último. Estos logs binarios son la copia de seguridad incremental; cuando necesite restaurar la copia, los puede aplicar tal como se explica más adelante. La próxima vez que haga una copia de seguridad compelta, también debe rotar el registro binario haciendo FLUSH LOGS, mysqldump --flush-logs, o mysqlhotcopy --flushlogs. Consulte Sección   8.7, “El programa de copia de seguridad de base de datos mysqldump ” y Sección   8.8, “El programa de copias de seguridad de base de datos mysqlhotcopy ” .

Si su servidor MySQL es un servidor esclavo de replicación, entonces independientemente del método de copia de seguridad que elija, también debe copiar los archivos master.info y relay-log.info cuando copie los datos de su esclavo. Estos archivos son siempre necesarios para continuar la replicación después de una restauración de los datos del esclavo. Si su esclavo está replicando comandos LOAD DATA INFILE, debería también copiar cualquier archivo SQL_LOAD-* que pueda existir en el directorio especificado por la opción --slave-load-tmpdir. (Esta localización es por defecto el valor de la variable tmpdir, si no se especifica.) El esclavo necesita estos archivos para reiniciar la replicación de cualquier operación LOAD DATA INFILE interrumpida.

Si tiene que restaurar tablas MyISAM, intente recuperarlas utilizando REPAIR TABLE o myisamchk -r primero. Esto debería funcionar en el 99.9% de los casos. Si myisamchk falla, intente el siguiente procedimiento. Tenga en cuenta que solo funciona si tiene activado el registro binario iniciando el servidor MySQL con la opción --log-bin; consulte Sección   5.10.3, “El registro binario (Binary Log)” .

1. Restaure la copia de seguridad original de mysqldump, o la copia de seguridad binaria.

2. Ejecute el siguiente comando para ejecutar de nuevo las actualizaciones de los registros binarios:

3. shell> mysqlbinlog hostname-bin.[0-9]* | mysql

Page 11: Backup MySQL

En algunos casos, quizá quiera reejecutar solo ciertos registros binarios, desde ciertas posiciones (lo usual es querer reejecutar todos los registros binarios desde el punto de restauración, excepto, posiblemente, algunas sentencias incorrectas). Consulte Sección   8.5, “La utilidad mysqlbinlog para registros binarios” para más información sobre la utilidad mysqlbinlog y como utilizarla.

También puede hacer copias de seguridad selectivas de archivos individuales:

Para volcar la tabla, utilice SELECT * INTO OUTFILE 'file_name' FROM tbl_name.

Para recargar la tabla, restaurela con LOAD DATA INFILE 'file_name' REPLACE ... Para evitar registros duplicados, la tabla tiene que tener un índice PRIMARY KEY o UNIQUE. La palabra clave REPLACE hace que los viejos registros sean reemplazados con los nuevos cuando un nuevo registro tiene la misma clave que uno antiguo.

Si tiene problema de rendimientos con su servidor mientras realiza copias de seguridad, una estrategia que puede ayudarle es crear replicación y hacer las copias de seguridad en el esclavo en vez de en el maestro. Consulte Sección   6.1, “Introducción a la replicación” .

Si está utilizando un sistema de ficheros Veritas, puede hacer una copia de seguridad así:

1. Desde un programa cliente, ejecute FLUSH TABLES WITH READ LOCK. 2. Desde otra línea de comandos, ejecute mount vxfs snapshot.

3. Desde el primer cliente, ejecute UNLOCK TABLES.

4. Copie los archivos de la captura (snapshot).

5. Desmonte la captura.

Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a [email protected].

Copia de respaldo y restauración de bases de datos MysqlEn este artículo veremos la manera más sencilla de hacer una copia de respaldo y luego restaurar una base de datos Mysql.

Page 12: Backup MySQL

Copia de respaldo

Para hacer una copia de respaldo de una base de datos se recomienda crear un dump.

Para hacer un dump de todas las bases de datos es necesario ejecutar el comando:

mysqldump --user=****** --password=****** -A > /Ruta/Hacia/archivo_dump.SQL

Para hacer un dump de sólo algunas bases de datos es necesario ejecutar el comando:

mysqldump --user=****** --password=****** db_1 db_2 db_n> /Ruta/Hacia/archivo_dump.SQL

Para hacer un dump de todas las tablas de una base de datos es necesario ejecutar el comando:

mysqldump --user=****** --password=****** db > /Ruta/Hacia/archivo_dump.SQL

Para hacer un dump de sólo ciertas tablas de una base de datos es necesario ejecutar el comando:

mysqldump --user=****** --password=****** db --tablas tab1 tab2 > /Ruta/Hacia/archivo_dump.SQL

Para cada uno de estos comando es necesario indicar un usuario (user) y la contraseña (password) con derechos de administrador en la base de datos.

Restauración

Para restaurar un dump tan sólo hay que ejecutar el comando:

mysql --user=****** --password=****** db_nom < /Ruta/Hacia/archivo_dump.SQL

PD: El artículo original fue escrito por wjaouadi, contribuidor de CommentCaMarche

Seguir leyendo

Page 13: Backup MySQL

Backup MySQL mediante Sentencias SqlCómo realizar un backup de las tablas de una base de datos y su recuperación a partir de sentencias SQL.

Veremos cómo realizar una copia de seguridad de la tabla y su recuperación a partir de sentencias SQL.

Backup de los datos

Este comando nos permite hacer una copia de los ficheros de las tablas de las cuales queremos hacer un backup, actualmente solo funciona con tablas de tipo MyIsam, y copia tanto los ficheros .frm que contienen la definición de la tabla, como los ficheros .myd, que contienen los datos.

Antes de ejecutarse, guarda todos los cambios que pudiera haber en memoria de la tabla, de forma que quede de una manera consistente. Asimismo, durante la ejecución del comando, bloquea la tabla sobre la que se está haciendo la copia de seguridad para que los datos sean consistentes en la tabla. Hay que tener en cuenta que este comando va bloqueando una a una las tablas, según va haciendo la copia de seguridad. Esto podría provocar inconsistencia de datos a nivel de base de datos, si es necesario hacer un backup de todas las tablas en un instante, en cuyo caso habría que utilizar el comando "lock tables" para bloquear todas las tablas antes de comenzar la copia de seguridad.

Al finalizar el comando devuelve una tabla, que contiene los campos:

Page 14: Backup MySQL

 

Columna

Valores

Table Nombre de la tabla

Op Siempre pone "backup"

Msg_type

Puede contener status, error, info o warning.

Msg_textMensaje descriptivo del resultado de la operación

Y en la que hay un registro por cada tabla que sobre la que se ha hecho backup.

Para realizar una copia de una tabla llamada pedidos, a la carpeta Backups:

BACKUP TABLE pedidos TO `/backups/`

Recuperación de datos

Para complementar la sentencia "Backup table", Mysql dispone de la sentencia "Restore table", que permite restaurar una tabla a partir de una copia de seguridad que se ha realizado con el comando "Backup Table".

Esta opción solo se puede utilizar si la tabla que se pretende restaurar no se encuentra en la base de datos, ya que en caso afirmativo mostrará un mensaje de error. Al igual que el comando de Backup, esta opción sólo esta disponible para las tablas de tipo MyIsam, y a partir de la versión 3.23.25.

Como el comando de backup, no copia los ficheros de índices, el comando para recuperar los datos, vuelve a reindexar todos los campos que contienen índices, creando los ficheros correspondientes. Al igual que el comando para hacer copias de seguridad, invocar al comando "Restore table" devuelve una tabla, con un registro por cada tabla sobre la que se ha hecho la base de datos, y que contiene la siguiente información:

Columna

Valores

Table Nombre de la tabla

Op Siempre pone "restore"

Msg_type

Puede contener status, error, info o warning.

Msg_text Mensaje descriptivo del resultado de la

Page 15: Backup MySQL

operación

Para restaurar una tabla llamada pedidos de la carpeta Backups a la base de datos:

RESTORE TABLE pedidos FROM `/backups/`  

 

Referencia: Para continuar aprendiendo métodos para realizar un backup de una base de datos MySQL tenemos el artículo Backup MySQL con mysqldump, que enseña a manejar el comando mysqldump para hacer una copia de seguridad de la base de datos entera.

Backup de los datos

Este comando nos permite hacer una copia de los ficheros de las tablas de las cuales queremos

hacer un backup, actualmente solo funciona con tablas de tipo MyIsam, y copia tanto los

ficheros .frm que contienen la definición de la tabla, como los ficheros .myd, que contienen los

datos.

Antes de ejecutarse, guarda todos los cambios que pudiera haber en memoria de la tabla, de

forma que quede de una manera consistente. Asimismo, durante la ejecución del comando,

bloquea la tabla sobre la que se está haciendo la copia de seguridad para que los datos sean

consistentes en la tabla. Hay que tener en cuenta que este comando va bloqueando una a una

las tablas, según va haciendo la copia de seguridad. Esto podría provocar inconsistencia de

datos a nivel de base de datos, si es necesario hacer un backup de todas las tablas en un

instante, en cuyo caso habría que utilizar el comando "lock tables" para bloquear todas las

tablas antes de comenzar la copia de seguridad.

Al finalizar el comando devuelve una tabla, que contiene los campos:

Columna ValoresTable Nombre de la tabla

Op Siempre pone "backup"Msg_type Puede contener status, error, info o warning.Msg_text Mensaje descriptivo del resultado de la operación

Page 16: Backup MySQL

Y en la que hay un registro por cada tabla que sobre la que se ha hecho backup.

Para realizar una copia de una tabla llamada pedidos, a la carpeta Backups:

BACKUP TABLE pedidos TO `/backups/`

Recuperación de datos

Para complementar la sentencia "Backup table", Mysql dispone de la sentencia "Restore

table", que permite restaurar una tabla a partir de una copia de seguridad que se ha realizado

con el comando "Backup Table".

Esta opción solo se puede utilizar si la tabla que se pretende restaurar no se encuentra en la

base de datos, ya que en caso afirmativo mostrará un mensaje de error. Al igual que el

comando de Backup, esta opción sólo esta disponible para las tablas de tipo MyIsam, y a partir

de la versión 3.23.25.

Como el comando de backup, no copia los ficheros de índices, el comando para recuperar los

datos, vuelve a reindexar todos los campos que contienen índices, creando los ficheros

correspondientes. Al igual que el comando para hacer copias de seguridad, invocar al comando

"Restore table" devuelve una tabla, con un registro por cada tabla sobre la que se ha hecho la

base de datos, y que contiene la siguiente información:

Columna ValoresTable Nombre de la tabla

Op Siempre pone "restore"Msg_type Puede contener status, error, info o warning.Msg_text Mensaje descriptivo del resultado de la operación

Para restaurar una tabla llamada pedidos de la carpeta Backups a la base de datos:

RESTORE TABLE pedidos FROM `/backups/`

El comando mysqldump del sistema gestor de base de datos MySQL

sirve para hacer copias de seguridad. Lo explicamos con

detenimiento y vemos sus opciones más importantes.

Por Carlos Luis Cuenca

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

Page 17: Backup MySQL

Este comando permite hacer la copia de seguridad de una o múltiples bases de datos.

Además permite que estas copias de seguridad se puedan restaurar en distintos tipos de

gestores de bases de datos, sin la necesidad de que se trate de un gestor de mysql. Esto lo

consigue creando unos ficheros, que contienen todas las sentencias sql necesarias para

poder restaurar la tabla, que incluyen desde la sentencia de creación de la tabla, hasta una

sentencia insert por cada uno de los registros que forman parte de la misma.

El comando dispone de una amplia variedad de opciones que nos permitirá realizar la copia

de la forma más conveniente para el propósito de la misma.

Para poder restaurar la copia de seguridad, bastará con ejecutar todas las sentencias sql que

se encuentran dentro del fichero, bien desde la línea de comandos de mysql, o desde la

pantalla de creación de sentencias sql de cualquier entorno gráfico como puede ser el Mysql

Control Center.

Las limitaciones de la restauración dependerán de las opciones que se han especificado a la

hora de hacer la copia de seguridad, por ejemplo, si se incluye la opción --add-drop-table al

hacer la copia de seguridad, se podrán restauran tablas que existen actualmente en el

servidor (borrándolas primero). Por lo que es necesario estudiar primero los procedimientos

que se utilizarán tanto en la copia como en la restauración, para que todo salga correcto!

Algunas de las opciónes que tiene son:

--add-locks

Añade LOCK TABLES antes, y UNLOCK TABLE despues de la copia de cada tabla.

--add-drop-table

Añade un drop table antes de cada sentencia create

-A, --all-databases

Copia todas las bases de datos. Es lo mismo que utilizar --databases seleccionando todas.

-a, --all

Incluye todas las opciones de creación específicas de Mysql.

--allow-keywords

Permite la creación de nombes de columnas que son palabras clave, esto se realiza poniendo

de prefijo a cada nombre de columna, el nombre de la tabla

Page 18: Backup MySQL

-c, --complete-insert

Utiliza inserts incluyendo los nombres de columna en cada sentencia (incrementa bastante el

tamaño del fichero)

-C, --compress

Comprime la información entre el cliente y el servidor, si ambos soportan compresión.

-B, --databases

Para copiar varias bases de datos. En este caso, no se especifican tablas. El nombre de los

argumentos se refiere a los nombres de las bases de datos. Se incluirá USE db_name en la

salida antes de cada base de datos.

--delayed

Inserta las filas con el comando INSERT DELAYED.

-e, --extended-insert

Utiliza la sintaxis de INSERT multilinea. (Proporciona sentencias de insert más compactas y

rápidas.)

-#, --debug[=option_string]

Utilización de la traza del programa (para depuración).

--help

Muestra mensaje de ayuda y termina.

--fields-terminated-by=...

--fields-enclosed-by=...

--fields-optionally-enclosed-by=...

--fields-escaped-by=...

--lines-terminated-by=...

Estas opciones se utilizan con la opción -T y tienen el mismo significado que la

correspondiente cláusula LOAD DATA INFILE.

-F, --flush-logs

Escribe en disco todos los logs antes de comenzar con la copia

-f, --force,

Continúa aunque se produzca un error de SQL durante la copia.

-h, --host=..

Copia los datos del servidor de Mysql especificado. El servidor por defecto es localhost.

Page 19: Backup MySQL

-l, --lock-tables.

Bloquea todas las tablas antes de comenzar con la copia. Las tablas se bloquean con READ

LOCAL para permitir inserts concurrentes en caso de las tablas MyISAM. Cuando se realiza la

copia de múltiples bases de datos, --lock-tables bloqueará la copia de cada base de datos por

separado. De forma que esta opción no garantiza que las tables serán consistentes

lógicamente entre distintas bases de datos. Las tablas en diferentes bases de datos se

copiarán en estados completamente distintos.

-K, --disable-keys

Se inluirá en la salida /*!40000 ALTER TABLE tb_name DISABLE KEYS */; y /*!40000 ALTER

TABLE tb_name ENABLE KEYS */; Esto hará que carga de datos en un servidor MySQL 4.0 se

realice más rápido debido a que los índices se crearán después de que todos los datos hayan

sido restaurados.

-n, --no-create-db

No se incluirá en la salida CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; Esta línea

se incluye si la opción --databases o --all-databases fue seleccionada.

-t, --no-create-info

No incluirá la información de creación de la tabla (sentencia CREATE TABLE).

-d, --no-data

No incluirá ninguna información sobre los registros de la tabla. Esta opción sirve para crear

una copia de sólo la estructura de la base de datos.

--opt

Lo mismo que --quick --add-drop-table --add-locks --extended-insert --lock-tables. Esta opción

le debería permitir realizar la copia de seguridad de la base de datos de la forma más rápida

y efectiva.

-pyour_pass, --password[=your_pass]

Contraseña utilizada cuando se conecta con el servidor. Si no se especifica, `=your_pass',

mysqldump preguntará la contraseña.

-P, --port=...

Puerto utilizado para las conexiones TCP/IP

--protocol=(TCP | SOCKET | PIPE | MEMORY)

Especifica el protocolo de conexión que se utilizará.

Page 20: Backup MySQL

-q, --quick

No almacena en el buffer la sentencia, la copia directamente a la salida. Utiliza

mysql_use_result() para realizarlo.

-Q, --quote-names

Entrecomilla las tablas y nombres de columna con los caracteres ``'.

-r, --result-file=...

Redirecciona la salida al fichero especificado. Esta opción se debería utilizar en MSDOS,

porque previene la conversión de nueva línea `\n' en nueva línea y retorno de carro`\n\r'.

--single-transaction

Utiliza el comando BEGIN antes de realizar la copia desde el servidor. Es muy útil con las

tables InnoDB y el nivel de transacción READ_COMMITTED, porque en este modo realizará la

copia de seguridad en un estado consistente sin necesidad de bloquear las aplicaciones.

Consultar el manual para más detalles.

-S /path/to/socket, --socket=/path/to/socket

El fichero de sockets que se especifica al conectar al localhost (que es el host

predeterminado).

--tables

sobreescribe la opción --databases (-B).

-T, --tab=path-to-some-directory

Crea un fichero table_name.sql, que contiene la sentencia de creación de SQL, y un fichero

table_name.txt, que contiene los datos de cada tabla. El formato del fichero `.txt' se realiza

de acuerdo con las opciones --fields-xxx y --lines--xxx options. Nota: Esta opción sólo

funciona si el comando mysqldump se ejecuta en la misma másquina que el demonio

mysqld, el usuario deberá tener permisos para crear y escribir el fichero en la ubicación

especificada

-u nombre_usuario, --user=nombre_usuario

El nombre de usuario que se utilizará cuando se conecte con el servidor, el valor

predeterminado es el del usuario actual.

-v, --verbose

Va mostrando información sobre las acciones que se van realizando (más lento)

Page 21: Backup MySQL

-w, --where='cláusula where'

Sirve para realizar la copia de determinados registros

-X, --xml

Realiza la copia de seguridad en un documento xml

-x, --first-slave

Bloquea todas las tablas de todas las bases de datos

Ejemplos de comandos mysqldump:

Para realizar la copia se seguridad de la base de datos mibase al fichero copia_seguridad.sql

mysqldump --opt mibase > copia_seguridad.sql

Otro ejemplo más complejo de comando mysqldump para hacer el backup de una base de

datos es el siguiente:

mysqldump --opt --password=miclave --user=miuser mibasededatos > archivo.sql

En este último caso estamos indicando un nombre de usuario y una clave para acceder a la

base de datos sobre la que se está haciendo el backup: mibasededatos. Las sentencias SQL

para reconstruir esa base de datos se volcarán en el fichero archivo.sql.

Restaurar la base de datos

Si deseamos recuperar la información de un fichero para restaurar una copia de seguridad de

la base de datos lo haremos con el comando mysql. Utilizaremos una sintaxis como esta:

mysql mibase < archivo.sql

En este ejemplo se restauraría la base de de datos mibase con el backup almacenado en el

fichero archivo.sql.

Otro ejemplo más complejo de comando para restaurar una base de datos es el siguiente:

mysql --password=miclave --user=miuser mibase < archivo.sql

Es el mismo ejemplo que el anterior, pero indicando un nombre de usuario y una clave con

las que acceder a la base de datos mibase.

Page 22: Backup MySQL