mysqldump con tablas individuales mucho más lento que con --all-databases

Utilizo dos formas diferentes de hacer una copia de seguridad de mi base de datos mysql. mysqldump con --all-databases es mucho más rápido y tiene un rendimiento mucho mejor que un bucle para volcar todas las bases de datos en un solo archivo. ¿Por qué? Y cómo acelerar el rendimiento de la versión en bucle

enter image description here

/usr/bin/mysqldump --single-transaction --all-databases  | gzip > /backup/all_databases.sql.gz

y este bucle sobre 65 bases de datos incluso con agradable:

nice -n 19 mysqldump --defaults-extra-file="/etc/mysql/conf.d/mysqldump.cnf" --databases -c xxx -q > /backup/mysql/xxx_08.sql
nice -n 19 mysqldump --defaults-extra-file="/etc/mysql/conf.d/mysqldump.cnf" --databases -c dj-xxx -q > /backup/mysql/dj-xxx_08.sql
nice -n 19 mysqldump --defaults-extra-file="/etc/mysql/conf.d/mysqldump.cnf" --databases -c dj-xxx-p -q > /backup/mysql/dj-xxx-p_08.sql
nice -n 19 mysqldump --defaults-extra-file="/etc/mysql/conf.d/mysqldump.cnf" --databases -c dj-foo -q > /backup/mysql/dj-foo_08.sql

mysqldump.cnf solo se usa para la autenticación, no hay opciones adicionales allí.

preguntado el 04 de julio de 12 a las 09:07

Está ejecutando con opciones muy diferentes, por ejemplo, el argumento -q y lo que esté en /etc/mysql/conf.d/mysqldump.cnf , lo que podría afectar en gran medida el resultado. ¿Probaste correr con las mismas opciones? (también tenga en cuenta que ejecutar el primer volcado puede extraer gran parte de los datos en la memoria, por lo que cuando ejecuta los otros comandos una hora más tarde, puede beneficiarse de ese caché) -

mysqldump.cnf solo se usa para la autenticación, no hay opciones adicionales. -

¿Y cuando volcas todas las bases de datos con la opción -q? También parece que no está comprimiendo el sql en su 2. ejemplo, por lo que los comandos podrían pasar mucho tiempo escribiendo en el disco duro. (todo esto hace un enorme diferencia en mis propias copias de seguridad, podrían o no en las suyas, es decir: haga que las pruebas sean lo más iguales posible para que podamos eliminar las diferencias obvias).

1 Respuestas

Hay muchas diferencias.

  1. En A, está escribiendo en gzip, que comprime los datos antes de escribirlos en el disco. B escribe archivos sql simples que pueden ser de 5 a 10 veces más grandes (resultados de mi base de datos). Si su rendimiento está limitado al disco, esta podría ser la solución.

  2. -c = "inserciones completas" no se especifica en A

  3. -q no está especificado en A

  4. para grandes bases de datos INFORMATION_SCHEMA las consultas pueden ser una molestia con mysql (intente ejecutar SELECT * FROM information_schema.columns. Para B, cada volcado tiene que hacer estas consultas, mientras que A tiene que hacer esto solo una vez.

Respondido 04 Jul 12, 10:07

gracias por su respuesta, no comprimir los archivos fue la principal pérdida de rendimiento.. - Martín Krung

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.