我让Cassandra集群在两个数据中心运行,出于某种原因,一个数据中心被拆除了一段时间,现在我打算把它带回来。我正在考虑两种方法: 一种是启动该数据中心的所有Cassandra节点,并逐个在每个节点上运行“nodetool repair”。但看起来'修复'需要很长时间。我有过在节点上修复6GB数据的经验,在一个节点上花了5个小时(3个节点集群)。我现在有更多关于群集的数据,无法确定需要多长时间。 所以我在想是否可以重新构建而不是修复。我可以删除此数据中心上的所有旧数据,并将其重新构建为添加新数据中心。但不确定它是否有效以及性能如何。
有什么想法吗?任何建议将不胜感激。提前致谢。
答案 0 :(得分:2)
如果数据中心停机超过10天,则重建是唯一的选择。这与tombstones有关。我不是100%确定在不同的数据中心如何工作,但是如果你的服务器停机超过10天,那么在实时服务器中删除的任何数据都已被逻辑删除并保存10天,然后完全删除。如果所有突然崩溃的服务器从睡眠中醒来,所有删除的数据都没有被逻辑删除,那么它将通过读取修复或定期修复操作重新填充回环。
另一件需要考虑的事情是,自数据中心出现故障以来,有多少数据已更改/删除。如果很多,那么显然重建工作就不那么重要了。如果没有,那么修复会更快。
您可以创建另一个数据中心,使用auto_bootstrap: false
向其添加节点,然后运行nodetool rebuild <live dc name>