2012-03-27 24 views
16

Estoy tratando de entender cómo mysqldump funciona:mysqldump compresión

si ejecuto mysqldump en mi PC y conectarse a un servidor remoto:

mysqldump -u mark -h 34.32.23.23 -pxxx --quick | gzip > dump.sql.gz 

será el servidor comprimirlo y enviarlo a mí como gzip o mi computadora recibirá todos los datos primero y luego los comprimirá?

Porque tengo un db remoto muy grande para exportar, ¡y me gustaría saber la forma más rápida de hacerlo a través de una red!

+0

Si esta línea se ejecuta en su PC entonces el 'gzip' se ejecutará en su PC también. Eso significa que obtendrá el volcado sin procesar sin comprimir. – pritaeas

Respuesta

29

Usted debe hacer uso de ssh + SCP,
porque el volcado en el servidor local es más rápido,
y sólo necesita un scp sobre el gzip (sobrecarga de la red menor)

probable que usted puede hacer esto

ssh [email protected] "mysqldump -u mark -h localhost -pxxx --quick | gzip > /tmp/dump.sql.gz" 

scp [email protected]:/tmp/dump.sql.gz . 

(opcional directorio de/tmp, debe haber cambio en el directorio que se siente cómodo con)

+0

buena idea, el problema es que estoy tratando con cleardb (que es una instancia comercial de amazon rds) y no logré iniciar sesión a través de ssh .. no sé si va a ¡ser posible! –

+0

consultar con el soporte? – ajreal

+0

sí, ese es el siguiente paso ... Pero en una base de datos (virtualmente) compartida no creo que me dejen hacerlo :( –

0

Así es como lo hago:

realizar una exportación parcial usando SELECT INTO OUTFILE y crear los archivos en el mismo servidor.

Si su tabla contiene 10 millones de filas. Haga una exportación parcial de 1 millón de filas a la vez, cada vez en un archivo separado.

Una vez que el primer archivo esté listo, puede comprimirlo y transferirlo. Mientras tanto, MySQL puede seguir exportando datos al siguiente archivo.

En el otro servidor puede comenzar a cargar el archivo en la nueva base de datos.

Por cierto, mucho de esto puede ser con guión.

+0

OUTFILE no es posible en Amazon RDS – codewandler

11
+0

sí, reduce un montón la transferencia de datos! Pero lo que quería entender era: si el mysqldump almacena en caché los datos en mi pc o en el servidor remoto ... Por lo que entendí, primero transfiero todos los datos en mi pc. ¿Estoy en lo correcto? –

+0

No hay mucha documentación sobre cómo funciona el parámetro '--compress'. Puedo hacer una suposición educada, pero tendría que buscar en la fuente para estar seguro. Pero pensé que su pregunta era si se trataba lado del servidor comprimido o cliente s ide. En su ejemplo, ciertamente es del lado del cliente.Si ha visto el parámetro compress reducir la transferencia de datos, entonces debería responder a su pregunta que comprime el lado del servidor. –