如何解决从 bootstrap
我有一个 bash 脚本来处理将数据文件导入数据库,由于数据量巨大,我想将文件(27 个)分发到我的 4 节点集群,并在每台机器上本地执行 shell 脚本,而不需要与引导程序相关(脚本将在每台机器上独立地将数据加载到数据库中)。
我将加载脚本复制到每个节点,并且我确实将多个文件复制到同一文件夹中,因此在本地运行会一个一个加载它们。但我需要从引导程序中触发它。
我的工人姓名是:WORKER1
... WORKER4
我尝试使用:
processloadingFiles() {
for FILE in `ls -1 data_migration_part*`
do
echo "copying file $FILE to WORKER$WORKER"
scp $FILE $ENV_IP$WORKER:$DIR_BIN/data_migration.csv
echo "Processing file $FILE" "" $WORKER
ssh $ENV_IP$WORKER "cd /home/datausr/files/Migration; ./loadfiles.sh " &
((WORKER++))
if [ $WORKER -eq 5 ]; then
wait
WORKER=1
fi
done
}
运行上面的代码将开始在节点上加载,但它将逐个节点而不是独立地加载。
结果将是:
[datausr@bootstrap Migration]$ ps -ef | grep migrate
datausr 91290 90149 0 09:16 pts/0 00:00:00 ssh 20.18.8.21 cd /home/datausr/VivoHistoryMigration;source ./loadfiles.sh
datausr 91306 90149 0 09:16 pts/0 00:00:00 ssh 20.18.8.22 cd /home/datausr/VivoHistoryMigration;source ./loadfiles.sh
datausr 91335 90149 0 09:16 pts/0 00:00:00 ssh 20.18.8.23 cd /home/datausr/files/Migration ;source ./loadfiles.sh
datausr 91356 61457 0 09:16 pts/0 00:00:00 grep --color=auto migrate
[datausr@bootstrap Migration]$
那些进程正在引导程序中运行,新的加载作业在最后一个完成之前不会启动。
如何执行本地脚本,让它在远程节点上运行,以便它可以在不涉及引导程序的情况下自行完成?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。