我有一个运行版本2.0.9的cassandra集群。 Nodetool从一开始就没有运行(因为没有要求安排这些修复)。 每个节点有大约8GB的数据。这对我来说似乎相当小。 当我尝试运行nodetool修复时,它似乎需要永远(2天后没有完成)。
我没有看到任何进展。我一直在阅读线程,他们告诉你检查compactionstats和netstats,但那些表明没有流量。但是,nodetool repair命令永远不会退出。这对我来说似乎不正常。我收到有关正在修复系统密钥空间的消息。但是,我们放入的实际数据不会返回任何内容。 所有节点都已启动。我已经在system.log(CentOS 6 BTW)中检查了错误,但没有。我已经启动了一个命令来检查命令和响应的数量是否仍然在增加(这种情况)但是我想知道这可能来自其他东西,或者这是否与nodetool修复直接相关。 似乎没有任何IO /净饱和度。 所以昨天我再次使用工具range-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工作效率更高(你现在也有增量选项)。
谁能在这帮助我?非常感谢提前!
答案 0 :(得分:1)
我不确定这是否完全解决了这个问题,但是在对整个集群进行滚动重启之后,似乎nodetool修复能够在之前没有完成的地方完成。对于另一个密钥空间,我遇到了一个问题,我不得不一遍又一遍地开始这个过程以取得任何进展。我使用了range_repair.py,它允许我跳到某个令牌,所以我可以慢慢上升。 最后,我使用了干运行和步骤选项(1步)并将其指向文件。然后我用sed过滤了第一列并执行了该文件。如果命令似乎挂起,你可以记下来,CTRL-C然后再重新运行。一般来说,我第二次或第三次成功运行它。