8 votos

Forma óptima de hacer copias de seguridad de MySQL para bases de datos bastante grandes (MyISAM / InnoDB)

Actualmente tenemos una base de datos MySQL que ejecuta un par de sitios web de alto tráfico basados en Django, así como algunos sitios web de comercio electrónico de tamaño decente. Como resultado, tenemos una buena cantidad de bases de datos grandes que utilizan tablas InnoDB y MyISAM.

Desgraciadamente, recientemente nos hemos topado con un muro debido a la cantidad de tráfico, así que he configurado otro servidor maestro para ayudar a aliviar las lecturas/respaldos.

Ahora en este momento simplemente uso mysqldump con algunos argumentos y ha demostrado estar bien.. hasta ahora. Obviamente mysqldump es un método lento y rápido sin embargo creo que hemos superado su uso. Ahora necesito una buena alternativa y he estado buscando en la utilización de Maatkits mk-parallel-dump o una solución de instantáneas LVM.

Versión corta y sucinta:

  • Tengo una base de datos MySQL bastante grande que necesito respaldar
  • El método actual usando mysqldump es ineficiente y lento (causando problemas)
  • Buscando algo como mk-parallel-dump o LVM snapshots

Cualquier recomendación o idea sería apreciada - ya que tengo que rehacer cómo estamos haciendo las cosas prefiero que se haga correctamente / más eficiente :).

5voto

Warner Puntos 17528

He tenido buen éxito con la replicación de MySQL y los tarballs nocturnos. Para las db más pequeñas, la base de datos mysql, y el esquema utilizo una combinación de scripts diseñados para utilizar mysqlhotcopy y mysqldump.

InnoDB copia de seguridad en caliente es un gran producto comercial pero no estoy seguro de cómo maneja las tablas mixtas en la misma base de datos. La recomendación de pQd para XtraBackup puede ser buena para comparar con esto.

A otros les gustan las instantáneas LVM y yo diría que es definitivamente algo a considerar. En última instancia, una combinación de soluciones probablemente sería lo mejor.

También es notable que este es un tema viejo. Entre el MySQL de alto rendimiento libro, el Manual de MySQL y las preguntas anteriores de ServerFault esto se ha agotado de forma general. Ver:

0 votos

+1; con myisam nunca sabes si tienes una copia de seguridad lógicamente consistente [ tomada por lvm/mysqldump/desde lave ] o no. quizás si tu aplicación cambia sólo durante las horas de trabajo - puedes volcarla con seguridad por la noche, de lo contrario - nunca estás seguro y ningún método te ayudará.

0 votos

Creo que tienes razón en lo de mezclar soluciones. Como se menciona en la respuesta de pQd, probablemente tomaré las instantáneas LVM y buscaré la utilidad xtrabackup (dice que puede manejar tablas mixtas). He mirado en la copia de seguridad en caliente de InnoDB, sin embargo, siempre soy uno de los proyectos de código abierto. Gracias por las referencias, miré en 2 de pero las respuestas son bastante genéricas / no aborda los problemas que estoy teniendo / que se refieren a más "normal" y "mundano" bases de datos.

4voto

Steve Mould Puntos 141

xtrabackup - al menos para innodb.

0 votos

Interesante sin embargo me gustaría una solución más elegante para no preocuparme por mi mezcla de tablas InnoDB / MyISAM.

0 votos

Xtrabackup viene con script que puede ayudarte con la toma de copias de seguridad de myisams también, pero revisa mi comentario bajo el post de Warner

0 votos

Gracias, parece que podría ir en esta dirección y mezclar las instantáneas LVM para una buena medida. Dice que puede "manejar" las tablas MyISAM también a través de la "innobackupex" script. Supongo que le daré una vuelta a eso y veré qué pasa exactamente.

3voto

John Gardeniers Puntos 22554

La forma más común de resolver este problema es configurar otro servidor MySQL, que incluso puede estar en la misma máquina, y ejecutar la replicación maestro/esclavo. A continuación, puede realizar la copia de seguridad en el esclavo, con cero impacto en el maestro.

0voto

user5336 Puntos 756

En EC2 EBS, ahora mismo estoy usando xfs_freeze. Estoy estudiando la posibilidad de cambiar a xtrabackup en algún momento, pero cuando lo probé por primera vez, era muy, muy hambriento de CPU.

0 votos

Desafortunadamente, ahora mismo sólo uso XFS en servidores de medios, así que no es una opción. ¿Qué tipo de experiencia (aparte del hambre de la CPU, tal vez más detalles?) tuviste con xtrabackup? ¿Realizaste una copia de seguridad de tablas InnoDB puras o una mezcla?

0 votos

Mi mayor duda fue que consumió la CPU durante unos 30 minutos mientras se completaba (haciendo una copia de seguridad de una base de datos de unos 35 GB), haciendo que el servidor de bases de datos fuera sólo marginalmente funcional - ciertamente no es algo que vaya a ejecutar en un maestro de producción. De hecho, ya había convertido las pocas tablas MyISAM que me quedaban a InnoDB parcialmente para los fines de esto. Creo que probablemente estaría bien para ejecutar en un esclavo, siempre y cuando no causa la replicación a caer sustancialmente detrás.

0voto

Justin Alan Ryan Puntos 141

Si estás ejecutando la replicación de una base de datos que se comparte entre aplicaciones, parece que hay una pregunta obvia sobre si puedes mejorar el rendimiento de muchas cosas, incluyendo las copias de seguridad, dedicando servidores de bases de datos a las aplicaciones. Compartir es bueno, hasta que no lo es.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: