在bash进程替换中连接mysqldumps?

时间:2016-08-11 13:47:14

标签: bash parallel-processing

我有两个数据库需要使用不同的转储设置进行转储。通常我先将它们转储到文件中,然后将它们连接起来并通过ssh发送到需要的地方。

我想知道以下方法是否也能正常工作,或者它是否会堵塞我的内存,因为服务器的RAM少于转储的大小。

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

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

Bash手册页有一个警告:

  

可用时,同时执行过程替换......

所以我假设它会首先尝试与内存并行读取完整转储。

1 个答案:

答案 0 :(得分:1)

进程替换基本上只是写入管道的语法糖。每个mysqldump只能在阻塞之前写入相对较小的缓冲区,直到cat从缓冲区读取一些数据。

但是,更简单的解决方案是只使用命令组来组合两个转储;如果cat没有从第二个读取,直到完成第一个转储,就没有意义并行运行转储。

{ mysqldump ${OPTIONS_1}; mysqldump ${OPTIONS_2}; } | ssh host mysql
相关问题