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


13

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

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

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

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

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


1
"намерения и цели"
Игнасио Васкес-Абрамс

Ответы:


11

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

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

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


Это действительно изящный процесс, который направляет дамп непосредственно в mysql на удаленном сервере, по сути, клонирование базы данных - это одна команда. Я прав?
xzyfer

1
вы получили это ;-) конечно, вы всегда можете просто нажать на файл, но мне нравятся дампы, так как они позволяют вам при необходимости выполнять откат к резервной копии :-) в режиме реального времени, просто переключая ip в ваших конфигурационных файлах. ... ОГРОМНАЯ выгода. Мы постоянно делаем это на наших линодных вещах
Гленн Келли,

Я чувствую, что здесь могут быть проблемы с буферизацией трубы?
Фил Холленбек

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

Этот работал отлично для меня. Я установил аутентификацию с открытым ключом на своем ноутбуке Mac OS X и запустил mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql" именно то, что мне нужно.
Harperville

2

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

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

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

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.