1

我让 Cassandra 集群跨两个数据中心运行,由于某种原因,一个数据中心被关闭了一段时间,现在我打算把它带回来。我正在考虑两种方法:一种是启动这个数据中心的所有Cassandra节点,并在每个节点上一个一个地运行“nodetool repair”。但看起来“修复”需要很长时间。我之前有过修复一个节点6GB数据的经验,一个节点(3节点集群)花了我5个小时。我现在有更多关于集群的数据,无法想象需要多长时间。所以我在想我是否可以运行重建而不是修复。我可以删除此数据中心上的所有旧数据,然后像添加新数据中心一样重新构建它。但不确定它是否有效以及性能如何。

有什么想法吗?任何建议将不胜感激。提前致谢。

4

1 回答 1

2

如果数据中心停机超过 10 天,那么重建是唯一的选择。这与墓碑有关。我不是 100% 确定这在不同的数据中心是如何工作的,但是如果您的服务器停机超过 10 天,那么在实时服务器中删除的任何数据都已被删除并保留 10 天,然后完全删除。如果突然你的宕机服务器从睡眠中唤醒,所有删除的数据都没有被删除,那么它将通过读取修复或定期修复操作重新填充回环。

另一件需要考虑的事情是,自从数据中心宕机以来,有多少数据发生了变化/删除。如果很多,那么重建的工作显然更少。如果没有,那么可能修复会更快。

您可以创建另一个数据中心,向其中添加节点,auto_bootstrap: false然后运行nodetool rebuild <live dc name>

祝你好运!

于 2013-11-15T23:26:22.357 回答