Redis Sentinel 故障转移后主节点回归
1. 确认原主节点已修复并启动
确保原主节点的服务已修复,并能够正常启动。
执行以下命令验证:
redis-cli -h <original-master-host> -p <original-master-port> ping
如果返回 PONG,说明服务已正常运行。
2. 清空原主节点的数据
为了确保数据一致性,修复的原主节点需要清空数据,避免出现不一致的状态。执行以下命令清空数据:
redis-cli -h <original-master-host> -p <original-master-port> flushall
3. 将原主节点配置为从节点
修复的原主节点现在需要被重新配置为新主节点的从节点。假设新的主节点为 <new-master-host> 和 <new-master-port>,执行以下命令:
redis-cli -h <original-master-host> -p <original-master-port> replicaof <new-master-host> <new-master-port>
这会将原主节点设置为新主节点的从节点,并开始同步数据。
4. 验证同步状态
使用以下命令检查同步状态:
redis-cli -h <original-master-host> -p <original-master-port> info replication
查看输出中的 role 和 master_link_status:
role:slave表示节点已成功成为从节点。master_link_status:up表示与主节点的连接正常,数据正在同步。
5. 更新 Sentinel 配置
由于 Sentinel 已经监控了新主节点,无需额外操作。如果希望 Sentinel 优先选举原主节点作为主节点,可以调整其优先级。
在每个 Sentinel 节点的配置文件中,增加以下配置:
sentinel set <master-name> replica-priority <priority>
<master-name>是你的主节点名称。<priority>的值越小,优先级越高(默认值为 100)。
然后重启 Sentinel 服务:
sudo systemctl restart redis-sentinel
6. 可选:恢复原主节点为主节点
如果需要恢复原主节点为主节点,需要手动完成主从切换。
步骤:
- 停止当前的所有从节点:
bash
redis-cli -h <replica-host> -p <replica-port> shutdown
- 将原主节点升为主节点:
bash
redis-cli -h <original-master-host> -p <original-master-port> replicaof no one
- 将其他节点配置为新主节点的从节点:
bash
redis-cli -h <replica-host> -p <replica-port> replicaof <original-master-host> <original-master-port>
- 重启 Sentinel 服务,让其感知新的主节点。
License:
CC BY 4.0