34 votos

¿Cómo puedo aumentar la velocidad de MySQL restaurar desde un archivo de volcado?

Estoy restaurando una 30GB de la base de datos de un mysqldump archivo a una base de datos vacía en un nuevo servidor. Cuando se ejecuta el SQL desde el archivo de volcado, la restauración se inicia muy rápidamente y, a continuación, comienza a hacerse más lento y más lento. Insertos individuales están tomando más de 15 segundos. Las tablas son en su mayoría MyISAM con una pequeña InnoDB. El servidor no tiene otras conexiones activas. SHOW PROCESSLIST; sólo muestra la inserción de la restauración (y el show processlist sí mismo).

¿Alguien tiene alguna idea de lo que podría ser la causa de la desaceleración dramática?

Hay MySQL variables que puedo cambiar a la velocidad de la restauración mientras está progresando?

33voto

Marco Ramos Puntos 2212

Una cosa que puede retardar el proceso es el key_buffer_size, que es el tamaño del buffer utilizado para el índice de bloques. Ajustar esto para que al menos el 30% de la memoria RAM o el re-proceso de indexación, probablemente será demasiado lento.

Para referencia, si estás usando InnoDB y foreing keys, también se puede deshabilitar foreing key cheques y volver a habilitarla en la final (usando SET FOREIGN_KEY_CHECKS=0 y SET FOREIGN_KEY_CHECKS=1).

31voto

Dharmesh Tailor Puntos 51

Este enlace muestra de lo que uno puede hacer para acelerar la recuperación.

http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html

Uno puede poner poner los comandos en la parte superior del archivo de volcado

SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;

Y poner estas declaraciones al final de el archivo de volcado

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET AUTOCOMMIT = @OLD_AUTOCOMMIT;

Esto funcionó para mí. Feliz restauración :-)

2voto

usef_ksa Puntos 345

Si usted tiene la copia física del archivo de volcado (el directorio DB), usted puede simplemente copiar el nuevo servidor si el servidor nuevo tiene la misma versión de MySQL y funcionará bien. Esto funciona bien con MyISAM y para mí creo que es mejor que la restauración de los datos basado en la lógica de SQL archivo de volcado.

1voto

Steve Mould Puntos 141

si usted tiene múltiples tablas de probabilidades son que usted puede beneficiarse de mk-paralelo-restauración.

1voto

John Gardeniers Puntos 22554

La única razón por la que puedo imaginar por qué el restaurar gradualmente reducir la velocidad de indexación. Investigar desactivar la indexación hasta el final y, a continuación, vamos a hacer todo el lote a la vez.

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: