验证Cassandra节点同步的方法

时间:2012-03-27 07:42:29

标签: cassandra replication

我有一个3节点的Cassandra集群,复制因子为2。 因为其中一个节点已被替换为新节点。 我使用“nodetool repair”来修复所有键空间。 但是不知道如何验证所有键空间是否已同步。

之前,刚发现这篇文章会有所帮助,但有点儿。 Cassandra Data Replication problem

有没有办法用复制因子验证密钥空间> 1在Cassandra?

非常感谢。

斯蒂芬

2 个答案:

答案 0 :(得分:8)

首先,如果再次运行nodetool修复并且传输的数据非常少(假设自上次运行以来所有节点都已启动),您就会知道数据几乎完全同步。您可以查看日志以查看在此过程中传输了多少数据的数字。

其次,您可以通过查看nodetool cfstats的写入计数来验证所有节点是否获得了相似的写入次数。请注意,每次Cassandra重新启动时都会重置写入计数值,因此如果它们在大约相同的时间内没有重新启动,您将需要查看它们随着时间的推移逐渐增加的速度。

最后,如果您只是想检查一些最近更新的值,您可以尝试在一致性级别ONE读取这些值。如果您始终获得最新版本的数据,您就会知道副本可能是同步的。

总的来说,复制是Cassandra根深蒂固的一部分,如果没有你的注意,它就不太可能自行失败。通常,在问题开始后不久将标记一个节点。另外,我假设你写的是一致性级别ONE或ANY;如果有更高的值,你肯定知道两个副本都已经收到了写信。

答案 1 :(得分:1)

检查的一种方法是使用nodetool getendpoints。传递几个随机密钥并检查哪个端点持有该密钥。这应该显示副本是否放置在两个节点中。