这是微不足道的吗?我将使用Bitcask和文件备份(每个节点上的文件)。
假设我的初始铃声大小为256,有16个节点。现在,如果我需要扩展到1024的环,我可以设置16个配置环大小为1024的新实例,将旧群集的备份文件复制到这16个新实例中并启动Riak吗? Riak能够获取这些旧数据吗?
我猜不是,因为一旦更改了环大小,分区ID及其到各个节点的映射也可能会改变。但还有其他方式吗?在这种情况下riak-backup会工作吗(当振铃大小改变时)?
我只是想知道我做出的选择是面向未来的足够。显然,在需求发生剧烈变化或用户基础气球变化的某些时候,可能需要更改整个体系结构。但我确实希望能够在某些时候做出这些改变(对于戒指大小) - 自然会涉及到一些努力,但是 - 没有它是不可能的。
答案 0 :(得分:4)
使用基于节点的文件备份很难将群集迁移到不同的环大小(意味着,如果您只备份每个节点上的/ data目录,就像Backing Up Riak中建议的那样)。因为您已经怀疑,后端数据文件取决于节点和分区到给定环大小的映射。
你应该做什么呢?
您必须使用以下两个工具之一来使用整个群集的“逻辑”备份:
使用任何一个基本上都可以将整个集群的内容转储到一个位置(因此请注意不要耗尽磁盘空间)。然后,您可以使用不同的环大小传输和还原到新群集。
需要注意的事项:
仅备份非实时群集。意思是,要么关闭群集,要么至少确保在进行备份时没有对旧群集进行新的写入。否则,如果您开始备份但仍有新写入,则无法保证它们会将其写入备份数据集。
在进行备份/恢复之前,请务必将app.config和自定义存储桶设置传输到新群集。
希望这会有所帮助。所以,它不是微不足道的(意思是,它需要一段时间并且需要大量的磁盘空间,但每当你传输大量数据时都是如此),但它也不是非常复杂。
答案 1 :(得分:1)
我知道这是一个老问题,但是使用Riak 2.x,现在可以在不关闭群集的情况下动态调整环的大小:
riak-admin cluster resize-ring <new_size>
riak-admin cluster plan
riak-admin cluster commit
注意:Riak环的大小应始终为2n整数,例如: 16,32,64等
http://docs.basho.com/riak/latest/ops/advanced/ring-resizing/