我在QA环境中的多节点群集中有一个密钥空间。我想将该密钥空间复制到我的本地单节点集群。有没有直接的方法来做到这一点?我不能在这个时候编写像SSTableLoader实现这样的代码。请以最快的方式提出建议。
答案 0 :(得分:4)
确保新节点上有足够的可用磁盘空间,并且您已在测试/构建中为新的单节点“群集”正确设置复制因子和一致性级别 < / p>
首先,将确切的架构从旧群集还原到新节点。之后,可以通过两种方式加载数据:
1。)在旧集群中的每个节点上执行“sstableloader”实用程序,并将其指向新节点。 sstableloader具有令牌识别功能,但在您的情况下,它最终会将所有数据传送到您的新单节点群集。
sstableloader -d NewNode /Path/To/OldCluster/SStables
2.。)快照键空间并将原始sstable文件从旧群集中每个表的快照文件夹复制到新节点。一旦它们全部存在,将文件复制到相应的表目录并运行“nodetool refresh。”
# Rinse and repeat for all tables
nodetool snapshot -t MySnapshot
cd /Data/keyspace/table-UUID/snapshots/MySnapshot/
rsync -avP ./*.db User@NewNode:/NewData/Keyspace/table-UUID
...
# when finished, exec the following for all tables in your new node
nodetool refresh keyspace table
选项#1可能是最好的,因为它将流式传输数据并在新节点上自然压缩。它也减少了手工工作。如果您没有从一个群集到另一个群集的直接线路,则选项#2是好的,快速的和脏的。您可能不会注意到太多差异,因为它可能是QA的相对较小的键空间。