4

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

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

我猜不是,因为一旦环大小发生变化,分区 ID 及其到各个节点的映射也可能会发生变化。但是还有什么其他方法吗?riak-backup 在这种情况下会起作用吗(当环大小发生变化时)?


我只想知道我所做的选择是否足够面向未来。显然,当需求急剧变化或用户群激增时,可能需要更改整个架构。但我确实希望能够在某个时候做出这些改变(对戒指尺寸)——当然需要付出一些努力,但是——这不是不可能的。

4

2 回答 2

4

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

你应该怎么做?

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

  1. riak-admin 备份和恢复(实际上它适用于不同环大小的集群),或者
  2. Riak 数据迁移

使用其中任何一个基本上都会将整个集群的内容转储到一个位置(因此显然要小心不要用完磁盘空间)。然后,您可以将其传输并恢复到具有不同环大小的新集群。

需要注意的事项:

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

  • 在进行备份/恢复之前,请务必将 app.config 和自定义存储桶设置传输到新集群。

希望这会有所帮助。所以,这不是微不足道的(意思是,这需要一段时间并且需要大量的磁盘空间,但每当您传输大量数据时都是如此),但也不是非常复杂。

于 2013-02-26T18:36:34.670 回答
2

我知道这是一个老问题,但是使用 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/

于 2014-12-12T18:37:02.937 回答