【问题标题】:Not enough replica available for query at consistency SERIAL (2 required but only 1 alive)没有足够的副本可用于一致性 SERIAL 的查询(需要 2 个但只有 1 个活动)
【发布时间】:2019-01-19 12:03:11
【问题描述】:

专家,

我有以下配置3节点集群(Cassandra 2.1):

 - Replication factor of 2
 - Consistency level ONE
 - Driver consistency level SERIAL
 - SimpleStrategy
 - GossipingPropertyFileSnitch

使用此配置,如果我关闭一个节点,我会收到以下错误:

Not enough replica available for query at consistency SERIAL (2 required but only 1 alive)

数据均匀分布在所有节点上,nodetool 状态正确显示一个节点在运行的 2 个 cassandra 节点上已关闭

CONSISTENCY ONE 和 2 个节点 ups,为什么需要两个副本节点都 up???

我还读到了 SERIAL 驱动器一致性 wrt WRITE 失败: 如果三个节点之一关闭,Paxos 提交会在以下情况下失败:

  • CQL 查询配置的一致性级别 ALL
  • 驱动程序配置的串行一致性级别 SERIAL
  • 复制因子为 3

如果我将复制因子设置为 3,这将有效。但我认为没有必要这样做。

我错过了什么吗?

【问题讨论】:

    标签: cassandra cassandra-2.0


    【解决方案1】:

    您在 Cassandra 中发现了 Paxos 协议的隐藏宝石之一。在底层,Paxos 的工作方式是对其调用使用类似 QUORUM 的一致性级别。

    请注意,它在您的错误消息中抱怨 SERIAL 一致性级别,而不是您设置的一致性级别 ONE。在大多数情况下,LWT 会忽略设置的正常一致性级别。它遵循 SERIAL 或 LOCAL_SERIAL 一致性级别,几乎直接映射到 QUORUMLOCAL_QUORUM 节点。

    两个节点的法定人数是:两个。因此,当一个节点关闭时,您会收到此错误消息。

    【讨论】:

    • 这有帮助。谢谢一月。
    猜你喜欢
    • 2020-06-07
    • 2015-11-10
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2018-04-14
    • 1970-01-01
    相关资源
    最近更新 更多