在继续脚本之前等待ssh隧道

bxfogqkk  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(394)

我有一个从cloud foundry db转储数据的脚本,它的工作方式如下:

cf ssh -L 33001:db.host:3306 --skip-remote-execution App &
TUNNEL_PID=$!

mysqldump --protocol TCP --port= 33001 ..... db_name > /tmp/my-db-dump.sql

kill $TUNNEL_PID

问题是 mysqldump 失败于
mysqldump:获取错误:2003:尝试连接时无法连接到“localhost”(61)上的mysql服务器
我想问题是隧道尚未建成。当我这么做的时候 sleep 5 在mysqldump之前,一切正常。但我不想依赖随机的5秒钟。可以等隧道开工吗?

kuhbmx9i

kuhbmx9i1#

你能通过ssh命令运行mysqldump而不是打开一个隧道吗?
mysqldump将写入其stdout,stdout将通过ssh命令传输回您的客户机主机。

ssh App "mysqldump db_name" > /tmp/my-db-dump.sql

或者您甚至可以转储到服务器上的压缩文件,然后用scp获取转储文件。这将有助于加快转移速度。

ssh App "mysqldump db_name | gzip -c > /tmp/my-db-dump.sql.gz"
scp App:/tmp/my-db-dump.sql.gz .
ssh App "rm /tmp/my-db-dump.sql.gz"

这是未经测试,但我希望它给你一些想法,以实验。

相关问题