4

我有一个由三个节点组成的 Cassandra 2.0.1 集群和具有复制因子 3 的主键空间。由于集群中一个额外的第四个节点意外配置错误,我尝试首先使用不必要的“nodetool decommission”来修复它(在节点 db2 上)在做正确的“nodetool removenode”之前。

现在,运行停用的节点 db2 似乎看到另一个节点的状态为“Down”,即使其他人认为一切正常。此外,当我在所有节点上运行“nodetool ring”时,db1 给出“Replicas:2”,其中 db2 和 db3 在列表顶部有“Replicas:3”。

键空间包含我不想丢失的数据,并且集群无法完全关闭,因为一直在插入新数据。在不危及现有数据和新数据的情况下解决问题的好方法是什么?

下面混淆了 nodetool 状态输出。

[db1 ~]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  xx.xx.xx.99    30.38 MB   256     100.0%            cccccccc-cccc-cccc-cccc-cccccccccccc  rack1
UN  xx.xx.xx.122   28.93 MB   256     100.0%            aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa  rack1
UN  xx.xx.xx.123   29.59 MB   256     100.0%            bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb  rack1

[db2 ~]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
DN  xx.xx.xx.122   28.93 MB   256     100.0%            aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa  rack1
UN  xx.xx.xx.99    30.38 MB   256     100.0%            cccccccc-cccc-cccc-cccc-cccccccccccc  rack1
UN  xx.xx.xx.123   29.59 MB   256     100.0%            bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb  rack1

[db3 ~]# nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address        Load       Tokens  Owns (effective)  Host ID                               Rack
UN  xx.xx.xx.122   28.93 MB   256     100.0%            aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa  rack1
UN  xx.xx.xx.99    30.38 MB   256     100.0%            cccccccc-cccc-cccc-cccc-cccccccccccc  rack1
UN  xx.xx.xx.123   29.59 MB   256     100.0%            bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb  rack1
4

1 回答 1

4

Aaron Morton 详细描述了他如何调试类似的问题。您应该检查集群中的 gossip 状态。

  • 检查状态nodetool gossipinfo
  • 启用以下跟踪日志记录:

    log4j.logger.org.apache.cassandra.gms.Gossiper=TRACE log4j.logger.org.apache.cassandra.gms.FailureDetector=TRACE

希望您可以从中更好地了解集群中发生了什么。

于 2013-11-06T17:24:59.767 回答