Redis 集群的主从切换不再使用 Sentinel 作为外置监控, 而是集群内部在主节点挂掉之后选举出一个从节点取代主节点, 处理相应的分片的数据请求.

当然前提条件是对应的主节点有至少一个可连通的从. 有一些复杂的网络环境下, 也许 A 有 B, C 两个从, B 和 C 可以独立连接 A 并获取备份数据, 但 B 和 C 之间不能连通的话, 就会产生问题.

以上只是一个前提, 自动主从切换的另一个前提是半数以上的非空主节点还活着, 因为只有那些已分配槽位的主进行主从切换选举, 而且选举得出的结果需要至少半数的主意见一致. 这一点举几个典型的反例

1 主 1 从或 2 主 2 从的集群, 任意一个主挂了, 集群中不会发生自动主从切换 (建立集群需要 3 个以上的主节点这一规定在官方的 redis-trib.rb 脚本中, 而不是集群自身的限制)

3 主 3 从的集群, 几乎同时挂掉 2 个主, 集群中不会发生自动主从切换

3 主 3 从的集群, 其中一个主没有分配槽位, 挂掉另外任意一个主, 集群中不会发生自动主从切换

第一种情况中, 主挂掉, 当然不满足半数以上 (不是至少半数) 的主还活着.

第二种情况中, 2 个主先后挂掉之间的时间间隔很重要. 比如现在有 A B C D E F 共 6 个 Redis, 主从结构为 A slaveof D, B slaveof E, C slaveof F, 这时如果 D 挂了, 剩下 2 个主, 是有机会进行选举让 A 切换为主的, 如果 A 切换为主之后, E 再挂掉, 之后仍然可以选举, 让 B 切换; 但是, 如果选举还没完成, A 还没来得及切换, E 又挂了, 那么相当于集群同时挂掉 2 个主, 剩下 1 个 F 无法选举, 于是自动主从切换不会发生.

第三种情况, 假设还是 6 个 Redis, 主从结构为 A slaveof D, B slaveof E, C slaveof F, 但 F 没有槽位, 那么 D 挂了的话, F 不参与选举, 跟第一种情况一样, 没半数, 不予切换.

这时, 可以手动切换. 切换方法是使用 redis-cli 工具连上相应的从节点, 执行 cluster failover TAKEOVER 命令 (必须加上 TAKEOVER 参数).

比如上面第二种情况, D 和 E 都挂了, 那么需要连上 A 执行上述命令, 强制 A 取代已经死掉的 D 成一个主. 注意, 这时活着的主的数量就会恢复到 2 个, 满足了一半以上的数量要求, 接下来 B 会自动切换为主.

这种行为还引出一个让运维哭的结论: 如果使用两台对等的机器配置一个交叉集群, 那么如果一台机器断电了, 剩下一台机器是上的实例是不会自动主从切换的...

php redis主从自动切换,Redis 集群的主从切换相关推荐

  1. mysql主从 查询负载_MySQL集群:主从数据库配置 实现查询负载

    在做web应用系统中,如果数据库出现了性能瓶颈,而你又是使用的MySQL数据库,那么就可以考虑采用数据库集群的方式来实现查询负载了.因为一般来讲任何一个系统中数据库的查询操作比更新操作要多的多,因此通 ...

  2. Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

    Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...

  3. redis主从读写分离replication复制数据+sentienl哨兵集群主备切换

    说明:最近公司在自己搭建了一套redis主从读写分离+sentinel哨兵集群主备切换,通过手工去搭建replication复制+主从架构+读写分离+哨兵集群+高可用redis集群架构 公司的已经搭建 ...

  4. Redis集群的主从切换研究

    目录 目录 1 1. 前言 1 2. slave发起选举 2 3. master响应选举 5 4. 选举示例 5 5. 哈希槽传播方式 6 6. 一次主从切换记录1 6 6.1. 相关参数 6 6.2 ...

  5. redis集群(主从配置)

    摘要: redis集群(主从配置) 市面上太多kv的缓存,最常用的就属memcache了,但是memcache存在单点问题,不过小日本有复制版本,但是使用的人比较少,redis的出现让kv内存存储的想 ...

  6. redis 一般启动几个 哨兵_Redis6.0主从、哨兵、集群搭建和原理

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 大数据技术与架构点击右侧关注,大数据开发领域最强公众号! 暴走大数据点击右侧关注,暴走大数据! 由 ...

  7. redis的三大模式主从,哨兵和集群

    一.前言 二.redis主从复制 1.主从复制的作用: 2.主从复制的流程 3.搭建主从复制 3.1.搭建环境 3.2.安装redis 3.3.主服务器配置查看以下行 3.4.从服务器配置查看以下行 ...

  8. 一文读懂Redis的四种模式,单机、主从、哨兵、集群(*)

    前言: redis有多种模式:单机模式.主从模式.哨兵模式.集群模式 1.单机模式 安装一个redis,启动起来,业务调用即可. 单机在很多场景也是有使用的,例如在一个并非必须保证高可用的情况下. 优 ...

  9. 关于redis的主从、哨兵、集群

    关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 本文转自:黄河边上的牧马人 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会 ...

最新文章

  1. python tensorflow教程_TensorFlow入门教程TensorFlow 基本使用T
  2. 使用抽象等设计工具创建一个稳固的核心机制
  3. [Issue Fixed]-repo-error: .repo/manifests/: contains uncommitted changes
  4. 派生类的继承方式【C++继承】
  5. HandlerInterceptor和HandlerExceptionResolver 如何在DispatcherServlet中生效?
  6. Oracle 标准大页和透明大页
  7. Horizon8基础环境准备08——CA证书
  8. Oracle 写存储过程的一个模板还有一些基本的知识点
  9. java怎么复制别人的数据库_数据库实现主从复制
  10. c51单片机跑马灯汇编语言,单片机的跑马灯简单汇编程序
  11. 【动画消消乐 】一个小清新类型的全局网页过渡动画 075
  12. 主流集成控制系统:EPICS和TANGO
  13. EasyUI 中 Combobox里的onChange和onSelect事件的区别
  14. 笔记本电脑插入耳机仍然外放(亲测有效)
  15. PermissionError: [Errno 1] Operation not permitted: '../middle_result/df_cleaned.csv'
  16. 红帽子企业版.Linux.5
  17. java 读取文本_Java如何读取txt文件的内容?
  18. php校园学校宿舍管理系统 php毕业设计题目课题选题 php毕业设计项目作品源码(3)班主任和宿舍管理员功能
  19. 剑风2012年1月要出剧场版了,哇哈哈~~~~~
  20. Rabbitmq交换机详解

热门文章

  1. VS2017控制台打印问题
  2. python编写登录接口_每日一题.PYTHON编写简单登录接口?
  3. python工程师干什么的_Python就业前景和工资待遇分析,你学Python了吗?
  4. BZOJ2658 ZJOI2012 小蓝的好友(treap)
  5. laravel 与 tp5 获取控制器 方法名
  6. 设计模式(1):工厂模式
  7. 第二十节,使用RNN网络拟合回声信号序列
  8. ★古今中外著名14大悖论
  9. 第二课(2)添加导航栏
  10. Power oj2498/DP/递推