用 Sentinel 执行手动故障转移并清理拓扑
RedisSentinel命令
# First check quorum and an eligible replica:
redis-cli -p 26379 SENTINEL CKQUORUM mymaster
redis-cli -p 26379 SENTINEL REPLICAS mymaster
# Manual failover without waiting for agreement from other sentinels:
redis-cli -p 26379 SENTINEL FAILOVER mymaster
# Verify the new master (must be the same on all sentinels):
redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
# If old/removed replicas remain listed, reset sentinels one at a time, 30 s apart:
redis-cli -p 26379 SENTINEL RESET mymaster作用
即使主节点健康,也将主节点角色交给最合适的副本;然后验证新主节点,并从 sentinel 的记忆中清除已不存在的副本。
适用场景
主节点所在主机进行计划内维护之前、故障转移演练期间,或将主节点迁移到另一个数据中心时。
注意
故障转移期间会有几秒的写入中断,已写入主节点但尚未复制的数据可能丢失。replica-priority 为 0 的副本永远不会被选中;若没有合格的副本,命令会返回错误。若在所有 sentinel 上同时运行 SENTINEL RESET,拓扑信息会暂时丢失;请在每个 sentinel 上分别、错开时间运行。确保客户端使用会向 Sentinel 查询主节点地址的驱动。