2016-08-11 9 views
0

私は異なるダンプ設定でダンプする必要がある2つのデータベースを持っています。通常はファイルにファイルをダンプしてから連結し、必要に応じてssh経由で送信します。bashプロセスの置換でmysqldumpsを連結しますか?

サーバーがダンプのサイズよりも少ないRAMを持っているので、次のアプローチも有効か、それともちょうど私のメモリが詰まるでしょうか。

# cat <(mysqldump ${OPTIONS_1}) <(mysqldump ${OPTIONS_2}) | ssh host mysql 

または

# cat <(mysqldump ${OPTIONS_1}) <(mysqldump ${OPTIONS_2}) > >(ssh host mysql) 

Bash manページには、警告があります:

利用でき、プロセス置換が同時に行われる...

だから私はそれが希望と仮定最初にメモリと並行してフルダンプを読み込もうとしてください。

答えて

1

プロセスの置換は、パイプへの書き込みを中心とした文法的な砂糖です。各mysqldumpは、比較的小さいバッファに書き込むことができます。catがバッファからデータを読み取るまでブロックします。

ただし、単純な解決策は、コマンドグループを使用して2つのダンプを結合することです。 catが最初のものが完了するまで2番目のものから読み取っていない場合は、ダンプを並列に実行する意味がありません。

{ mysqldump ${OPTIONS_1}; mysqldump ${OPTIONS_2}; } | ssh host mysql 
関連する問題