Redis-04 主从复制与哨兵

1 引言

1.1 单机缺陷

  1. 单点故障
  2. 容量有限
  3. 压力巨大

1.2 AKF 拆分原则

Redis-04 主从复制与哨兵_第1张图片

  1. X 轴:水平复制数据做备份
  2. Y 轴:按照业务数据进行拆分
  3. Z 轴:将完整数据按区放置

1.3 拆分后的数据一致性

  1. 强一致性:所有节点阻塞直到数据全部一致,降低可用性
    Redis-04 主从复制与哨兵_第2张图片
  2. 弱一致性:容忍数据丢失一部分,追求速度(Redis 默认)
    Redis-04 主从复制与哨兵_第3张图片

2 主从复制

2.1 手动跟随

  1. 从节点使用命令
    1. 5.0前:SLAVEOF host port
    2. 5.0开始:REPLICAOF host port
  2. 实验流程
    1. 从节点跟随主节点
      在这里插入图片描述
    2. 检查主从节点的 key
      在这里插入图片描述
      在这里插入图片描述
    3. 主节点设置 key
      在这里插入图片描述
    4. 从节点获取 key 成功
      在这里插入图片描述
    5. 从节点设置 key 失败,默认为只读,需要更改配置文件
      在这里插入图片描述

2.2 打开服务时指定跟随

  • redis-server {从节点配置文件} --replicaof {主节点 ip} {主节点端口号}
    在这里插入图片描述

2.3 配置文件跟随

  1. 进入配置文件目录:cd /etc/redis
  2. 修改配置文件,redis 实例以端口号区分:vim 6380.conf
    在这里插入图片描述
  3. 改为主节点的 ip 地址和端口号
    在这里插入图片描述

2.4 其他配置

  1. 从节点在复制主节点的时候,从节点的数据是否暴露,默认为 yes
    在这里插入图片描述
  2. 从节点是只读,默认为 yes
    在这里插入图片描述
  3. 维持一个队列,当从节点掉了后,更新数据,若没超过这个大小,不需要完全重新同步,只需要部分重新同步
    在这里插入图片描述

3 哨兵 Sentinel

3.1 哨兵的作用

哨兵用于管理多个 Redis 实例

  1. 监测:哨兵不断检查主从节点是否正常
  2. 提醒:当节点异常时发出提醒
  3. 自动故障迁移:当主节点发生故障时,让一个从节点代替主节点

3.2 哨兵的配置文件

  1. 在 conf 目录下建立:vim 26379.conf,详细的配置文件是源码目录下的 sentinel.conf
    # 哨兵端口号
    port 26379
    # 监听的节点,可以监听多个
    # sentinel monitor {节点名} {IP} {端口号} {需要几个哨兵认为故障才触发故障迁移}
    sentinel monitor mymaster 127.0.0.1 6379 2
    
  2. 同样方式创建 36379.conf 46379.conf
    在这里插入图片描述

3.3 启用哨兵

  1. redis-server {哨兵配置文件路径} --sentinel
    在这里插入图片描述
  2. 哨兵执行成功
    Redis-04 主从复制与哨兵_第4张图片
  3. 同样方式开启三个哨兵,你会发现每个哨兵下面都打印了其他哨兵的详细信息
    在这里插入图片描述

3.3 自动故障转移

  1. 把主节点给挂了 service redis_6379 stop
  2. 过段时间,所有哨兵下面都打印了switch-maseter(切换主节点)和 slave(变为从节点)
    在这里插入图片描述
  3. 使用 redis 6380 redis-cli -p 6380
  4. set 命令成功,真的把原来从节点6380变成了主节点(默认从节点是只读的)
    在这里插入图片描述
  5. 重新开启关闭的 6379:service redis_6379 start,并使用 redis 6379 redis-cli
  6. set 命令失败,报只有只读权限,说明原来的主节点 6379 变为了从节点
    在这里插入图片描述

3.3 哨兵的命令

  1. PING:返回 PONG
    在这里插入图片描述
  2. SENTINEL masters :列出所有被监视的主节点及其信息
    Redis-04 主从复制与哨兵_第5张图片
  3. SENTINEL slaves {主节点名}:列出所有被监视主节点的从节点及其信息
    Redis-04 主从复制与哨兵_第6张图片
  4. SENTINEL get-master-addr-by-name {主节点名}: 返回给定名字的主节点的 IP 和端口号,若正在发生故障转移或正在发生故障转移返回新的主节点 IP 和端口号
    在这里插入图片描述
  5. SENTINEL reset {pattern}: 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel
  6. SENTINEL failover {主节点名} : 使当前主节点失效,强制开始一次自动故障迁移

3.4 订阅哨兵频道

PSUBSCRIBE *
Redis-04 主从复制与哨兵_第7张图片

4 总结

主从复制与哨兵,解决了 单点故障 问题和读压力问题
但并没有解决写压力和容量问题
这些问题留在这 点击 解决

你可能感兴趣的:(Redis)