Redis分片集群-故障转移

为了演示故障转移,我们可以先通过watch命令查看某台节点信息监控整个集群状态:

watch redis-cli -p 9001 cluster nodes

  接着我们让某台节点宕机,执行命令:redis-cli -p 9002 shutdown,回车。

 可以发现控制台监控到9002已失去连接。等待一会,可以看到fail信息,同时8002从slave变成了master成为主节点了。

 再将9002进行恢复:redis-server 9002/redis.conf,可以发现redis的9002已经变成从节点连接成功了。

 这就是分片集群整个自动故障转移的过程。

但是,有时候我们还需要手动的进行故障转移,为什么要手动故障转移呢? 比如说现在我们的集群里面9001是一个master,但是这个机器有点老旧了,或者说需要维护了,那这个时候怎么办呢?其实我们可以启动一个新的节点,然后这个节点性能比较好,我让它成为我9001的slave,然后我就需要手动将新的节点替换这个9001,从而实现故障转移。

利用cluster failover命令可以手动让集群中的某个master宕机,切换到执行cluster failover命令的这个slave节点,实现无感知的数据迁移。其流程如下:

 

这种failover命令可以指定三种模式:

  • 缺省:默认的流程,如图1~6歩

  • force:省略了对offset的一致性校验

  • takeover:直接执行第5歩,忽略数据一致性、忽略master状态和其它master的意见

具体做法如下:

1)利用redis-cli连接9002这个节点

 

2)执行cluster failover命令

 对比发现,9002已从slave变成了master,8002从master变成了slave,也就是说9002直接接管了8002的mater角色。

 这就是手动的故障转移。

 

posted @ 2023-06-26 16:06  xycccode  阅读(302)  评论(0编辑  收藏  举报