将 Cassandra 备份恢复到新节点

Restore Cassandra backup to new node

我在 AWS EC2 的开发环境中有一个 4 节点的 Cassandra 集群,由于某种原因,所有节点都终止了,所以我用新的 IP 地址和机器名称启动了新的 EC2 实例。

我的问题是我可以将快照备份恢复到具有新 IP 地址的新节点吗? Cassandra 是否需要具有相同的机器名称和 IP 地址才能正确恢复备份? 换句话说,我可以将备份还原到具有不同IP和机器名称的节点吗?

如果您没有丢失带有数据的 EBS 卷,则只需将它们安装到新机器上 - 您需要具有相同数量的节点。在这种情况下,您将获得先前状态的工作集群,因为 Cassandra 节点由节点加入集群时创建的 UUID 标识,因此之后您可以毫无问题地更改 IP 地址、机器名称等。

如果你丢失了数据磁盘,那么你可以将备份恢复到新机器上,但会更长。恢复备份的方法取决于您如何进行备份以及如何设置新节点。但是 sstableloader 应该适用于所有情况。而且您不需要像以前一样拥有相同的 IP。

Alex 部分正确,因为群集大小(节点数)需要匹配。 与此相关的另一部分是,backup/snapshot 仅适用于与它所在的原始节点具有匹配令牌范围的节点。

如果RF < 节点数,则每个备份将不会包含所有数据。因此,您需要确保正确的备份最终出现在正确的节点上。如果你 copy/restore 数据到一个不负责它的节点(从令牌范围的角度来看),它将无法访问。

如果您想确定,可以将所有数据复制到每个节点,还原,然后 运行 一个 nodetool cleanup。这将起作用,假设每个节点的磁盘都有足够的 space。