Servidor MySQL de respaldo

13

¿Cuál es la mejor manera de hacer una copia de seguridad de un servidor MySQL? Me gustaría un método que no requiera derribar el servidor. Es necesaria una copia de seguridad en caliente de InnoDB , o puedo usar las herramientas de copia de seguridad proporcionadas en las herramientas de administrador de MySQL. ¿Qué ventajas ofrece una sobre la otra?

Kibbee
fuente

Respuestas:

12

Usamos mysqldump, que funciona mientras se ejecuta MySQL. Comenzamos a usar mysqldump porque era el más fácil de configurar cuando nuestras necesidades eran pequeñas, y parecía satisfacer esas necesidades. Nuestras bases de datos han crecido desde entonces, pero todavía no hemos superado mysqldump. Si le conviene dependerá del tamaño de sus bases de datos, su carga operativa habitual y probablemente muchas otras cosas.

TimB
fuente
mysqldump es genial. A diferencia de los volcados binarios de algunos otros RDMS, de manera predeterminada, los archivos que mysqldump genera son archivos de texto con comandos sql completos, principalmente declaraciones CREATE TABLE e INSERT para las filas. Como simples archivos de texto, pueden ser manipulados, comprimidos o encriptados fácilmente.
nedm
3
mysqldump se descompone cuando tiene grandes bases de datos y / o cuando confía en MyISAM. Tenemos algunas bases de datos 400G con muchos índices que deben reconstruirse al importar el volcado, por lo que una recuperación de la copia de seguridad lleva días en el árbol. La instantánea LVM ofrece un tiempo de recuperación mucho mejor cuando has superado mysqldump.
Nils-Anders Nøttseter
4

Eche un vistazo a xtrabackup de percona: es una alternativa interesante de código abierto a mysqlhotcopy para bases de datos innodb.

puedes leer más sobre esto aquí

pQd
fuente
3

Se puede usar mysqldump , pero no garantizará un conjunto de datos coherente , a menos que bloquee todas las tablas mientras dure el volcado. Esto pondrá la base de datos en modo de solo lectura , pero asegurará que el volcado sea consistente.

Puede bloquear las tablas con el comando:

FLUSH TABLES WITH READ LOCK;

Y cuando haya terminado, puede liberar el bloqueo con:

UNLOCK TABLES;
Brent
fuente
77
mysqldump: una transacción única garantizará una instantánea coherente
Dave Cheney
55
--single-transaction solo funciona cuando todas sus tablas son InnoDB. Las tablas MyISAM no admiten transacciones.
Nils-Anders Nøttseter
2

Configurar la replicación MySQL . Como beneficio adicional, obtiene un servidor para ejecutar trabajos de informes pesados ​​y mysqldump sin afectar su base de datos de producción principal.

Dave Cheney
fuente
Recuerde que la replicación puede retrasarse y, por lo tanto, no necesariamente una copia de seguridad de su maestro en un momento dado.
2
La replicación no es una copia de seguridad. Si accidentalmente elimina algo en el maestro, el esclavo también lo elimina. Sin embargo, el esclavo es bueno para usar mysqldump, porque no afectará a su servidor de producción (como mencionó Dave).
Martijn Heemels
0

La forma más fácil es simplemente usar el comando mysqldump .

WerkkreW
fuente
0

También hay una herramienta llamada mysqlhotcopy que miré de inmediato y pensé que era muy prometedora, aunque nunca la usé.

Brent
fuente