2013-12-12 65 views
6

Cassandra 1.2.9版。五节点集群,但其中一个节点因硬件故障而关闭,修复/更换ETA未知。我想解除/删除下来的节点(通知混乱所有日志)。 nodetool removenode似乎是完美的,除了它需要一个主机ID。下行节点没有主机ID(状态为null):Cassandra - 如何删除死亡节点

看来removetoken不再是nodetool的选项。

什么是删除这个死亡节点的正确方法?

+0

我打算给你一个DataStax的“替换死节点”文档的链接,但最后一步是执行一个'nodetool removenode',你所说的将不适合你。你有没有试过看'nodetool move'?从理论上讲,你可以调出替换节点(initial_token设置为死节点,减1),然后将其移动到所需的令牌范围。 – Aaron

+1

我还没有替换服务器。我尝试了removetoken;在此版本中已弃用。我试过removenode;但没有主机ID,因此失败。我尝试过移动,但没有足够的流媒体源。接下来是一个JMX命令:进入shell模式。 %jmx_invoke -m org.apache.cassandra.net:type=Gossiper unsafeAssassinateEndpoint 。空指针异常失败。仍在努力。 –

+6

以下步骤DID工作: - 1)在剩余的每个节点上,将-Dcassandra.load_ring_state = false添加到cassandra-env.sh文件中的JVM_OPTS并重新启动。 - 2)再次运行nodetool状态并确认不需要的节点已经消失。 - 3)在每个节点上,从system.peers执行delete,其中peer ='[死亡节点的IP地址]'; 4)从每个节点上的cassandra-env.sh中删除-Dcassandra.load_ring_state = false并重新启动。 –

回答