Actualmente tenemos una robusta base de datos MySQL que ejecuta un par de sitios web basados en Django de alto tráfico, así como algunos sitios web de comercio electrónico de tamaño decente. Como resultado, tenemos una gran cantidad de bases de datos grandes que usan tablas InnoDB y MyISAM.
Lamentablemente, recientemente hemos topado con un muro debido a la cantidad de tráfico, por lo que he configurado otro servidor maestro para ayudar a aliviar las lecturas / copias de seguridad.
Ahora, por el momento, simplemente uso mysqldump con algunos argumentos y se ha demostrado que está 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 utilizar la utilidad Maatkits mk-parallel-dump o una solución de instantánea LVM.
Sucinta versión corta:
- Tengo una base de datos MySQL bastante grande que necesito hacer una copia de seguridad
- El método actual que usa mysqldump es ineficiente y lento (provoca problemas)
- Buscando algo como mk-parallel-dump o instantáneas LVM
Cualquier recomendación o idea sería apreciada, ya que tengo que volver a hacer cómo estamos haciendo las cosas, prefiero hacerlo correctamente / lo más eficiente :).
fuente
xtrabackup : al menos para innodb.
fuente
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. Luego puede realizar la copia de seguridad en el esclavo, con cero impacto en el maestro.
fuente
En EC2 EBS, ahora estoy usando xfs_freeze. Estoy buscando posiblemente cambiarme a xtrabackup en algún momento, pero cuando le hice una primera prueba, tenía mucha, mucha CPU.
fuente
Si está ejecutando la replicación de una base de datos que se comparte entre aplicaciones, parece que hay una pregunta obvia sobre si puede mejorar el rendimiento de muchas cosas, incluidas las copias de seguridad, al dedicar los servidores de bases de datos a las aplicaciones. Compartido es bueno, hasta que no lo es.
fuente
Si mantiene sus tablas MyISAM solo por motivos heredados (no se ha molestado en modificarlas), esto es lo que uso para solucionarlo fácilmente:
Puede excluir e incluir bases de datos con la expresión regular awk, como solo dbs que comienzan con una letra minúscula en mi ejemplo anterior. Por supuesto, esto bloqueará las mesas durante el alter.
Luego use xtrabackup para copiar toda la base de datos directamente a otro servidor sin bloquear ninguna tabla o usar demasiada E / S de disco (después de configurar las claves ssh rsa):
y luego puede hacer el paso de registro de aplicación completamente separado y ahorrar espacio en disco, E / S y CPU en el servidor de producción.
Howto's de Percona para usar xtrabackup
fuente