我有一个3节点的Riak集群,每个集群都有大约。 1 TB磁盘使用率。突然之间,一个节点的硬盘无法恢复。 所以,我使用以下步骤添加了一个新节点:
1)riak-admin集群加入 2)关闭故障节点 3)riak-admin force-replace失败节点新节点 4)riak-admin集群计划 5)riak-admin集群提交。
这几乎解决了这个问题,除了在经过大量数据传输和切换之后,现在并非所有三个节点都有1 TB的磁盘使用率。只有两个 有1 TB的磁盘使用率。另一个几乎是空的。这意味着磁盘上不再有3个副本了。我应该运行哪些命令来强制确保整个磁盘上有三个副本而无需等待读取修复或反熵来制作三个副本?
答案 0 :(得分:0)
通过向riak-users@lists.basho.com发布相同的问题得到答案:
(0)三个节点不足,你应该有5个节点 (1)您可以迭代并读取集群中的每个对象 - 这也会触发每个对象的读取修复 (2) - 复制自Engel Sanchez回复类似问题2014年4月10日) *如果禁用AAE,则不必停止节点删除数据 anti_entropy目录 *如果启用了AAE,则可能会触发以滚动方式删除AAE数据 在具有坏树和节点的节点之间进行大量读取修复 由于数据似乎有所不同,所以树木很好。
如果您的节点已经启动,则启用AAE并使用旧的错误树 在混合中,有一种更好的方法。您可以使用动态禁用AAE 一些控制台命令。此时,您可以在不停止节点的情况下进行操作 删除群集中的所有AAE数据。在方便的时候,重新启用 AAE。我说方便,因为所有的树都会开始重建,那就是 在重载群集中可能会出现问题。周末这样做 除非你的集群可以承担额外的负担,否则可能是一个好主意。
要从Riak控制台动态禁用AAE,您可以运行以下命令:
riak_core_util:rpc_every_member_ann(riak_kv_entropy_manager,disable,[], 60000)。
并启用类似的:
riak_core_util:rpc_every_member_ann(riak_kv_entropy_manager,enable,[], 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/