2012-03-27 5 views
16

Je suis en train de comprendre comment mysqldump fonctionne:mysqldump compression

si j'exécute mysqldump sur mon pc et se connecter à un serveur distant:

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

sera le serveur compresser et l'envoyer vers moi en tant que gzip ou mon ordinateur recevra-t-il toutes les données en premier, puis le compressera?

Parce que j'ai un très gros db distant à exporter, et je voudrais savoir le moyen le plus rapide de le faire sur un réseau!

+0

Si cette ligne est exécutée sur votre PC, le 'gzip' fonctionnera sur votre PC aussi. Cela signifie que vous obtiendrez la décharge brute non compressée. – pritaeas

Répondre

29

Vous devez utiliser ssh + scp,
parce que la décharge sur localhost est plus rapide,
et vous ne devez scp sur la gzip (moins les frais généraux du réseau)

probablement vous pouvez le faire

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

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

(option répertoire de/tmp, de changer les choses à tout ce répertoire à l'aise avec)

+0

bonne idée, le problème est que j'ai affaire à cleardb (qui est une instance commerciale de amazon rds) et je n'ai pas réussi à me connecter via ssh .. je ne sais pas si ça va être possible! –

+0

vérifier auprès de l'assistance? – ajreal

+0

oui, c'est la prochaine étape .. Mais sur un db (virtuellement) partagé je ne pense pas qu'ils vont me laisser le faire: ( –

0

Voici comment je le fais:

Est-ce une exportation partielle en utilisant SELECT INTO OUTFILE et créer les fichiers sur le même serveur.

Si votre table contient 10 millions de lignes. Faites une exportation partielle de 1 million de lignes à la fois, chaque fois dans un fichier séparé. Une fois le 1er fichier prêt, vous pouvez le compresser et le transférer. En attendant, MySQL peut continuer à exporter des données vers le fichier suivant.

Sur l'autre serveur, vous pouvez commencer à charger le fichier dans la nouvelle base de données.

BTW, beaucoup de cela peut être écrit.

+0

OUTFILE n'est pas possible dans Amazon RDS – codewandler

11
+0

oui, cela réduit énormément le transfert de données! Mais ce que je voulais comprendre était: si le mysqldump met en cache les données sur mon pc ou sur le serveur distant .. D'après ce que j'ai compris il transfère d'abord toutes les données sur mon pc. Est-ce que j'ai raison? –

+0

Il n'y a pas beaucoup de documentation sur le fonctionnement du paramètre '--compress' Je peux faire une supposition éclairée mais je devrais regarder la source pour être sûr, mais je pensais que votre question était de savoir si côté serveur compressé ou client s ide. Dans votre exemple, c'est certainement le côté client.Si vous avez vu le paramètre compresser réduire le transfert de données, alors cela devrait répondre à votre question qu'il compresse le côté serveur. –