backup mysql
Post on 29-Jun-2015
1.023 Views
Preview:
TRANSCRIPT
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:
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.
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
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
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.
--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
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.
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
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
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
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 mysql-es@vespito.com.
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.
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
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:
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
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
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.
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
-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 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.
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)
-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.
top related