没有足够的副本可用于一致性为 1 的查询(需要 1 个副本,但只有 0 个活动副本)

2024-03-27

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

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

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

或者我误解了错误消息?

Thanks.


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

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

如果您希望能够处理超过 1 个节点不可用的情况,您可以做的是查看改变你的键空间 http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/alter_keyspace_r.html设置更高的复制因子,在本例中最好是三个,然后运行节点工具修复 http://www.datastax.com/documentation/cassandra/2.0/cassandra/tools/toolsRepair.html在每个节点上获取所有节点上的所有数据。通过此更改,您将能够在丢失 2 个节点的情况下以一致性级别 1 进行读取。

这个cassandra参数计算器 http://www.ecyrd.com/cassandracalculator/对于理解节点数、复制因子和一致性级别的考虑因素是一个很好的参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

没有足够的副本可用于一致性为 1 的查询(需要 1 个副本,但只有 0 个活动副本) 的相关文章

随机推荐