Много лет назад я работал с профессионалом по 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