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


13

私は何年も前にこの気の利いたトリックをしたLinuxプロと働いていました。彼はmysqldumpを実行できますが、出力をdiskに書き込むのではなくscp / ssh接続にリダイレクトします。私は以前働いていた場所でこの静かさを少し活用しましたが、これをどうやってやるのか思い出せません。

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

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

これは実際には小さなトリックですか?もしそうなら、構文は何ですか?

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


回答:


11

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

それは動作するはずです:-)

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


これは実に気の利いたもので、ダンプをリモートサーバー上のmysqlに直接パイプし、基本的にデータベースの複製は1つのコマンドです。私は正しいですか?
xzyfer

1
あなたはそれを得ました;-)もちろん、あなたは常に単にファイルにプッシュすることができますが、必要に応じてバックアップにロールすることができるため、ダンプが好きです:-)設定ファイルのIPを変更するだけでリアルタイムで...多大なメリット。私たちは常にリノードでこれを繰り返します
グレンケリー

ここにパイプバッファリングの問題があるかもしれないと感じていますか?
フィルホレンバック


2

私は@GlennKelleyの答えが好きですが、次のことを指摘したかったのです。

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

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

mysqldump -u root -p -h 10.1.1.199 --all-databases ...<more options>... > dump.sql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.