2008-09-15 5 views
51

¿Existen técnicas documentadas para acelerar los volcados y las importaciones de mySQL?Acelerando los volcados e importaciones de mysql

Esto incluiría my.cnf configuración, utilizando discos RAM, etc.

buscando sólo para las técnicas documentadas, preferiblemente con puntos de referencia que muestran el potencial de aceleración.

Respuesta

15

http://www.maatkit.org/ tiene un mk-paralelo-volcado y MK-paralelo-restaurar

Si usted ha estado deseando mysqldump multi-hilo, desear no más. Esta herramienta descarga tablas MySQL en paralelo. Es un mysqldump mucho más inteligente que puede actuar como envoltorio para mysqldump (con un comportamiento predeterminado razonable) o como un envoltorio alrededor de SELECT INTO OUTFILE. Está diseñado para aplicaciones de alto rendimiento en tamaños de datos muy grandes, donde la velocidad importa mucho. Aprovecha múltiples CPU y discos para volcar sus datos mucho más rápido.

También hay varias opciones posibles en mysqldump, como no hacer índices mientras se está importando el volcado, sino realizarlos en masa al finalizar.

+3

De acuerdo con la página del manual mk-parallel-dump (http://www.maatkit.org/doc/mk-parallel-dump.html), no se debe utilizar para la copia de seguridad. ¡Tener cuidado! – Ztyx

+2

Maatkit ahora es parte de Percona Toolkit (https://launchpad.net/percona-toolkit) – drewish

+2

¿Cuál es el nombre del comando en percona-toolkit? –

4

El uso de insertos extendidos en los vertederos debe hacer que las importaciones sean más rápidas.

+1

si lo hace existe la posibilidad de que no pueda importar de nuevo si el volcado es incluso moderadamente grande – Jonathan

+0

¿Cómo es que el cliente MySQL no puede procesar volcados moderadamente grandes con inserciones extendidas? – che

+0

Supongo que el cliente tiene un búfer de tamaño fijo para cada línea que está leyendo y las inserciones extendidas exceden ese límite. – Ztyx

24
  1. obtener una copia de MySQL alto rendimiento. Gran libro.
  2. insertos extendidos en vertederos
  3. volquete con formato --tab esta manera puede utilizar mysqlimport, que es más rápido que MySQL < dumpfile
  4. importación con múltiples hilos, uno para cada tabla.
  5. Si es posible, utilice un motor de base de datos diferente. importar en un motor de transacciones muy grandes como innodb es terriblemente lento. Insertar en un motor no transaccional como MyISAM es mucho más rápido.
  6. Observe la secuencia de comandos de comparación de tablas en el kit de herramientas Maakit y vea si puede actualizar sus tablas en lugar de descargarlas e importarlas. Pero probablemente estés hablando de copias de seguridad/restauraciones.
4

apague las comprobaciones de clave foránea y active el autocompromiso.

13

Si va a importar a InnoDB la cosa más eficaz que puede hacer es poner

innodb_flush_log_at_trx_commit = 2 

en su my.cnf, temporalmente mientras la importación está en marcha. Puede volver a ponerlo al 1 si necesita ACID.

+0

Me pregunto, ¿no sería aún más rápido establecerlo en '0'? –

+0

realmente no entendía lo que esto hace, pero aceleró la restauración de mi gran volcado de base de datos innoDB. para los dbs de MyISAM aumentando el '' key_buffer_size' ayudado (al 30% de la memoria disponible). – arun

+1

Simplemente curioso, ¿SET autocommit = 0 lo hace innecesario? –

5

pienso que su pregunta también depende de donde el cuello de botella es:

  • Si la red es un cuello de botella que también podría echar un vistazo a la bandera -C/--compress-mysqldump.
  • Si su computadora se queda sin memoria (es decir, comienza a intercambiar) debe comprar más memoria.

También, echar un vistazo a la bandera --quick para mysqldump (y --disable-keys si está usando MyISAM).

+0

[Referencia] (http://dev.mysql.com/doc/refman/5.6/en/mysqldump.html#option_mysqldump_disable-keys) dice '--disable-keys' es 'efectivo solo para índices no únicos de tablas MyISAM' . – Kapep

+0

kapep - gracias por la corrección. He actualizado la respuesta. – Ztyx

1

mysqlhotcopy podría ser una alternativa para usted también si solo tiene tablas MyIsam.

-2

Utilización de índices, pero no demasiado, active caché de consulta, utilizando la esfinge de gran base de datos, aquí está algunos buenos consejos http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (en francés)

+0

No debe simplemente dar un enlace a otro sitio como respuesta, ya que el sitio puede quedar desactualizado en el futuro. En su lugar, haga clic en el enlace "editar" en esta respuesta e incluya las partes esenciales de la solución de esa página aquí. Ver: http://meta.stackexchange.com/q/8259 –

-2

Otra alternativa es http://www.mydumper.org - multi-hilo de copia de seguridad de MySQL/restauración que es 3x a 10 veces más rápido que mysqldump y puede manejar tanto MyISAM como InnoDB, así como llovizna http://vbtechsupport.com/1695/

+0

el enlace mydumper.org va a un sitio vacío. –

+0

sí, dominio caducado .. hay un espejo en http://centminmod.com/mydumper.html para documentación – p4guru

Cuestiones relacionadas