redis【主从复制 & 哨兵】

本贴最后更新于 247 天前,其中的信息可能已经水流花落

1、简介

多台服务器连接方案

主从复制

主从复制即将 master 中的数据即时、有效的复制到 slave 中

特征:一个 master 可以拥有多个 slave,一个 slave 只对应一个 master

职责:

2、作用

3、工作流程

总述

阶段一:建立连接

**主从连接(slave 连接 master) **

授权访问

阶段二:数据同步阶段

数据同步阶段 master 说明
  1. 如果 master 数据量巨大,数据同步阶段应避开流量高峰期避免造成 master 阻塞,影响业务正常执行
  2. 复制缓冲区大小设定不合理,会导致数据溢出。如进行全量复制周期太长,进行部分复制时发现数据已经存在丢失的情况,必须进行第二次全量复制,致使 slave 陷入死循环状态。
repl-backlog-size 1mbCopy
  1. master 单机内存占用主机内存的比例不应过大,建议使用 50%-70% 的内存,留下 30%-50% 的内存用于执 行 bgsave 命令和创建复制缓冲区
数据同步阶段 slave 说明
  1. 为避免 slave 进行全量复制、部分复制时服务器响应阻塞或数据不同步,建议关闭此期间的对外服务
slave-serve-stale-data yes|noCopy
  1. 数据同步阶段,master 发送给 slave 信息可以理解 master 是 slave 的一个客户端,主动向 slave 发送命令
  2. 多个 slave 同时对 master 请求数据同步,master 发送的 RDB 文件增多,会对带宽造成巨大冲击,如果 master 带宽不足,因此数据同步需要根据业务需求,适量错峰
  3. slave 过多时,建议调整拓扑结构,由一主多从结构变为树状结构,中间的节点既是 master,也是 slave。注意使用树状结构时,由于层级深度,导致深度越高的 slave 与最顶层 master 间数据同步延迟较大,数据一致性变差,应谨慎选择

阶段三:命令传播阶段

命令传播阶段的部分复制
服务器运行 ID(runid)
复制缓冲区

复制缓冲区内部工作原理

主从服务器复制偏移量(offset)
数据同步 + 命令传播阶段工作流程

心跳机制

心跳阶段注意事项

完整流程

常见问题

频繁的网络中断

数据不一致

哨兵

简介

哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的 master 并将所有 slave 连接到新的 master。

2、作用

注意:
哨兵也是一台 redis 服务器,只是不提供数据服务 通常哨兵配置数量为单数

3、配置哨兵

4、工作原理

监控阶段

通知阶段

故障转移

确认 master 下线

推选哨兵进行处理

具体处理

很多资源来自网络,转载,如有侵权请联系删除!

转载地址,谢谢博主

  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    250 引用 • 244 回帖 • 568 关注

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...