Przekieruj wyjście mysqldump do scp


13

Przed laty pracowałem z linux pro, który wykonał tę sprytną sztuczkę. Mógłby zrobić mysqldump, ale przekierować wyjście do połączenia scp / ssh zamiast zapisywać na dysku . Wykorzystaliśmy ten spokój trochę tam, gdzie kiedyś pracowałem, ale nie pamiętam już, jak to zrobić.

Teraz mam problem z tym, że mój dysk twardy na moim serwerze jest na ostatnich nogach i, dla intensywnych celów, jest trwale zamontowany jako tylko do odczytu.

Miałem nadzieję wykorzystać tę sztuczkę z wiersza poleceń, aby nadal móc tworzyć kopie zapasowe moich baz danych na nowym serwerze, ponieważ zapisanie zrzutu na dysk lokalny i przesłanie go wyraźnie nie wchodzi w rachubę.

Czy to rzeczywiście mała sztuczka jest możliwa? Jeśli tak, jaka jest składnia?

Od tego czasu zdałem sobie sprawę z powodu problemu z systemem plików tylko do odczytu. Doświadczam, że nie mogę nawet połączyć się z mysql, aby wykonać zrzut. Ale twoja informacja zwrotna była świetna i mam nadzieję, że przyda się komuś innemu w przyszłości


1
„zamiary i cele”
Ignacio Vazquez-Abrams

Odpowiedzi:


11

mysqldump nazwa_db | ssh root@remoteserver.com „mysql -D nazwa_db”

to powinno działać :-)

Skonfiguruj również klucze między systemami, abyś mógł to zrobić bez konieczności logowania / podania :-)


To naprawdę fajne, przesyłanie zrzutu bezpośrednio do mysql na zdalnym serwerze, w zasadzie klonowanie bazy danych to jedno polecenie. Mam rację?
xzyfer 28.01.11

1
masz go ;-) oczywiście zawsze możesz po prostu wypchnąć plik, jednak lubię zrzuty, ponieważ pozwalają na rzutowanie na kopię zapasową w razie potrzeby :-) w czasie rzeczywistym, po prostu zmieniając ip w plikach konfiguracyjnych ... OGROMNA korzyść. Cały czas robimy to na linodach
Glenn Kelley,

Wydaje mi się, że mogą występować problemy z buforowaniem potoku?
Phil Hollenback,

10
mysqldump ... | ssh ... "cat > out.dmp"

Ten działał dla mnie świetnie. Skonfigurowałem uwierzytelnianie za pomocą klucza publicznego na moim laptopie Mac OS X i uruchomiłem mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql" dokładnie to, czego potrzebowałem.
harperville

2

Podoba mi się odpowiedź @ GlennKelley, ale chciałem zwrócić uwagę na następujące:

Mieliśmy bazę danych o pojemności 450 GB, ale tylko 500 GB udostępniono na hoście. Nie mogliśmy eksportować lokalnie, więc eksportowaliśmy zdalnie. Zweryfikowaliśmy dane wyjściowe i były setki przypadków, w których dane wyjściowe były uszkodzone z powodu problemów z buforowaniem potoku.

Najlepszym rozwiązaniem tutaj jest, aby z hosta docelowego, na którym chcesz zakończyć zrzut, uruchom, mysqldumpale użyj -hopcji dla hosta. Wskaż hosta na serwer MySQL i wyeksportuj dane za pomocą >.

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.