首页 文章

验证Cassandra节点同步的方法

提问于
浏览
9

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

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

有没有办法在Cassandra中验证复制因子> 1的键空间?

非常感谢 .

斯蒂芬 -

2 回答

  • 8

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

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

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

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

  • 1

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

相关问题