Cassandra 如何检查卡桑德拉是否准备好了

Cassandra 如何检查卡桑德拉是否准备好了,cassandra,Cassandra,我有一个Cassandra在Docker中运行,我想在数据库准备就绪时启动一个CQL脚本。我尝试检查端口以检测它何时准备就绪: while ! nc -z localhost 7199; do sleep 1 done echo "Cassandra is ready" cqlsh -f ./createTables.cql 但是,在数据库真正准备就绪之前,端口已打开,cqlsh因此失败。如何正确检查Cassandra状态并启动脚本?提前感谢。首先,您需要等待另一个端口-9042-这是

我有一个Cassandra在Docker中运行,我想在数据库准备就绪时启动一个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

要等待Cassandra准备就绪…

此行将出现在Cassandra system.log
中,当节点准备就绪时,将在/0.0.0:9042开始侦听CQL客户端…
。不建议在0.0.0.0上侦听。您对何时未安装cqlsh有什么想法吗?我需要从另一个容器中执行此检查,安装不是一个选项。nc一直给我空结果。。。9042也在cassandra准备就绪之前打开。@QuintenScheppermans您找到没有cqlsh的解决方案了吗?您可以查看日志,查看启动是否完成,或者使用
nc-z 9042
。。。