我有一个3节点的Cassandra集群,复制因子为2。 因为其中一个节点已被替换为新节点。 我使用“nodetool repair”来修复所有键空间。 但是不知道如何验证所有键空间是否已同步。
之前,刚发现这篇文章会有所帮助,但有点儿。 Cassandra Data Replication problem
有没有办法用复制因子验证密钥空间> 1在Cassandra?
非常感谢。
斯蒂芬
答案 0 :(得分:8)
首先,如果再次运行nodetool修复并且传输的数据非常少(假设自上次运行以来所有节点都已启动),您就会知道数据几乎完全同步。您可以查看日志以查看在此过程中传输了多少数据的数字。
其次,您可以通过查看nodetool cfstats的写入计数来验证所有节点是否获得了相似的写入次数。请注意,每次Cassandra重新启动时都会重置写入计数值,因此如果它们在大约相同的时间内没有重新启动,您将需要查看它们随着时间的推移逐渐增加的速度。
最后,如果您只是想检查一些最近更新的值,您可以尝试在一致性级别ONE读取这些值。如果您始终获得最新版本的数据,您就会知道副本可能是同步的。
总的来说,复制是Cassandra根深蒂固的一部分,如果没有你的注意,它就不太可能自行失败。通常,在问题开始后不久将标记一个节点。另外,我假设你写的是一致性级别ONE或ANY;如果有更高的值,你肯定知道两个副本都已经收到了写信。
答案 1 :(得分:1)
检查的一种方法是使用nodetool getendpoints
。传递几个随机密钥并检查哪个端点持有该密钥。这应该显示副本是否放置在两个节点中。