web-dev-qa-db-ja.com

mysqldumpの出力をscpにリダイレクトする

私はこの気の利いたトリックをしたLinuxプロと数年前に協力しました。彼はmysqldumpを実行できますが、ディスクに書き込むのではなく、scp/ssh接続に出力をリダイレクトします。以前は仕事をしていた場所でこの静かさを少し利用しましたが、これを行う方法をもう思い出せません。

サーバーのハードドライブが最後のレッグにあり、集中的に使用するために、読み取り専用として永続的にマウントされているという問題に直面しています。

ローカルのディスクにダンプを書き込んで転送することは明らかに問題外なので、このコマンドライントリックを利用してデータベースを新しいサーバーにバックアップできることを望んでいました。

これは実際に少しトリックが実際に可能ですか?可能な場合、構文は何ですか?

私は、読み取り専用のファイルシステムの問題が原因でmysqlに接続してダンプを実行することすらできないことを経験して以来、気づきました。しかし、あなたのフィードバックは素晴らしく、うまくいけば将来誰かに役立つと思います

13
xzyfer

mysqldump dbname | ssh [email protected] "mysql -D dbname"

それはうまくいくはずです:-)

システム間でもキーを設定して、ログイン/パスを必要とせずに設定できるようにします:-)

11
Glenn Kelley
mysqldump ... | ssh ... "cat > out.dmp"

@GlennKelleyの答えは好きですが、次の点を指摘したいと思います。

450GBのデータベースがありましたが、ホストでプロビジョニングされたのは500GBだけでした。ローカルにエクスポートできなかったため、リモートでエクスポートしました。出力を検証したところ、パイプのバッファリングの問題が原因で出力が破損したインスタンスが何百もありました。

ここでの最良の解決策は、最終的にダンプを取得するターゲットホストからmysqldumpを実行することですが、ホストには-hオプションを使用します。ホストがMySQLサーバーを指すようにし、>を使用してデータをエクスポートします。

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