descargar - ¿Hay una manera más rápida de cargar mysqldumps?
mysql command line client 5.5 download (6)
¿Está seguro de que los datos son sensatos y no hay problemas de rendimiento del sistema de archivos o del sistema? Varios minutos para una base de datos de 20-30 megas es mucho tiempo. Estoy en una MacBook con 2GB de RAM, 320GB HD y el procesador estándar de 2.1GHz. Tomé una de mis bases de datos para un punto de referencia rápido:
gavinlaking$ du -sm 2009-07-12.glis
74 2009-07-12.glis
gavinlaking$ mysql -pxxx -e "drop database glis"
gavinlaking$ mysql -pxxx -e "create database glis"
gavinlaking$ time mysql -pxxx glis < 2009-07-12.glis
real 0m17.009s
user 0m2.021s
sys 0m0.301s
17 segundos para un archivo de 74 megabytes. Eso me parece bastante rápido. Incluso si era 4 veces más grande (por lo que es casi 300 megabytes), termina en poco menos de 70 segundos.
Posible duplicado:
Acelerando los volcados de MySQL y las importaciones.
mysqldump
es razonablemente rápido, pero los volcados de una base de datos de tamaño medio (20-30 megas) tardan varios minutos en cargarse utilizando mysql my_database < my_dump_file.sql
¿Hay algunos ajustes de mysql que puedo ajustar para acelerar la carga? ¿Hay una mejor manera de cargar los datos guardados?
He experimentado utilizando la utilidad mysqlimport con volcados basados en CSV. Estos cargan ligeramente, pero no apreciablemente, más rápido. Estoy tentado de copiar archivos de base de datos sin procesar, pero me parece una mala idea.
Asegúrese de que está utilizando la opción --opt para mysqldump al realizar el volcado. Esto utilizará la sintaxis de inserción masiva, las actualizaciones de clave de retardo, etc.
Si SOLO está utilizando las tablas MyISAM , puede copiarlas de forma segura deteniendo el servidor, copiándolas en un servidor detenido e iniciándolas.
Si no desea detener el servidor de origen, puede seguir esto:
- Obtener un bloqueo de lectura en todas las tablas
- Limpiar todas las mesas
- Copiar los archivos
- Desbloquear las mesas
Pero estoy bastante seguro de que su servidor de copia debe detenerse cuando los coloque en su lugar.
Asumiendo que estás usando InnoDB ...
Estaba en la situación de tener una pila de archivos de salida mysqldump existentes que quería importar en un tiempo razonable. Las tablas (una por archivo) tenían aproximadamente 500 MB y contenían aproximadamente 5,000,000 filas de datos cada una. Usando los siguientes parámetros, pude reducir el tiempo de inserción de 32 minutos a menos de 3 minutos.
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT
También deberá tener una configuración innodb_buffer_pool_size
razonablemente grande.
Debido a que mis inserciones eran de una sola vez, revertí la configuración después. Si va a seguir usándolos a largo plazo, asegúrese de saber lo que están haciendo.
Encontré la sugerencia de usar esta configuración en el blog de Cedric Nilly y la explicación detallada de cada una de las configuraciones se puede encontrar en la documentación de MySQL .
Existe un método para usar instantáneas de LVM para copias de seguridad y restauración que puede ser una opción interesante para usted.
En lugar de hacer un mysqldump, considere usar LVM para tomar instantáneas de sus directorios de datos MySQL. El uso de instantáneas de LVM le permite tener una capacidad de respaldo casi en tiempo real, soporte para todos los motores de almacenamiento y una recuperación increíblemente rápida. Para citar desde el siguiente enlace,
"El tiempo de recuperación es tan rápido como recuperar los datos y la recuperación estándar de MySQL, y se puede reducir aún más".
http://www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/
Pruebe https://launchpad.net/mydumper - mysql backup / restore que es 3x a 10x veces más rápido que mysqldump http://vbtechsupport.com/1695/