我有一个在Docker中运行的Cassandra,我想在数据库准备好时启动CQL脚本。我尝试检查端口以检测它何时准备好:
while ! nc -z localhost 7199; do
sleep 1
done
echo "Cassandra is ready"
cqlsh -f ./createTables.cql
但是在数据库准备就绪之前打开了端口,因此cqlsh
失败了。如何正确检查Cassandra状态并启动脚本?提前致谢。
首先,您需要等待另一个端口 - 9042 - 这是CQLSH使用的端口。
另一种方法也可能是等待执行sqlsh
而不是nc
(或者作为第二步,因为nc
的执行速度要快得多)。例如,您可以使用类似命令的内容:
while ! cqlsh -e 'describe cluster' ; do
sleep 1
done
等到卡桑德拉准备好了......