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

14

Tengo un blog de WordPress 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?

Matthew Shanley
fuente

Respuestas:

5

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 que faltan. Nota: para obtener lo que quería, el comando que estoy usando en mi script es este:

mysqldump --databases databaseName > /file/path

Esto --databaseses lo que hace que mysqldump descargue los CREATE DATABASE IF NOT EXISTencabezados para que pueda 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 con cualquier solución de respaldo, debe almacenarla al menos en otra computadora, y preferiblemente fuera del sitio (nuestro en la nube) si puede.

Miguel
fuente
5

Consideraría usar un complemento de WordPress llamado "Copia de seguridad de la base de datos de WordPress (WP-DB-Backup)", que también figura en la guía de copia de seguridad de la base de datos de Wordpress . 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.

citadelgrad
fuente
4

SUGERENCIA # 1

Si realiza copias de seguridad de la instancia de MySQL, lo mejor es configurar MySQL Replicaton para que imponer una 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 de mysqldump de diferentes maneras ( consulte mi publicación en el DBA StackExchange para conocer 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 --single-transactionopción 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 momento determinado. 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.

RolandoMySQLDBA
fuente
1

Recomiendo usar uno de los muchos scripts de copia de seguridad mySQL preexistentes para evitar el problema 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 respaldo imaginables: http://sourceforge.net/projects/automysqlbackup/ . Me ha funcionado perfectamente durante varios años, muy recomendable.

Mark Hatton
fuente
1

mysqlhotcopy es un script de Perl alrededor del '05. Por lo tanto, 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 en 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 lo ayudará allí, y solo mk-show-grants -uroot -pPASSWORD > mygrantsdatabase.sqltendrá sus tablas de subvenciones respaldadas y listas para importar nuevamente.

intlect
fuente
0

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.

Darryl Hein
fuente