Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 没有足够的副本可用于一致性1上的查询(需要1个副本,但只有0个副本处于活动状态)_Cassandra - Fatal编程技术网

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

Cassandra 没有足够的副本可用于一致性1上的查询(需要1个副本,但只有0个副本处于活动状态),cassandra,Cassandra,我有一个Cassandra集群,有三个节点,其中两个在上面。他们都在同一个DC。当我的Java应用程序写入集群时,我的应用程序中出现了一个错误,这似乎是由Cassandra的某些问题引起的: 原因:com.datastax.driver.core.exceptions.UnavailableException:没有足够的副本可用于一致性查询,需要1个副本,但只有0个副本处于活动状态 位于com.datastax.driver.core.exceptions.UnavailableExceptio

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

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

没有意义的是,1是必需的,但只有0活动语句。上面有两个节点,这意味着其中一个应该处于活动状态以进行复制

还是我误解了错误信息


谢谢。

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

如果您正在读取/更新的分区没有足够的可用副本节点来提供该数据以满足一致性级别,则会出现此错误

如果您希望能够处理多个节点不可用的情况,那么可以研究设置更高的复制因子,在本例中最好设置三个,然后在每个节点上运行一个,以获取所有节点上的所有数据。通过此更改,您将能够在丢失2个节点的情况下以1的一致性级别进行读取


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

因为数据中心字段区分大小写。如果您的dc为“somedc01”,则这将不起作用:

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

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

在我的例子中,我得到了一条消息0,但cassandra启动了,cqlsh工作正常,问题是从java访问:查询是为了一个完整的表,一些记录无法访问所有包含它们的节点。从cqlsh中,从表格works中选择*仅显示可访问的记录。因此,解决方案是恢复停机节点,并可能通过以下方式更改复制系数:

 ALTER KEYSPACE ....
nodetool repair -all 

然后nodetool status查看更改和集群结构

对于我来说,我的endpoint\u snitch仍然设置为SimpleSnitch,而不是gossippropertyfilesnitch。这导致多DC群集无法正确连接,并在上述错误中表现出来。

谢谢。是的,没错,它的复制因子是1。但我不明白的是,我确实有一个备用节点。所以:一个主节点和一个它能够复制到的节点。在我的例子中,三个节点中只有一个不可用。复制因子为1意味着每行数据只有一个副本。因此,如果有1个节点关闭,且RF为1,则意味着该节点上的所有数据现在都不可用。看:谢谢。你贴了链接的那个计算器非常有用。我也碰到了这个。就我而言,这是因为我的NetworkTopologyStrategy没有将复制包含到我查询的DC中。这对我很有帮助。我有单节点配置,错误与主题中的相同。