2015-07-02 12 views
5

Ich muss mysql db von einem Remote-Server auf einen lokalen Server kopieren. Die einzige Möglichkeit, auf diese Datenbank zugreifen zu können, besteht darin, mit ssh eine Verbindung zu einem entfernten Computer (nennen wir es X) herzustellen, und dann von diesem Computer aus eine Verbindung zu mysql mit mysql -h address -u username -p password herzustellen. Meine Einschränkung ist, dass ich den Speicherauszug auf dem mysql-Server, der die DB ausführt, nicht ausführen kann, und den Speicherauszug für Computer X nicht ausführen kann (aus administrativen Gründen, die nicht geändert werden können).mysqldump von einem Remote-Server

Gibt es eine Möglichkeit, mysql zu sagen, den Dump direkt auf meinem lokalen Server zu tun? (Vielleicht mit PIPE, obwohl ich damit nicht vertraut bin). Für was es wert ist, mein Server läuft auf Ubuntu-Server, X läuft auch auf Linux.

Ich habe versucht, nach einer Lösung zu suchen, konnte aber nichts zu diesem exakten Szenario finden.

Schätzen Sie jede Hilfe.

Grüße, Elad

+0

Sie könnten versuchen, sshfs zu verwenden und einen Remote-Ordner (vielleicht Ihren lokalen PC, wenn es zugänglich ist) auf dem MySQL-Server zuordnen. dann benutze das für den Dump. (Ich nehme an, hier verwenden Sie einen Linux-MySQL-Server) –

+0

Sie können SSH anweisen, einen Befehl auf dem Remotecomputer auszuführen, und dann die Ausgabe in eine Datei auf Ihrem lokalen Computer umleiten –

Antwort

3

Sie Tunneling SSH ist verwenden können:

ssh server-x -L 12345:remote-db-server:3306 

Dies wird den SSH-Client sagen hören für TCP-Verbindungen auf Port 12345 auf dem lokalen Rechner (die Sie sind Verbindung von), und sie als Verbindungen von server-x zu Port 3306 (der Standard-MySQL-Server-Port) auf remote-db-server zu übertragen.

Dann können Sie einfach mysqldump auf Ihrem lokalen Computer ausführen, und es mit localhost Port 12345 verbinden. Es wird tatsächlich Verbindung mit dem Remote-Datenbankserver, und aus der Perspektive dieses Servers wird es aussehen wie die Verbindung ist kommend von server-x.

2

können Sie die Funktion von SSH STDIN/STDOUT Umleitung verwenden:

$ ssh [email protected] "mysqldump -h host -u username -p dbname" > mylocalfile.sql 

Mit diesem Befehl mysqldump schreiben seine Dump STDOUT, die den STDOUT Ihrer lokalen Shell umgeleitet wird. Mit > mylocalfile.sql schreiben Sie den Stream von STDOUT in die lokale Datei.