我有一个20个节点的生产集群,有3个复制,我想复制一部分数据,即〜600GB(带有3个复制)到我的测试环境,只有1个复制。
我知道我们可以使用sstableloader,但我们是否需要将所有600GB的网络复制到另一个群集?
他们只能将一个数据副本移动到其他群集吗?
最好的方法是什么?
答案 0 :(得分:2)
我假设你正在使用RandomPartitioner。您正在做什么取决于您的测试环境中有多少个节点。
如果是SimpleStrategy:
一个。如果您在测试环境中使用20个节点:
B中。如果您使用的节点数少于生产数:
如果您不关心还原版本中某个时间点的数据一致性,可以跳过快照并直接复制数据目录。
需要考虑的事项:
此过程会极大地影响您的磁盘I / O.如果您在实时群集上执行此操作,请使用快照至少锁定某个时间点的状态并逐渐复制。
对于NetworkTopologyStrategy:
您可以重复上述过程,但只能从一个机架中的节点组合进行复制,并形成100%的数据。如果您完全不关心可能错过写入其他机架上未复制到此机架中节点的节点,那么您将必须复制上述所有节点中的所有节点。
理想的解决方案:
如果您每天都要像我公司那样进行测试,那么您希望围绕它进行一些自动化。在我看来,备份和恢复的最佳自动化是Netflix的Priam https://github.com/Netflix/Priam
我在S3中存储了生产备份。代码将在测试中启动新计算机,为一个区域分配相同的令牌,并将priam快照时间设置为从上一天的备份开始的范围,然后测试节点将自动从s3备份接收数据。
希望我的回答对你有帮助。