2015-07-02 20 views
5

Potrzebuję skopiować mysql db ze zdalnego serwera na lokalny serwer. Jedyny sposób, w jaki mogę uzyskać dostęp do tej bazy danych, to połączenie się z komputerem zdalnym (nazwijmy to X) za pomocą ssh, a następnie z tego komputera łączę się z mysql pod numerem mysql -h address -u username -p password. Moim ograniczeniem jest to, że nie mogę zrobić zrzutu na serwerze mysql, który uruchamia DB, i nie mogę zrobić zrzutu na komputer X (z powodu administracyjnego, którego nie można zmienić).mysqldump ze zdalnego serwera

Czy istnieje sposób, aby powiedzieć mysql, aby zrobić zrzut bezpośrednio na mój serwer lokalny? (Być może za pomocą PIPE, chociaż nie jestem tego zaznajomiony). Co jest warte, mój serwer działa na serwerze Ubuntu, X działa również na Linuksie.

Próbowałem szukać rozwiązania, ale nie mogłem znaleźć czegoś w tym dokładnie scenariuszu.

Doceń każdą pomoc.

Pozdrawiam, elad

+0

Możesz spróbować użyć sshfs i zamapować zdalny folder (być może twój lokalny komputer, jeśli jest dostępny) na serwerze mysql. następnie użyj tego dla zrzutu. (zakładam, że używasz serwera mysql dla systemu Linux) –

+0

Możesz powiedzieć ssh, aby uruchomił polecenie na zdalnym komputerze, a następnie przekieruj dane wyjściowe do pliku na lokalnym komputerze –

Odpowiedz

3

Można użyć ssh wyposażone tunelowania:

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

to powie klienta SSH do nasłuchiwania połączeń TCP na port 12345 na komputerze lokalnym (ten, jesteś łączenie z) i przekazywanie ich jako połączeń od server-x do portu 3306 (domyślny port serwera MySQL) na remote-db-server.

Następnie można po prostu uruchomić mysqldump na komputerze lokalnym i powiedzieć, aby połączyć się z localhost portem 12345. Będzie to faktycznie połączenie ze zdalnym serwerem bazy danych iz perspektywy tego serwera będzie wyglądać jak połączenie pochodzące z server-x.

2

Można korzystać z funkcji przekierowania stdin/stdout ssh:

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

pomocą tego polecenia, mysqldump zapisuje swój zrzut do STDOUT, który jest przekierowywany do stdout lokalnego powłoki. Z > mylocalfile.sql zapisujesz strumień STDOUT do lokalnego pliku.

Powiązane problemy