从失败的 Cassandra 中恢复的过程 bootstrap

Procedure to recover from failed Cassandra bootstrap

场景:新节点已添加到 Cassandra 集群。该节点被八卦,分配了令牌范围,但在来自对等点的任何流媒体开始之前,错误地通过 "service stop cassandra" 手动关闭了 Cassandra。我们也从未见过处于 UJ 状态的节点。在这个节点重新启动后,我们看到它处于 UN 模式并且提交日志文件在增长,但数据目录中的数据不多。我们的一个 KS 上有 RF=1。

问题:最好的恢复程序是什么?关注点不是从 RF=1 键空间丢失数据,而是确保数据流到新节点的工作正常。

您可以通过两种方式添加新节点:

  1. 将新节点的auto_bootstrap设置为true并加入集群
  2. 将新节点的auto_bootstrap设置为false,加入集群。手动进行修复以流式传输数据并更正节点中的副本。

添加新节点后。您的旧节点将有旧令牌和一些旧数据,这些数据不会被删除,直到您在成功添加新节点后对旧节点进行清理。

在你的情况下,你错误地停止了中间的新节点。因此,您可以按照以下步骤更正副本并检查您的节点工具状态以检查负载是否已分配到新节点:

  1. 进行全面修复。 (对于 Cassandra 2.2 及更高版本,默认情况下它以增量修复方式运行。因此请检查并进行完整修复,而不是增量修复)
  2. 检查 nodetool 状态数据是否流式传输,负载是否分配到新节点