我有两个数据库,需要用不同的转储设置来转储。通常,我首先将它们转储到文件中,然后将它们连接起来,并在需要时通过ssh发送。
我不知道下面的方法是否也能工作,还是只会堵塞我的内存,因为服务器的RAM小于转储的大小。
# cat <(mysqldump ${OPTIONS_1}) <(mysqldump ${OPTIONS_2}) | ssh host mysql或
# cat <(mysqldump ${OPTIONS_1}) <(mysqldump ${OPTIONS_2}) > >(ssh host mysql)Bash手册页有一个警告:
当可用时,进程替换将同时执行.
因此,我假设它首先会尝试读取与内存平行的全部转储。
发布于 2016-08-11 13:55:22
进程替换本质上只是写到管道上的语法糖。每个mysqldump在阻塞之前只能向一个相对较小的缓冲区写入这么多信息,直到cat从缓冲区中读取一些数据为止。
但是,一个更简单的解决方案是只使用一个命令组来组合这两个转储;如果cat在完成第一个转储之前不从第二个转储读取转储,则并行运行转储是没有意义的。
{ mysqldump ${OPTIONS_1}; mysqldump ${OPTIONS_2}; } | ssh host mysqlhttps://stackoverflow.com/questions/38898197
复制相似问题