2008-10-29 4 views

Antwort

23

Sie nicht sagen, was für den Netzwerkzugriff Sie auf dem Remote-Server haben.

Angenommen, Sie haben SSH-Zugriff auf den Remote-Server, könnten Sie die Ergebnisse einer Remote-Mysqldump auf den Befehl mysql pipen. Ich dies nur getestet, und es funktioniert gut:

ssh remote.com "mysqldump remotedb" | mysql localdb 

ich Sachen wie Benutzer setzen, Passwort, Host in .my.cnf so bin ich nicht ständig eingeben sie - ärgerlich und schlecht für die Sicherheit auf Multi-User-Systeme, Sie setzen Passwörter im Klartext in deine bash_history! Aber man kann leicht die -u -p -h Sachen zurück in die an beiden Enden hinzufügen, wenn Sie es brauchen:

ssh remote.com "mysqldump -u remoteuser -p'remotepass' remotedb" | mysql -u localuser -p'localpass' localdb 

Schließlich können Sie Rohr durch gzip die Daten über das Netzwerk zu komprimieren:

ssh remote.com "mysqldump remotedb | gzip" | gzip -d | mysql localdb 
+0

Das hat mir sehr geholfen, als ich Server migrierte. Ich hoffe, der Fragesteller kann dies als Antwort auf die Frage auswählen. – Nikko

+0

Was ist, wenn die SQL-Datei bereits existiert? –

+2

Was passiert, wenn ich keinen SSH - Zugriff habe, aber über meinen lokalen "mysql --host = mydomain.com --user = user --pass = pass" eine Verbindung zum entfernten mysql Server herstellen kann? Wie kann ich die * .sql Datei abrufen? Datei muss ich dumpen? –

0

würde ich wget entweder verwenden, um es in eine Datei oder eine Pipe in herunterladen.

3

Ich dachte, ich würde hinzufügen, da ich ernsthaft Platz auf meiner lokalen VM hatte, aber wenn die .SQL-Datei bereits auf dem Remote-Server vorhanden ist, könnten Sie tun;

ssh <ip-address> "cat /path/to/db.sql" | mysql -u <user> -p<password> <dbname>