gpt4 book ai didi

redis - 从现有的 Redis 集群中删除主节点

转载 作者:可可西里 更新时间:2023-11-01 11:46:14 25 4
gpt4 key购买 nike

我想从现有的 Redis 集群中删除一个主节点。我尝试按照 http://redis.io/topics/cluster-tutorial 中的说明进行操作但无法跟随。帮助??

最佳答案

根据之前的回答,要删除一个主节点,它必须是空的。这意味着我们必须 flushall数据或将哈希槽迁移到另一个现有的主控器。

但是作为redis reconfigurationredis cluster resharding表示,可能需要在上一个答案的第 5 步之后添加其他步骤。

根据 redis 官方文档,对我有用的解决方案如下。这里的顺序很重要。

我们将拥有哈希槽当前所有权的节点称为源节点,将我们要迁移到的节点称为目标节点。 p>

对于每个插槽:

  1. 发送CLUSTER SETSLOT <slot> IMPORTING <source-node-id>destination nodeslot 设置为 importing 状态。
  2. 发送CLUSTER SETSLOT <slot> MIGRATING <destination-node-id>source nodeslot 设置为 migrating 状态。
  3. 使用CLUSTER GETKEYSINSLOT源节点 获取 key 命令并使用以下 MIGRATE 将它们移动到目标节点命令。

    MIGRATE target_host target_port key target_database_id timeout

    在Redis Cluster中不需要指定0以外的数据库,但是MIGRATE是一个通用命令,可用于其他不涉及 Redis 集群的任务。

  4. 当迁移过程最终完成时,使用 CLUSTER SETSLOT <slot> NODE <destination-node-id>source nodedestination node 中,以便再次将插槽设置​​为正常状态。相同的命令通常会发送到所有其他节点,以避免等待新配置在集群中自然传播。

这里还给出了一个简单的示例 bash 脚本来执行此操作:

来源IP:172.17.0.5 .源代码:1f70a5107e0042a7d33a9efaf88dbdfecd78076a

目标 IP:172.17.0.4 .目的地 ID:7e428bae84697a3882ecad19bd0d13ac7ee97d02

另一个主控ip:172.17.0.7

for i in `seq 0 5460`; do
redis-cli -c -h 172.17.0.4 cluster setslot ${i} importing 1f70a5107e0042a7d33a9efaf88dbdfecd78076a
redis-cli -c -h 172.17.0.5 cluster setslot ${i} migrating 7e428bae84697a3882ecad19bd0d13ac7ee97d02
while true; do
key=`redis-cli -c -h 172.17.0.5 cluster getkeysinslot ${i} 1`
if [ "" = "$key" ]; then
echo "there are no key in this slot ${i}"
break
fi
redis-cli -h 172.17.0.5 migrate 172.17.0.4 6379 ${key} 0 5000
done
redis-cli -c -h 172.17.0.5 cluster setslot ${i} node 7e428bae84697a3882ecad19bd0d13ac7ee97d02
redis-cli -c -h 172.17.0.4 cluster setslot ${i} node 7e428bae84697a3882ecad19bd0d13ac7ee97d02
redis-cli -c -h 172.17.0.7 cluster setslot ${i} node 7e428bae84697a3882ecad19bd0d13ac7ee97d02
done

关于redis - 从现有的 Redis 集群中删除主节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33630740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com