it-swarm-es.com

¿Debo usar mysqldump o mysqlhotcopy para las copias de seguridad de la base de datos MySQL?

Tengo un WordPress blog que se ejecuta en una base de datos MySQL que quiero respaldar regularmente. ¿Sería mejor usar el programa mysqldump o el script mysqlhotcopy para hacer copias de seguridad? ¿Cuáles son los pros y los contras de cada uno? ¿Hay alguna otra opción que deba considerar?

13
Matthew Shanley

Puedo decirle que actualmente uso mysqldump para mantener una copia de seguridad de mi base de datos. Hago esto porque mi objetivo es mantener copias de seguridad semanales para que, en caso de que alguien elimine sus páginas web, pueda recuperarlas como máximo hace una semana.

Lo bueno de esto es que es un archivo de texto básico, por lo que puedo importarlo a cualquier computadora con MySQL, cargarlo y buscar los datos faltantes. Nota: para obtener lo que quería, el comando que estoy usando en mi script es este:

mysqldump --databases databaseName > /file/path

El --databases es lo que hace que mysqldump descargue los encabezados CREATE DATABASE IF NOT EXIST para poder importarlo donde quiera.

Si bien este método funciona para mí, estoy seguro de que existen mejores métodos para otros fines. También puedo decir que, como para cualquier solución de respaldo, debe almacenarla al menos en otra computadora, y preferiblemente fuera del sitio (nuestro en la nube) si puede.

5
Mike

Consideraría usar un complemento de WordPress llamado "Copia de seguridad de la base de datos de WordPress (WP-DB-Backup)" que también aparece en el Wordpress Copia de seguridad de la base de datos guía . Este complemento puede hacer una copia de seguridad de la base de datos en un horario y enviarla por correo electrónico (suponiendo que sea una pequeña base de datos). También puede respaldarlo localmente. Puede excluir comentarios no deseados y revisiones para hacer que la base de datos sea más pequeña

Menos control pero más fácil de implementar.

Los volcados de MySQL le dan el mayor control . Su servicio de alojamiento también puede ser un factor limitante. Algunos hosts no le dan acceso para ejecutar trabajos cron o ejecutar el comando mysqldump.

5
citadelgrad

SUGERENCIA # 1

Si realiza copias de seguridad de la instancia de MySQL, lo mejor es configurar MySQL Replicaton para que imponer la carga del servidor o aumentar la E/S del disco no afecte su base de datos de producción de ninguna manera.

Una vez que configure MySQL Replication, puede crear un script para mysqldump de diferentes maneras ( Consulte mi publicación en el DBA StackExchange para la variedad de técnicas ), siempre que ejecute esos mysqldumps en un Slave.

SUGERENCIA # 2

Si no puede configurar otro servidor para MySQL Replication y todos sus datos son InnoDB, deberá realizar un mysqldump en un punto en el tiempo. Esto se hace usando la opción --single-transaction con mysqldump. Por lo tanto, si ejecutó un mysqldump a partir de la medianoche y la copia de seguridad finalizó a las 12:15 a.m., la salida de mysqldump cuando se restauró refleja los datos a partir de las 12:00 a.m.

SUGERENCIA # 3

Otro programa disponible para MySQL Backups es XtraBackup de Percona.

XtraBackup es una herramienta integral que se comporta como rsync pero tiene un propósito dirigido en la vida. Puede comenzar copiando todos los datos y espacios de tablas de InnoDB. Tiene la capacidad de crear puntos de control internamente y realizar una recuperación de bloqueo InnoDB en el lugar para ayudar a obtener una copia de seguridad perfecta en un punto en el tiempo. XtraBackup también tiene una característica adicional que permite la creación de copias de seguridad incrementales. Otra característica adicional es la creación de archivos de registro de InnoDB, también creados por una recuperación de fallos en el lugar. También hay un software de envoltura para proporcionar copias congeladas de tablas MyISAM también.

Realiza una parte posterior de la instancia de MySQL, pero con una clara diferencia. El punto en el tiempo de la copia de seguridad se basa en cuándo se completó la copia de seguridad en lugar de cuándo comenzó. Por lo tanto, si ejecutó XtraBackup a partir de la medianoche y la copia de seguridad finalizó a las 12:15 a.m., la salida de mysqldump cuando se restauró refleja los datos a partir de las 12:15 a.m.

3
RolandoMySQLDBA

Depende de su motor de almacenamiento para sus mesas. Funciona solo para las tablas ARCHIVE y MyISAM de acuerdo con esta página del manual de MySQL y debe ejecutarse en la misma máquina (es decir, sin usar socket local o TCP/IP)

MySQL también dice

Si está haciendo una copia de seguridad en el servidor y todas sus tablas son tablas MyISAM, considere usar mysqlhotcopy en su lugar porque puede realizar copias de seguridad y restauraciones más rápidas.

2
Aiden Bell

Recomiendo usar uno de los muchos scripts de copia de seguridad mySQL preexistentes para evitar la molestia de hacerlo bien.

Uso "automysqlbackup", que es un script de Shell de código abierto que se puede configurar como un trabajo cron en el servidor. Cubre casi todas las situaciones de copia de seguridad concebibles: http://sourceforge.net/projects/automysqlbackup/ . Me ha funcionado perfectamente durante varios años, muy recomendable.

1
Mark Hatton

mysqlhotcopy es un script de Perl alrededor del '05. Entonces agrega dependencias, para Perl y varios Perl. Yo transmitiría este.

mysqldump es un programa en C que se distribuye con MySQL y se mantiene activamente. Si agrega la opción -x, bloquea las tablas para que esté dorado.

Personalmente tengo este script en cron (querrás eliminar esos `escapes si quieres ejecutarlo a mano) y funciona de maravilla para mí, haciendo una copia de seguridad de cada una de mis bases de datos para un archivo local, así como un volcado completo de todas las bases de datos.

Y si tiene más de una base de datos allí, también querrá volcar las subvenciones para ellos. Maatkit te ayudará allí, y solo mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sql para tener tus tablas de subvenciones respaldadas y listas para importar nuevamente.

1
intlect

También sé que varias herramientas de administración del servidor, como Interworx y Ensim, usan mysqldump para hacer una copia de seguridad de las bases de datos y luego un simple comando mysql para restaurar. A partir de esto, supongo que esta es una de las mejores maneras.

0
Darryl Hein