【发布时间】:2015-11-07 01:08:54
【问题描述】:
我在 QA 环境中的多节点集群中有一个密钥空间。我想将该键空间复制到我的本地单节点集群。有没有直接的方法可以做到这一点?我现在不能写一些像 SSTableLoader 实现这样的代码。请建议最快的方法。
【问题讨论】:
标签: cassandra
我在 QA 环境中的多节点集群中有一个密钥空间。我想将该键空间复制到我的本地单节点集群。有没有直接的方法可以做到这一点?我现在不能写一些像 SSTableLoader 实现这样的代码。请建议最快的方法。
【问题讨论】:
标签: cassandra
确保您的新节点上有足够的可用磁盘空间,并且您已在测试/构建中为新的单节点“集群”正确设置复制因子和一致性级别
首先,将旧集群中的确切架构还原到新节点。之后可以通过两种方式加载数据:
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 来说可能是一个相对较小的键空间。
【讨论】: