2014-02-25 65 views
37

当我收到此错误时,我该如何构建新的Cassandra节点?cassandra - 已保存的群集名称Test Cluster!=已配置名称

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' 

请问该如何解决?

回答

49

可以重命名集群,而不通过更新它在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中的新名称(每个节点上的仍为

+0

这些是什么? – Tampa

+0

检查'cassandra.yaml'中的'data_file_directories','commitlog_directory'(和2.1 flush_directory)设置 –

+1

dirs位于/ var/lib/cassandra/commitlog /var/lib/cassandra/data中....删除或冲洗dirs的内容? – Tampa

11

我与Datastax4.7企业版有相同的问题。

更改群集名称改回 “测试集群”

启动集群:

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 
+1

如果您退出而不退出;它不会工作.. –

10

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是非常有用的。

+0

这帮助我重置群集名称,以便我可以按照https://support.datastax.com/hc/en-us/articles/205289825-更改群集名称 –

+0

链接已死 – Hasson

9

对于卡桑德拉3.0.5,我累了,答案由Lyuben Todorov但它缺少的重要组成部分:

bash $ ./nodetool flush 

应该是:

bash $ ./nodetool flush system 

here

3

对于卡桑德拉3.7你应该用./nodetool flush system替换./nodetool flush。否则它将无法工作。

-2

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

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

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

+2

删除所有数据确实解决了问题,但我不确定这是建议人们的最佳选择。 – Jacob

相关问题