英文:
Apache Cassandra node return different data
问题
我们有一个由5个节点组成的Apache Cassandra集群,复制因子为2。
所有健康监控命令,如'nodetool status'等,都没有显示错误。
但是节点实际上并不同步。
在不同节点上发出相同请求可能会返回不同的值。
而且在同一节点上发出相同请求可能会返回不同的值。
问题 - 除了'nodetool repair'之外,是否有一种方法来强制节点同步?
是否有一种方法可以在运行中的生产集群上使所有数据完全复制到所有节点上(增加复制因子)?
英文:
We have 5 nodes Apache Cassandra cluster with replication factor 2.
All health monitoring commands like 'nodetool status' or so show no error.
But nodes not really in sync.
Same request on different nodes may return different values.
More over same request on same node might return different values
Question - is there a way except 'nodetool repair' to force synchronizaiton over nodes?
Is there a way to make all data fully replicated on over all nodes (increase replication factor) on running production cluster?
答案1
得分: 2
你需要在运行查询之前,在CQLSH(以及很可能在应用程序上)设置CONSISTENCY LOCAL_QUORUM;
。另外,复制因子为2
并不高效,因为2
的RF/2+1等于2
。因此,即使数据的一个副本处于离线状态,您的应用程序也会面临停机时间。最好一开始就将键空间级别的RF(复制因子)调整为3
,这样当您使用LOCAL_QUORUM
一致性级别时,可以容忍1
个副本的故障。
此外,请确保您的集群中的修复操作正在正确运行。
英文:
You need to set CONSISTENCY LOCAL_QUORUM;
on the CQLSH (& on your application most likely) prior to running your query. Also, a replication factor of 2
is just not efficient as RF/2+1 of 2
is 2
. So, even if one of the replica holding the data is down, your application will face downtime. It is better to adjust the RF (at the keyspace level) to be 3
to begin with as you can tolerate 1
replica failure when you're dealing with LOCAL_QUORUM
consistency level.
Also, ensure your repairs are running correctly in this cluster.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论