响铃大小更改时迁移Riak数据

时间:2013-02-04 10:57:35

标签: database nosql riak

这是微不足道的吗?我将使用Bitcask和文件备份(每个节点上的文件)。

假设我的初始铃声大小为256,有16个节点。现在,如果我需要扩展到1024的环,我可以设置16个配置环大小为1024的新实例,将旧群集的备份文件复制到这16个新实例中并启动Riak吗? Riak能够获取这些旧数据吗?

我猜不是,因为一旦更改了环大小,分区ID及其到各个节点的映射也可能会改变。但还有其他方式吗?在这种情况下riak-backup会工作吗(当振铃大小改变时)?


我只是想知道我做出的选择是面向未来的足够。显然,在需求发生剧烈变化或用户基础气球变化的某些时候,可能需要更改整个体系结构。但我确实希望能够在某些时候做出这些改变(对于戒指大小) - 自然会涉及到一些努力,但是 - 没有它是不可能的。

2 个答案:

答案 0 :(得分:4)

使用基于节点的文件备份很难将群集迁移到不同的环大小(意味着,如果您只备份每个节点上的/ data目录,就像Backing Up Riak中建议的那样)。因为您已经怀疑,后端数据文件取决于节点和分区到给定环大小的映射。

你应该做什么呢?

您必须使用以下两个工具之一来使用整个群集的“逻辑”备份:

  1. riak-admin backup并恢复(事实上确实可以使用     不同环尺寸的集群)或
  2. Riak Data Migrator
  3. 使用任何一个基本上都可以将整个集群的内容转储到一个位置(因此请注意不要耗尽磁盘空间)。然后,您可以使用不同的环大小传输和还原到新群集。

    需要注意的事项:

    • 仅备份非实时群集。意思是,要么关闭群集,要么至少确保在进行备份时没有对旧群集进行新的写入。否则,如果您开始备份但仍有新写入,则无法保证它们会将其写入备份数据集。

    • 在进行备份/恢复之前,请务必将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/