【问题标题】:Methods to Verify Cassandra Node Sync验证 Cassandra 节点同步的方法
【发布时间】:2012-04-10 17:35:41
【问题描述】:
我有一个复制因子为 2 的 3 节点 Cassandra 集群。
因为其中一个节点已更换为新节点。
我已经使用“nodetool repair”来修复所有的键空间。
但不知道如何验证所有键空间是否已同步。
之前,刚刚发现这篇文章会有所帮助,但有点。
Cassandra Data Replication problem
有没有办法在 Cassandra 中验证复制因子 > 1 的键空间?
非常感谢。
斯蒂芬
【问题讨论】:
标签:
cassandra
replication
【解决方案1】:
一种检查方法是使用nodetool getendpoints。传递一些随机密钥并检查哪些端点持有该密钥。这应该显示副本是否放置在两个节点中。
【解决方案2】:
首先,如果您再次运行 nodetool repair 并且传输的数据很少(假设自上次运行以来所有节点都已启动),则您知道数据几乎完全同步。您可以查看日志以了解在此过程中传输了多少数据。
其次,您可以通过使用 nodetool cfstats 查看写入计数来验证所有节点是否获得了相似数量的写入。请注意,每次 Cassandra 重新启动时都会重置写入计数值,因此如果它们没有在同一时间重新启动,您必须查看它们随着时间的推移增加的速度。
最后,如果您只想抽查一些最近更新的值,您可以尝试以一致性级别 ONE 读取这些值。如果您始终获得最新版本的数据,您就会知道副本很可能是同步的。
作为一般说明,复制是 Cassandra 根深蒂固的一部分,它极不可能在您没有注意到的情况下自行失败。通常,一个节点会在问题开始后不久被标记。另外,我假设您正在以一致性级别 ONE 或 ANY 编写;如果有更高的值,您肯定知道两个副本都已收到写入。