【问题标题】:Now getting error "message="Cannot achieve consistency level ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'ONE'}"现在收到错误“消息=“无法达到一致性级别ONE”信息={'required_replicas':1,'alive_replicas':0,'consistency':'ONE'}“
【发布时间】:2016-07-20 09:55:26
【问题描述】:

Cassandra 版本:dsc-cassandra-2.1.9

有 3 个节点,其中一个已停机很长时间。把它带回来并退役。然后做了一个nodetool removenode。

当我尝试进行 cql 查询时,出现上述错误。

最初认为这可能是因为复制策略是 SimpleStrategy。 ALTER KEYSPACE history WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'dc1' : 2};也是如此

并更改了endpoint_snitch: GossipingPropertyFileSnitch 而不是SimpleSnitch

在两个节点上进行了 nodetool 修复并重新启动了 cassandra 服务

但问题仍然存在。我该怎么办?

编辑1:机器A的Nodetool状态

--  Address         Load       Tokens  Owns    Host ID                               Rack
UN  192.168.99.xxx  19.8 GB    256     ?       xxxxxxxx-xxxx-xxx-xxxx-xxxxx4ea  RAC1
UN  192.168.99.xxx  18.79 GB   256     ?       xxxxxxxx-xxxx-xxx-xxxx-xxxxxx15  RAC1

机器B的nodetool状态输出

--  Address         Load       Tokens  Owns    Host ID                               Rack
UN  192.168.99.xxx  19.8 GB    256     ?       xxxxxxxx-xxxx-xxx-xxxx-xxxxxxxx4ea  RAC1
UN  192.168.99.xxx  18.79 GB   256     ?       xxxxxxxx-xxxx-xxx-xxxx-xxxxxxxxf15  RAC1

【问题讨论】:

  • 退役后为什么要做removenode?你应该只需要解压。此外,针对两个剩余节点运行 nodetool 状态的输出会很有帮助。
  • 添加了上面的状态输出。主机 ID 匹配。做了一个removenode,因为退役后nodetool状态仍然显示退役节点

标签: cassandra cassandra-2.0 cql cql3


【解决方案1】:

奇怪的是,在 Owns 列下没有 %,只有 ?。过去,当我引导一个新的 C* 集群并使用 SimpleStrategy 和 SimpleSnitch 时,我也遇到过同样的问题。我确实喜欢你一个 ALTER KEYSPACE 来切换到 NetworkTopology 和 GossipingPropertyFileSnitch 但它没有解决我的问题所以我从头开始重建集群(幸运的是我里面没有数据)

如果您在某处有数据备份,只需尝试从头开始重建 2 个节点。

否则,请考虑在一个节点上备份您的 sstable 文件并重建集群并将 sstable 放回原处。请小心,因为可能需要重命名一些文件名/文件夹

【讨论】:

    猜你喜欢
    • 2014-12-30
    • 2016-10-12
    • 2017-01-08
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2018-08-14
    相关资源
    最近更新 更多