Перенаправлення виводу mysqldump на scp


13

Я працював з linux pro років тому, який зробив цей чудовий трюк. Він міг би зробити 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" саме те, що мені потрібно.
Харпервіль

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.