【问题标题】:Not enough replica available for query at consistency ONE (1 required but only 0 alive)没有足够的副本可用于一致性查询 ONE(需要 1 但只有 0 活着)
【发布时间】:2015-03-14 12:34:14
【问题描述】:

我有一个包含三个节点的 Cassandra 集群,其中两个已启动。他们都在同一个DC。当我的 Java 应用程序向集群写入数据时,我的应用程序中出现错误,这似乎是由 Cassandra 的某些问题引起的:

原因:com.datastax.driver.core.exceptions.UnavailableException:没有足够的副本可用于一致性查询 ONE(需要 1,但只有 0 活着) 在 com.datastax.driver.core.exceptions.UnavailableException.copy(UnavailableException.java:79)

没有意义的部分是“1 需要,但只有 0 活着”语句。有两个节点启动,这意味着一个节点应该是“活动的”以进行复制。

还是我误解了错误信息?

谢谢。

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    您可能会收到此错误,因为您正在查询的表所属的键空间的复制因子的复制因子为 1,对吗?

    如果您正在读取/更新的分区没有足够的可用副本(具有该数据的节点)来满足一致性级别,您将收到此错误。

    如果您希望能够处理超过 1 个不可用的节点,您可以查看 altering your keyspace 以设置更高的复制因子,在这种情况下最好是三个,然后在每个节点上运行 nodetool repair node 获取所有节点上的所有数据。通过此更改,您将能够在丢失 2 个节点的情况下以 1 个一致性级别进行读取。

    This cassandra parameters calculator 是了解节点数、复制因子和一致性级别注意事项的一个很好的参考。

    【讨论】:

    • 谢谢。是的,没错,它的复制因子为 1。但我不明白的是,我确实有一个辅助节点已启动。所以:一个主节点和一个可以复制到的节点。就我而言,只有三个节点之一不可用。
    • 复制因子为 1 表示每行数据只有 1 个副本。因此,如果您有 1 个节点关闭且 RF 为 1,则意味着该节点上的所有数据现在都不可用。见:datastax.com/documentation/cassandra/2.0/cassandra/architecture/…
    • 谢谢。您发布链接的那个计算器非常有用。
    • 我也碰到了这个。就我而言,这是因为我的 NetworkTopologyStrategy 没有包含复制到我查询的 DC。
    【解决方案2】:

    我今天打了这个,因为数据中心字段区分大小写。如果您的 dc 是 'somedc01' 这将不起作用:

    replication = 
        {
            'class': 'NetworkTopologyStrategy',
            'SOMEDC01': '3'  #  <-- BOOM!
        }
        AND durable_writes = true;
    

    无论如何,它不是那么直观,希望这会有所帮助。

    【讨论】:

    • 这对我有帮助。我有单节点配置,错误与主题相同。
    【解决方案3】:

    在我的情况下,我收到一条消息 0,但 cassandra 已启动且 cqlsh 工作正常,问题是从 java 访问:查询是针对完整表的,并且某些记录不可访问(包含它们的所有节点都已关闭) . from cqlsh, select * from table works,只显示可访问的记录。因此,解决方案是恢复停机节点,并可能通过以下方式更改复制因子:

     ALTER KEYSPACE ....
    nodetool repair -all 
    

    然后nodetool状态查看变化和集群结构

    【讨论】:

      【解决方案4】:

      对我来说,我的 endpoint_snitch 仍然设置为 SimpleSnitch,而不是像 GossipingPropertyFileSnitch 这样的东西。这导致多 DC 集群无法正确连接并出现上述错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-10
        • 2019-01-19
        • 2020-06-07
        • 1970-01-01
        • 2015-11-26
        • 1970-01-01
        • 2018-04-14
        • 2020-10-23
        相关资源
        最近更新 更多