【问题标题】:Cassandra Rebuild starts from beginning everytime it is restartedCassandra Rebuild 每次重新启动时都会从头开始
【发布时间】:2021-09-10 21:29:13
【问题描述】:

需要帮助。最近我们在现有集群中添加了新的 DC。我们在新 DC 中的每个节点上使用重建命令将历史数据从旧 DC 流式传输到新 DC。

我面临的问题是,由于高数据量和较长的 GC 暂停,旧 DC 节点中的 Cassandra 服务停止,并且当它发生时,重建也停止。当我们再次启动它时,它显示它再次流式传输相同数量的数据。

我们使用的是 Cassandra 3.11.x。根据 Cassandra 文档,如果重建命令停止并且您再次运行它,它将从停止的偏移量恢复流式传输。但似乎没有发生。

任何人都可以帮助了解重新启动后重建的工作原理以及如何克服这个问题。

提前致谢

【问题讨论】:

  • 您是否尝试同时在所有节点上运行重建?还是一次一个?
  • 一次一个。我的一个观察结果是,如果新节点从任何旧 DC 节点完成整个流式传输,则该令牌范围保存在 available_ranges 表中,然后如果我再次运行重建,则它不会从该节点流式传输数据。跨度>

标签: cassandra cassandra-3.0


【解决方案1】:

您没有具体说明“似乎没有发生”的意思。理想情况下,您需要明确描述您如何确定它没有“发生”。否则,给你一个有意义的答案有点困难。

在任何情况下,节点都会记录哪些令牌范围和哪些键空间已被流式传输并可供服务。此信息存储在system.available_ranges 表中。

一旦给定键空间的特定范围的令牌已成功流式传输到节点,就会在 available_ranges 表中创建一个条目,因此如果您尝试重新运行 rebuildbootstrap resume,完成的范围不会再次重新流式传输。干杯!

【讨论】:

  • 嗨,埃里克,感谢您的回复。我虽然doesn't seem to be happening 将被推断为从头开始,正如我在问题中提到的那样。情况是,如果在第一次运行重建时,netstats 显示X TB 被转移,那么如果你再次开始重建,它会再次显示你仍然X TB 被转移。这个尺寸并没有减少。我希望这澄清了我会检查available_ranges 表。
  • 我在旧的以及新的 DC 中都签入了,available_ranges 表是空的。
  • 一个观察,如果重建它在两者之间停止并且来自任何节点的流式传输完成,那么只有该节点的数据不会通过再次触发重建而再次流式传输,但对于所有其他节点,它会从头开始流式传输数据。重建时是否有任何设置来存储已经流式传输的数据?
猜你喜欢
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
相关资源
最近更新 更多