cassandra 我是否可以将快照从现有节点复制到新计算机以恢复数据?

dgiusagp  于 2023-10-18  发布在  Cassandra
关注(0)|答案(2)|浏览(109)

我在研究Cassandra的备份和恢复。DataStax文档(Cassandra restore)提到了两种恢复数据的方法:
1.从本地节点恢复
1.从集中备份恢复。
我的问题是:我可以只生成现有节点的快照,然后将输出文件(file.db)复制到新启动的节点吗?然后将它们放入正确的目录/var/lib/cassandra/data。这条路对吗?
还是我遗漏了什么?

c0vxltue

c0vxltue1#

您不能简单地将快照从一个节点复制到另一个节点,因为这两个节点不一定拥有相同的令牌范围,因此快照中的数据对于随机节点来说是无用的。
在Cassandra中,数据分布在集群中的节点上,每个节点都拥有一系列令牌。每个分区(记录)都有一个分区键(主键的一部分),使用散列算法将其转换为令牌值,令牌值的值确定分区将存储在哪个节点上。
快照中的SSTables只包含令牌值在节点拥有的令牌范围内的分区。将快照重定向到拥有不同令牌范围的节点意味着SSTables中的部分或所有分区将丢失,因为新节点将永远不会接受对其不拥有的分区的读取。
如果您想将数据恢复到配置(包括令牌所有权)相同的节点,可以使用“刷新方法”。我已经在How to restore snapshots to a cluster with identical configuration中记录了详细的过程。
否则,您将需要使用sstableloader实用程序大容量加载快照,以便将SSTables中的数据发送到拥有它们的节点(副本)。我已经在How to clone data to a new cluster中记录了详细的过程。干杯!干杯!

blmhpbnm

blmhpbnm2#

是的,缺少的部分是,如果节点不是复制的令牌范围的副本之一,文件中的数据将不会出现。它将在文件中,但节点不会认为它拥有它或使用它来响应查询。
如果你有3个节点在一个键空间上使用RF3,它将工作,因为所有3个节点在该键空间上都应该有相同的数据。
您还必须运行nodetool刷新,或重新启动节点以获取文件。

相关问题