扩容集群:
◆准备新节点
新节点:
。必须是集群模式
。配置和其他节点统一,节点的配置请参照之前写的“安装cluster”篇里面有写
。启动后是孤儿节点,就是没有设置为主从节点
。然后启动节点:redis-server conf/redis-${port}.conf
◆加入集群
。使用原生方法:
进入客户端中进行meet
。使用redis-trib.rb加入集群:
redis-trib.rb add-node new_host:new_port existing_host:existing_port --slave--master-id<arg>
redis-trib.rb add-node 127.0.0.1:6385 127.0.0.1:6379
建议使用redis-trib.rb能够避免新节点已经加入其他集群,造成故障
◆迁移槽和数据
。槽迁移计划:
。迁移数据
*步骤:
1,对目标节点发送:cluster setslot {slot} importing {sourceNodeId}命令,让目标节点准备导入槽的数据 2,对源节点发送:cluster setslot {slot} migrating {targetNodeId}命令,让源节点准备迁出槽的数据 3,源节点循环执行cluster getkeysinslot {slot} {count}命令,每次获取count个属于槽的键 4,在源节点上执行migrate {targetIp} {targetPort} key 0 {timeout} 命令把指定key迁移 5,重复执行步骤3~4直到槽下所有的键数据迁移到目标节点 6,向集群内所有主节点发送cluster setslot {slot} node {targetNodeId}命令,通知槽分配给目标节点
*流程图:
*python操作的伪代码:
*使用redis-trib.rb来迁移数据:
1,./redis-trib.rb reshard 127.0.0.1:7000 2,执行了上面的命令后会出现提示问你需要迁移多少个槽,这个数量是拿16384/加入新节点的总个数 3,2的步骤执行完之后,它又会问你希望那个ID接受的给那个ID,你就填写你要加入的节点ID即可 4,执行完3填入 all 回车即可 5,这样就完成了