2012-11-27 1 views
27

Czy można zrzucić bazę danych ze zdalnego hosta przez połączenie ssh i mieć plik kopii zapasowej na moim komputerze lokalnym.mysqldump ze zdalnego hosta

Jeśli tak, jak można to osiągnąć?

Zakładam, że będzie to kombinacja wyjścia rurociągu z ssh do zrzutu lub odwrotnie, ale nie mogę tego zrozumieć.

+0

Mam odpowiedział podobną odpowiedź tutaj: http://stackoverflow.com/questions/6564882/automate-mysqldump-to-local-computer-windows/13584425#13584425 –

Odpowiedz

55

To byłoby zrzucić, kompresować i przesyłać przez ssh do lokalnego pliku

ssh -l user remoteserver "mysqldump -mysqldumpoptions database | gzip -3 -c" > /localpath/localfile.sql.gz 
3

ssh -f [email protected] -L 3306:server.com:3306 -N

następnie:

mysqldump -hlocalhost > backup.sql

Zakładając, że również nie mają mysql działa lokalnie. Jeśli to zrobisz, możesz dostosować port do czegoś innego.

+0

Czy możesz podać przykład –

+1

muszę to w jedno polecenie, ale dlatego myślałem, że będzie połączenie rur –

+0

Czy możesz wyjaśnić, dlaczego potrzebujesz tego jako pojedynczego polecenia? –

10

Zaczynając od użytkownika @ MichelFeldheim rozwiązania, użyję:

$ ssh [email protected] "mysqldump -u user -p database | gzip -c" | gunzip > db.sql 
0

Stworzyłem script, aby go można łatwiej zautomatyzować komendy mysqldump na zdalnych hostach, korzystając z odpowiedzi podanej przez Michel Feldheim jako punktu początkowego:

mysqldump-remote

Skrypt pozwala pobrać zrzut bazy danych ze zdalnego hosta z lub bez SSH i ewentualnie przy użyciu pliku .env zawierającą zmienne środowiskowe.

Mam zamiar użyć skryptu do automatycznego tworzenia kopii zapasowych bazy danych. Zapraszam do create issues/contribute - mam nadzieję, że to pomoże także innym!