0

我有一个 3 节点的 Riak 集群,每个集群都有大约。1 TB 磁盘使用量。突然,一个节点的硬盘发生了不可恢复的故障。因此,我使用以下步骤添加了一个新节点:

1) riak-admin 集群加入 2) 关闭故障节点 3) riak-admin force-replace failed-node new-node 4) riak-admin 集群计划 5) riak-admin 集群提交。

这几乎解决了问题,除了在大量数据传输和切换之后,现在并非所有三个节点都有 1 TB 的磁盘使用量。其中只有两个有 1 TB 的磁盘使用量。另一个几乎是空的。这意味着磁盘上不再有 3 个副本。我应该运行什么命令来强制确保磁盘上有三个副本而不等待读取修复或反熵生成三个副本?

4

1 回答 1

0

通过向 riak-users@lists.basho.com 发布相同的问题得到答案:

(0) 三个节点不足,您应该有 5 个节点 (1) 您可以迭代并读取集群中的每个对象 - 这也会触发对每个对象的读取修复 (2) - 复制自 Engel Sanchez 对类似问题的回复 April 10th 2014 ) * 如果 AAE 被禁用,您不必停止节点来删除 anti_entropy 目录中的数据 * 如果 AAE 被启用,以滚动方式删除 AAE 数据可能会触发节点之间的读取修复雪崩当数据似乎发散时,坏树和好树节点。

如果您的节点已经启动,并且启用了 AAE 并且混合了旧的不正确的树,那么有更好的方法。您可以使用一些控制台命令动态禁用 AAE。此时,您可以在不停止节点的情况下删除集群中的所有 AAE 数据。在方便的时候,重新启用 AAE。我说方便是因为所有的树都将开始重建,这在过载的集群中可能会出现问题。在周末这样做可能是一个好主意,除非您的集群可以承受额外的负载。

要从 Riak 控制台动态禁用 AAE,您可以运行以下命令:

riak_core_util:rpc_every_member_ann(riak_kv_entropy_manager, 禁用, [], 60000)。

并启用类似的:

riak_core_util:rpc_every_member_ann(riak_kv_entropy_manager, 启用, [], 60000)。

最后一个数字只是 RPC 操作的超时。我希望这可以为您的集群节省一些额外的负载。(3) 这将是: (3a) 使用您选择的客户端列出所有键 (3b) 获取每个对象

https://www.tiot.jp/riak-docs/riak/kv/2.2.3/developing/usage/reading-objects/

https://www.tiot.jp/riak-docs/riak/kv/2.2.3/developing/usage/secondary-indexes/

于 2017-09-19T17:56:27.317 回答