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

Tam*_*mpa 45 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)
Run Code Online (Sandbox Code Playgroud)

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

cluster_name: 'thisisstupid'
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Lyu*_*rov 55

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

cqlsh> UPDATE system.local SET cluster_name = 'test' where key='local';
# flush the sstables to persist the update.
bash $ ./nodetool flush
Run Code Online (Sandbox Code Playgroud)

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

  • 如果由于声明的错误而无法启动Cassandra,那么我们显然无法使用cqlsh方法.然后,我们需要删除系统密钥空间中的文件并重新启动服务. (7认同)
  • 我相信`bash $ ./nodetool flush`应该是`bash $ ./nodetool flush system`.有关详细信息,请参阅[此处](https://support.datastax.com/hc/en-us/articles/205289825-Change-Cluster-Name-) (3认同)
  • @Tampa del他们,但这将删除你的所有数据.您基本上完全擦除群集. (2认同)

Rya*_*n X 18

以上命令UPDATE SET cluster_name对我不起作用.我发现工作是遵循 DataStax文档中有关初始化多节点集群的说明:

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
Run Code Online (Sandbox Code Playgroud)

对于一些好的集群节点设置,我发现这篇博文非常有用.


小智 15

我对Datastax4.7企业版有同样的问题.我用以上说明解决了这个问题:

将群集名称更改回"test Cluster"

启动集群:

cqlsh> UPDATE system.local SET cluster_name = 'Cassendra Cluster' where key='local';
cqlsh> exit;
$ nodetool flush system
Run Code Online (Sandbox Code Playgroud)

停止群集:

$sudo service dse stop;sudo service datastax-agent stop
Run Code Online (Sandbox Code Playgroud)

编辑文件:

$ sudo vi /etc/dse/cassandra/cassandra.yaml
cluster_name: 'Cassendra Cluster'
Run Code Online (Sandbox Code Playgroud)

启动集群:

$sudo service dse start;sudo service datastax-agent start
Run Code Online (Sandbox Code Playgroud)

检查安装日志:

 $ cat /var/log/cassandra/output.log
Run Code Online (Sandbox Code Playgroud)


ham*_*ian 9

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

bash $ ./nodetool flush
Run Code Online (Sandbox Code Playgroud)

应该:

bash $ ./nodetool flush system
Run Code Online (Sandbox Code Playgroud)

就像在这里一样