Pregunta

  

Duplicar posible:
   Acelerar los vertederos de MySQL y las importaciones

mysqldump es razonablemente rápido, pero vertederos de una base de datos de tamaño medio (20-30 megas) que pasen varios minutos para cargar utilizando mysql my_database < my_dump_file.sql

¿Hay algunos ajustes MySQL puedo sintonizar para acelerar la carga? ¿Hay una mejor manera de cargar los datos guardados?

He experimentado con la utilidad mysqlimport con sede en vertederos CSV. Estos carga ligeramente - pero no apreciablemente - más rápido. Estoy tentado a copiar los archivos de base de datos crudos alrededor, pero que parece como una mala idea.

¿Fue útil?

Otros consejos

Si se asume que está utilizando InnoDB ...

Yo estaba en la situación de tener un montón de archivos de salida de mysqldump existentes que quería importar en un tiempo razonable. Las tablas (una por cada archivo) fueron aproximadamente 500 MB y contenían aproximadamente 5.000.000 filas de datos de cada uno. El uso de los siguientes parámetros que era capaz de 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 tendrá que tener un entorno innodb_buffer_pool_size razonablemente grande.

Debido a que mis insertos eran una sola vez he revertido los ajustes después. Si vas a seguir usando a largo plazo, asegúrese de que sabe lo que están haciendo.

He encontrado la sugerencia de utilizar estos ajustes en de Cedric Nilly el blog y la explicación detallada de cada uno de los parámetros se puede encontrar en el documentación de MySQL .

Asegúrese de que está utilizando la opción --opt a mysqldump cuando dumping. Esto utilizará la sintaxis de inserción masiva, retrasar la actualización de claves, etc ...


Si está usando sólo las tablas MyISAM , que con seguridad les puede copiar al detener el servidor, copiarlos en un servidor detenido, ya partir de eso.

Si no desea detener el servidor de origen, se puede seguir la siguiente:

  1. Obtener un bloqueo de lectura en todas las tablas
  2. a nivel de todas las tablas
  3. copiar los archivos
  4. desbloquear las tablas

Pero estoy bastante seguro de que su copia a servidor tiene que ser detenido cuando se los pone en su lugar.

¿Está seguro de los datos es sano, y no hay ningún problema de rendimiento del sistema de archivos o del sistema? Varios minutos para una base de datos meg 20-30 es mucho tiempo. Estoy en un MacBook con 2 GB de RAM, un 320 GB HD y el procesador de 2,1 GHz estándar. Agarré una de mis bases de datos para una referencia rápida:

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 parece bastante rápido para mí. Incluso si era 4 veces más grande (por lo que es apenas por debajo de 300 megabytes), que termina en menos de 70 segundos.

https://launchpad.net/mydumper - multi-hilo de copia de seguridad de MySQL / restauración que es 3x a 10x veces más rápido que mysqldump http://vbtechsupport.com/1695/

Hay un método para usar LVM instantáneas para la copia de seguridad y restauración que podría ser una opción interesante para usted.

En lugar de hacer un mysqldump, considere el uso de LVM para tomar instantáneas de los directorios de datos de MySQL. Utilizando LVM instantáneas permiten tener casi tiempo real capacidad de respaldo, el apoyo a todos los motores de almacenamiento y recuperación increíblemente rápida. Para citar el siguiente enlace,

"El tiempo de recuperación es más rápido que poner datos de ida y recuperación de bloqueo estándar de MySQL, y puede reducirse aún más."

http: //www.mysqlperformanceblog.com/2006/08/21/using-lvm-for-mysql-backup-and-replication-setup/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top