2016-09-26 73 views
1

我们有三个cassandra集群的区域,每个区域有两个节点,共有6个。现在我们又增加了3个区域,总共有12个cassandra节点。添加节点后,我们更新了复制因素并启动了节点工具修复。但是这个命令挂了48个多小时,还没有完成。当我们查看日志1或2时,AntiEntropySessions仍处于等待状态,因为有些CF没有完全同步。所有的AntiEntropySessions都可以从所有CF的所有节点成功获取merkle树。但是由于某些节点没有为某些CF完成修复,所以会导致未决的AntiEntropySessions,并且修复处于挂起状态。Cassandra:悬挂节点工具修复

我们正在使用Cassandra 1.1.12。我们现在无法升级Cassandra。 我们重新启动了节点并再次开始修复,但仍然挂起。 我们观察到一个CF在最初的3个区域频繁读取和写入,在修复过程中处于活动状态的所有时间都不能完全同步。

是否有必要在运行修复时不应该在任何CF中进行任何读取/写入操作? 或者告诉我这里可能是什么问题?

回答

1

卡桑德拉1.1是非常古老的,所以它很难记住确切的问题,但有流媒体问题,然后可能会挂起。有些原因是因为读取超时或连接被重置。既然你已经过去了1.1.11,但你可以尝试进行子范围修复。

尝试找到一个小时内可以修复的适当令牌范围(保持运行范围越来越小,直到您可以完成它),将超时设置为几个小时。预计一些修复失败(超时),只需重试它们直到完成。如果在多次重试后仍然无法获得该子范围,但即使如此,如果您的分区非常广泛(可以检查nodetool cfstats),这会使其变得更糟。

一旦你得到一个完整的修复,升级像疯了似的。

+0

谢谢。子范围修复帮助我解决特定的令牌范围。 –