退役后如何重用cassandra节点?

时间:2017-10-26 15:57:36

标签: cassandra cassandra-3.0 nodetool

我有一个包含2个节点的集群(节点1和节点2)。

在淘汰节点2之后,我想将服务器用作新的Cassandra数据库用于其他目的,但是一旦我重新启动此消息就会出现:

  

org.apache.cassandra.exceptions.ConfigurationException:此节点是   退役并且不会重新加入戒指,除非   cassandra.override_decommission = true已设置,或全部已存在   数据被删除,节点再次被引导

所以我删除了所有现有数据。

但我不希望节点再次被引导(既不重新加入前一个环)又要成为一个全新的纯Cassandra数据库。

旧节点不在种子列表中。

Cassandra版本:3.9

编辑:我想我被误解了,对不起。退役后,我希望:

  • Db1:节点1
  • Db2:节点2

两个不相关的数据库,完全分开。那是因为我们想要重新使用再次托管node2的机器来在另一个环境中部署Cassandra DB。

3 个答案:

答案 0 :(得分:1)

不要使用override_decommission。该标志仅用于重新加入同一个集群。

您应该删除节点上的所有数据文件(Cassandra将在启动时重新创建系统表)。最重要的是,你需要在cassandra.yaml中更改种子。我怀疑它仍然是节点1的ip,因此您需要将其更改为节点2(本身)。

答案 1 :(得分:0)

使用选项 cassandra.override_decommission:true

答案 2 :(得分:0)

使用该选项,cassandra.override_decommission = true。另外,请注意cluster_name的定义是cassandra.yaml:

  

群集的名称。此设置可防止一个逻辑中的节点   集群加入另一个集群。群集中的所有节点都必须具有   相同的价值。

因此,确保在cassandra.yaml中也为cluster_name选项使用另一个值。

尝试以下步骤:

  • 在cqlsh中运行:UPDATE system.local SET cluster_name =' new_name' 其中key =' local';
  • nodetool flush以保持数据
  • nodetool decommission
  • 停止节点
  • 更改cassandra.yaml中的名称
  • 清理节点sudo rm -rf / var / lib / cassandra / * / var / log / cassandra / *但我只是将这些文件移到其他地方,直到你得到你想要的状态
  • 开始节点

请检查12