cassandra - 已保存的群集名称Test Cluster!=已配置的名称

时间:2014-02-25 06:59:28

标签: cassandra

当我收到此错误时,我应该如何安装新的Cassandra节点?

INFO [SSTableBatchOpen:1] 2014-02-25 01:51:17,132 SSTableReader.java (line 223) Opening /var/lib/cassandra/data/system/local/system-local-jb-5 (5725 bytes)
ERROR [main] 2014-02-25 01:51:17,377 CassandraDaemon.java (line 237) Fatal exception during initialization
org.apache.cassandra.exceptions.ConfigurationException: Saved cluster name Test Cluster != configured name thisisstupid
        at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:542)
        at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:233)
        at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:462)
        at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:552)

cassandra.yaml文件中的群集名称为:

cluster_name: 'thisisstupid'

我该如何解决?

7 个答案:

答案 0 :(得分:55)

您可以通过在system.local表中更新它的名称来重命名群集而不删除数据(但您必须为每个节点执行 ...)

cqlsh> UPDATE system.local SET cluster_name = 'test' where key='local';
# flush the sstables to persist the update.
bash $ ./nodetool flush

最后,您需要将群集重命名为cassandra.yaml中的新名称(同样在每个节点上

答案 1 :(得分:15)

以上UPDATE SET cluster_name命令对我不起作用。我发现工作是按照the DataStax documentation on Initializing a multiple node cluster

的说明进行操作
sudo service cassandra stop
sudo rm -rf /var/lib/cassandra/data/system/*
sudo vi /etc/cassandra/cassandra.yaml, setup the proper parameters
sudo service cassandra start
nodetool status

对于一些好的集群节点设置,我发现this blog post非常有用。

答案 2 :(得分:14)

我遇到了与Datastax4.7企业版相同的问题。我用上述说明解决了这个问题:

将群集名称更改回“test Cluster”

启动群集:

cqlsh> UPDATE system.local SET cluster_name = 'Cassendra Cluster' where key='local';
cqlsh> exit;
$ nodetool flush system

停止群集:

$sudo service dse stop;sudo service datastax-agent stop

编辑文件:

$ sudo vi /etc/dse/cassandra/cassandra.yaml
cluster_name: 'Cassendra Cluster'

启动群集:

$sudo service dse start;sudo service datastax-agent start

检查安装日志:

 $ cat /var/log/cassandra/output.log

答案 3 :(得分:9)

对于Cassandra 3.0.5,我厌倦了Lyuben Todorov的答案,但它错过了一个关键部分:

bash $ ./nodetool flush

应该是:

bash $ ./nodetool flush system

,如here

答案 4 :(得分:3)

对于Cassandra 3.7,您应该将./nodetool flush替换为./nodetool flush system。否则它将无法工作。

答案 5 :(得分:0)

如果cassandra未运行,您可以擦除数据文件夹。

rm -rf /usr/lib/cassandra/data/*

这将清除具有错误群集名称的系统表。 \ 当您在cassandra中使用正确的群集名称重新启动cassandra.yaml时,所有内容都将重新生成,您应该会很好。

答案 6 :(得分:0)

对于Bitnami认证的Cassandra-3.11.5

以下是对我有用的解决方案:

  1. 停止Cassandra服务
sudo /opt/bitnami/ctlscript.sh stop cassandra
  1. 删除系统数据
sudo rm -rf /opt/bitnami/cassandra/data/data/system/*
  1. 启动Cassandra服务
sudo /opt/bitnami/ctlscript.sh start cassandra