卡桑德拉节点工具 repair/upgrade

cassandra nodetool repair/upgrade

我有一个版本为 2.0.9 运行ning 的 cassandra 集群。 Nodetool 从一开始就没有 运行ning(因为没有要求它安排这些修复)。 每个节点有大约 8GB 的​​数据。这对我来说似乎很小。 当我尝试 运行 nodetool 修复时,它似乎需要永远(2 天后未完成)。

我没有看到任何进展。我一直在阅读线程,他们告诉您检查 compactionstats 和 netstats,但那些表明没有流量。但是,nodetool 修复命令永远不会退出。这对我来说似乎不正常。我收到有关系统密钥空间正在修复并且一切正常的消息。然而,我们放入其中的实际数据并没有 return 任何东西。 所有节点都启动了。我已经在 system.log (CentOS 6 BTW) 中检查了错误,但没有任何错误。我已经启动了一个命令来检查命令和响应的数量是否仍在上升(确实如此),但是我想知道这是否可能来自其他原因,或者这是否与 nodetool 修复直接相关。 似乎没有任何 IO/net 饱和度。 于是昨天我又开始用一个工具范围-repair.py进行修复。 最近 12 小时没有额外输出。 最后的输出是:

INFO       2015-11-01 20:55:46,268 repair               line: 296 : [1/256] repairing range (-09214247901397780884, -09166106147119295777) in 100 steps for keyspace <all>

此修复(或只是修复被挂起)的主要问题是我们想要升级 cassandra 以进行应用程序部署。该程序说首先进行 nodetool 修复。在开始升级之前这真的是必要的吗?也许 nodetool 工作效率更高(你现在也有一个增量选项)。

谁能帮帮我?非常感谢!

我不确定这是否完全解决了问题,但是在滚动重启整个集群后,nodetool 修复似乎能够在它之前没有完成的地方完成。对于另一个键空间,我遇到了一个问题,我必须一遍又一遍地开始这个过程才能取得任何进展。我使用 range_repair.py 允许我跳到某个标记,这样我就可以慢慢往上走。 最后,我使用了 dry-运行 和 steps 选项(1 步)并将其定向到一个文件。然后我用 sed 过滤了第一列并执行了那个文件。如果命令似乎挂起,您可以记下它,然后按 CTRL-C 并重新运行。一般我第二次或第三次就成功了运行。