Я работал с профессионалом linux много лет назад, который сделал этот отличный трюк. Он мог сделать mysqldump, но перенаправить вывод в соединение scp / ssh вместо записи на диск . Мы немного использовали эту тишину, когда я работал, но я не могу вспомнить, как это сделать.
Теперь я столкнулся с проблемой, когда мой жесткий диск на моем сервере находится на последних ногах и для интенсивных целей постоянно монтируется только для чтения.
Я надеялся использовать эту хитрость командной строки, чтобы по-прежнему иметь возможность выполнять резервное копирование моих баз данных на новый сервер, поскольку запись дампа на локальную дискету и его передача явно исключена.
Это действительно маленький трюк на самом деле возможно? Если так, какой синтаксис?
С тех пор я понял из-за проблемы с файловой системой, доступной только для чтения, и мне кажется, что я даже не могу подключиться к mysql, чтобы сделать дамп. Но ваша обратная связь была отличной и, надеюсь, пригодится кому-то еще в будущем
Ответы:
mysqldump dbname | ssh root@remoteserver.com "mysql -D dbname"
это должно работать :-)
Также установите ключи между системами, чтобы вы могли делать это без необходимости входа в систему / прохода :-)
источник
источник
mysqldump -p <dbname> | ssh <user>@<ip_address> "cat > <filename>.sql"
именно то, что мне нужно.Мне нравится ответ @ GlennKelley, но я хотел бы отметить следующее:
У нас была база данных объемом 450 ГБ, но на хосте было выделено только 500 ГБ. Мы не могли экспортировать локально, поэтому мы экспортировали удаленно. Мы проверили вывод, и были сотни случаев, когда вывод был поврежден из-за проблем с буферизацией канала.
Лучшее решение здесь - с целевого хоста, на котором вы хотите, чтобы ваш дамп заканчивался, запускался,
mysqldump
но использовал-h
опцию для хоста. Укажите хост на сервере MySQL и экспортируйте данные, используя>
.источник