2017-05-31 62 views
0

一般问题: 在位于不同Cassandra JBOD文件夹(Cassandra重新启动的单节点内)的表文件夹之间移动db文件是否安全?手动在Cassandra JBOD文件夹之间移动数据

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

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

回答

1

在节点处于脱机状态时安全可靠。只需关闭节点,移动文件并将其重新启动即可。

您可以从备份中获取sstable并将它们放在另一个群集上,您必须担心令令牌分配变得相同。否则,你放在一个节点上的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

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