【发布时间】:2018-10-31 09:41:12
【问题描述】:
我们在生产环境中广泛使用 redis-cluster。我们目前有一个 30 个节点的集群(15 个主节点,15 个从节点) 我们正在尝试增加集群,因为我们已经创建了新服务器并将它们加入到集群中。到目前为止一切都很好。
下一步 - 我们正在尝试将插槽重新分配给新的主节点。我们使用redis-trib reshard 命令编写了一个执行此操作的脚本。
但是 - 迁移中途失败(但距离开始不远)并出现以下错误:
[ERR] Calling MIGRATE: ERR Target instance replied with error: BUSYKEY Target key name already exists.
这种情况偶尔会发生,有时它会在失败之前设法移动一些插槽,有时它会在第一个插槽上失败。 每个此类故障都需要手动修复操作,这使得重新分片操作非常难以管理。
除了停机迁移之外,我们还没有找到任何具体的例子,也没有任何关于如何防止这种情况的想法。我们正在努力避免。
版本:
redis 服务器 4.0.2
redis trib 3.3.3(在此问题后从 4.0.2 降级:redis cluster reshard [ERR] Calling MIGRATE: ERR Syntax error)
我们的下一步是升级到最新的 redis (4.0.11),尽管我们在此问题的发行说明中没有发现任何迹象。
希望听到我们做错了什么以及如何解决它,或者 redis-cluster 不是为实时重新分片而构建的?
谢谢
【问题讨论】:
标签: redis redis-cluster