Назад | Перейти на главную страницу

Перенаправить вывод mysqldump на scp

Много лет назад я работал с профессионалом по Linux, который проделал этот изящный трюк. Он мог сделать mysqldump, но перенаправляет вывод на соединение scp / ssh вместо записи на диск. Мы немного использовали эту тишину там, где я раньше работал, но я уже не могу вспомнить, как это делать.

Теперь я столкнулся с проблемой, когда мой жесткий диск на моем сервере находится на последнем издыхании и для интенсивных целей постоянно монтируется только для чтения.

Я надеялся использовать эту уловку командной строки, чтобы по-прежнему иметь возможность создавать резервные копии моих баз данных на новом сервере, поскольку запись дампа на локальный диск и его передача явно исключены.

Возможен ли этот маленький трюк? Если да, то каков синтаксис?

С тех пор я понял, что из-за проблемы с файловой системой только для чтения, которую я испытываю, я даже не могу подключиться к mysql, чтобы сделать дамп. Но ваша обратная связь была отличной и, надеюсь, пригодится кому-то еще в будущем.

mysqldump dbname | ssh root@remoteserver.com "mysql -D dbname"

это должно работать :-)

Настройте ключи между системами, чтобы вы могли делать это без входа в систему / доступа :-)

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

Мне нравится ответ @GlennKelley, но я хотел бы отметить следующее:

У нас была база данных размером 450 ГБ, но на хосте было выделено только 500 ГБ. Мы не могли экспортировать локально, поэтому экспортировали удаленно. Мы проверили вывод, и были сотни случаев, когда вывод был поврежден из-за проблем с буферизацией канала.

Лучшее решение здесь - с целевого хоста, на котором вы хотите, чтобы ваш дамп закончился, запустить mysqldump но используйте -h вариант для хоста. Направьте хост на сервер MySQL и экспортируйте данные, используя >.

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql