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