Cassandra节点存储已损坏

时间:2018-02-16 18:09:17

标签: cassandra

我有一个2 Datacenter of cluster,其复制因子为X-2和Y-1,

从数据中心X:一个节点的数据被破坏或破坏。

我已经从机器上更换了存储设备,现在我有相同的节点但没有数据。

我想再次将此节点附加到Datacenter-X,但我不知道如何将数据复制到此节点,或者如何保持节点对数据丢失的一致性。

我知道Node更换数据中心,但我不知道有关同一节点的存储替换。

1 个答案:

答案 0 :(得分:1)

如果我把你的数据复制了3份,那么你应该没问题。

如果您的节点丢失了存储空间,请将其视为一个死节点,您可以将其替换为替换完全无效节点的方式,如下所述:

https://docs.datastax.com/en/cassandra/2.1/cassandra/operations/opsReplaceNode.html

更新: 在你的情况下,你在cassandra术语中丢失了节点,因为你在ssd上丢失了它的数据,因此你的集群已经死了。您的物理节点保持不变,只能更换磁盘。

现在,如果您有备份 - 只需将其恢复(/ var / lib / cassandra / *和/ etc / cassandra / *)并运行修复即可完成。

如果不是更换节点,请设置cassandra,放置你的配置并启动cassandra。但你很可能会看到这样的事情:

java.lang.RuntimeException: A node with address /10.20.30.40 already exists,
cancelling join. Use cassandra.replace_address if you want to replace this node.

咦? Cassandra仍然知道有一个节点有该IP地址并拒绝加入。您需要使用以下命令更新cassandra-env.sh

JVM_OPTS="$JVM_OPTS -Dcassandra.replace_address=10.20.30.40" 

可能发生的最后一件事 - 您的节点不会自动引导。当节点是种子节点时会发生这种情况。在这种情况下,运行nodetool rebuild