加入节点
启动
- 配置和其他节点统一;
meet
- 为其迁移槽和数据用于扩容;
- 作为从节点负责故障转移;
迁移 slot 和数据
slot 迁移伴随着键值的迁移,每个 slot 是负责一些键值的;
- 制定槽迁移计划;
- 迁移数据;
- 让目标节点准备导入槽的数据,
cluster setslot {slot} importing {sourceNodeId}
; - 让源节点准备迁出槽的数据,
cluster setslot {slot} migrating {targetNodeId}
; - 每次获取 count 个属于槽的数据,
cluster getkeysinslot {slot} {count}
; - 原节点把指定 key 迁移,
migrate {targetIp} {targetPort} key 0 {timeout}
; - 重复执行 3, 4 步直到槽下的所有键数据迁移到目标节点;
- 向集群内所有主节点发送命令,通知槽分配给目标节点,
cluster setslot {slot} {targetNodeId}
;
- 让目标节点准备导入槽的数据,
- 添加从节点;
集群伸缩
- 集群伸缩就是槽和数据在节点之间移动;