面试题答案
一键面试大致步骤
- 准备阶段:
- 确定源节点、目标节点以及要迁移的槽位。
- 检查目标节点是否有足够的资源来接收迁移的数据。
- 迁移槽位数据:
- 在源节点上,使用
CLUSTER SETSLOT <slot> IMPORTING <target_node_id>
命令,通知源节点准备将指定槽位的数据导入到目标节点。 - 在目标节点上,使用
CLUSTER SETSLOT <slot> MIGRATING <source_node_id>
命令,通知目标节点准备从源节点迁移指定槽位的数据。 - 源节点使用
MIGRATE <target_host> <target_port> "" 0 <timeout> KEYS <key1> <key2>...
命令,将属于该槽位的部分数据迁移到目标节点。重复此步骤,直到该槽位在源节点的数据基本迁移完成。
- 在源节点上,使用
- 完成迁移:
- 确认源节点上该槽位的数据已全部迁移到目标节点后,在集群的所有节点上使用
CLUSTER SETSLOT <slot> NODE <target_node_id>
命令,将该槽位正式指派给目标节点。 - 清理源节点和目标节点上关于此次迁移的临时状态。
- 确认源节点上该槽位的数据已全部迁移到目标节点后,在集群的所有节点上使用
可能用到的Redis命令
- CLUSTER SETSLOT:用于设置槽位的状态,如设置为
IMPORTING
、MIGRATING
或指定槽位归属的节点。 - MIGRATE:用于在节点间迁移数据。
- CLUSTER INFO:可用于查看集群的相关信息,如节点状态、槽位分配等,辅助确认迁移状态。
- CLUSTER NODES:查看集群中各个节点的详细信息,包括节点ID、地址、负责的槽位等,有助于监控迁移过程。