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
Odpowiedzi:
mysqldump nazwa_db | ssh [email protected] „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 :-)
źródło
źródło
mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql"
dokładnie to, czego potrzebowałem.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,
mysqldump
ale użyj-h
opcji dla hosta. Wskaż hosta na serwer MySQL i wyeksportuj dane za pomocą>
.źródło