手动在Cassandra JBOD文件夹之间移动数据

时间:2017-05-31 14:31:33

标签: cassandra

一般问题: 在驻留在不同Cassandra JBOD文件夹(在Cassandra重启的单个节点内)的表文件夹之间移动db文件是否安全?

具体问题: 我在Cassandra集群上配置了备份。来自Amazon S3上存储的每个JBOD磁盘,架构和环信息的快照。现在我正在考虑从头开始恢复集群的可能性。

initial_tokens配置属性 - 使节点知道在此节点上恢复的令牌。但是,我是否需要以某种方式指定有关数据如何在JBOD文件夹之间传播的任何信息?或者当启动Cassandra从每个文件中获取bloom过滤器时,这个文件存储在哪个JBOD文件夹上并不重要?

1 个答案:

答案 0 :(得分:1)

是节点离线时的安全性。只需关闭节点,移动文件并重新启动即可。

您可以从备份中获取sstables并将它们放在另一个群集上,您需要担心的是令牌分配是相同的。否则,您放在节点上的sstables可能不是该节点预期保存的数据(意味着读取不会转到它)。这里描述了一种方法:http://datascale.io/cloning-cassandra-clusters-fast-way/。您可以从源群集中复制令牌

nodetool ring | grep 0.0.0.0 | awk '{print $NF ", "}' | xargs | cut -d '=' -f 2 | sed 's/,$//' | sed 's/^/initial_token: /' > /tmp/tokens.txt

并将其放在目标集群中相应节点的cassandra.yaml中。虽然设置了auto_bootstrap: false

如果他们开始将令牌范围分配给磁盘或类似的东西,将来可能会改变。