【发布时间】:2020-03-16 12:41:59
【问题描述】:
我正在尝试备份我的数据库服务器中的表。
我有大约 200 张桌子。我有一个 shell 脚本,其中包含用于备份每个表的命令,例如:
backup.sh
psql -u username ..... table1 ... file1;
psql -u username ..... table2 ... file2;
psql -u username ..... table3 ... file3;
我可以在我的机器上运行脚本并创建备份。但是由于有 200 个表,它将按顺序运行命令并且需要大量时间。
我想并行运行备份命令。我看过他们建议在每个命令后使用 && 或使用nohup 命令或wait 命令的文章。
但我不想编辑脚本并包含大约 200 个这样的命令。
有什么方法可以并行运行这些 shell 脚本命令列表?像nodejs 这样的东西吗?有可能做到吗?还是我看错了?
脚本中的示例命令:
psql --host=somehost --port=5490 --username=user --dbname=db -c '\copy dbo.tablename TO "/home/username/Desktop/PostgresFiles/tablename.csv" with DELIMITER ","';
【问题讨论】:
-
可能数据库已经在尽可能快地为您提供 tae 表,而试图让它同时做更多事情只会产生拥塞。
-
我的 shell 命令正在使用 \copy 这是一个客户端 CSV 创建,当我正常运行脚本时它工作正常。但是如果我使用上面提到的方法,它正在考虑 \copy as COPY 这是 db 用户无权访问的服务器端副本。
-
@tripleee 用脚本中的示例命令更新了问题。
-
这不应该发生,除非有你没有显示的事情发生,例如将命令传递给远程 shell。
-
我尝试了 drldcsta 在以下答案中提到的命令
标签: linux shell ubuntu parallel-processing debian