2012-03-27 34 views
5

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

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

是否有任何方法来验证卡桑德拉复制因子> 1的密钥空间?

非常感谢。

马布里

回答

5

首先,如果你再次运行nodetool修复和很少的数据被传输(假设所有的节点,因为你跑了最后一次已高达),你知道数据几乎完全同步。您可以查看日志以查看在此过程中传输的数据量。

其次,通过查看nodetool cfstats的写入计数,可以验证所有节点的写入次数是否相同。请注意,每次Cassandra重新启动时,写入计数值都将被重置,因此如果它们没有在同一时间重新启动,则必须查看它们每次都会随着时间的推移而快速增加。最后,如果您只想查看一些最近更新的值,您可以尝试读取一致性级别为ONE的那些值。如果您始终获得最新版本的数据,则会知道副本可能同步。

作为一般说明,复制是卡桑德拉这样一个根深蒂固的部分,它不可能在没有你注意的情况下自行失效。通常情况下,节点将在问题开始后立即标记。另外,我假设你正在写一致性级别ONE或ANY;更高的任何东西,你肯定知道这两个副本都已经收到了写入。

1

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