Redis_主从复制

Redis 主从复制

1. 概述

  • 数据的复制都是单向的, 只能由主节点到从节点, Master 以写为主, Slave 以读为主
  • 主从复制, 读写分离, 主要是解决读的问题 ==> 80% 的情况下都是在进行读操作! 减缓服务器的压力! 架构中经常使用! 一主二从
  • 默认情况下, 每台Redis服务器都是主节点

2. 环境配置

只配置从库, 不用配置主库

  • info replication ====> 查看当前库的信息

  • image-20201026092031805

  • 复制三个配置文件, 然后修改对应的信息

    • 端口号
    • image-20201026093109953
    • 文件的pid
    • image-20201026093217136
    • log文件
    • image-20201026093348107
    • 持久化的文件名
    • image-20201026093329403
  • 打开服务, 看到生成了对应的log文件, 说明该服务已经成功启动了!

  • image-20201026093630385

  • 查看我们开启的redis服务

  • image-20201026093753698

3. 一主二从搭建

  • 我们一般情况下, 只用配置从机就好了!

  • 认老大, 一主(79)二从(80,81)

  • 从机配置 ====> slaveof host port

  • image-20201026095015889

  • 主机的信息

  • image-20201026095131464

  • 真实的主从配置应该在配置文件中配置, 这样的话就是永久的!, 在配置文件中的replication下配置replicaof

4. 细节

  • 主机可以写, 从机不能写, 只能读

  • image-20201026100720672

  • 主机中的所有信息和数据, 都会自动被从机保存

  • 主机断开连接, 从机依旧连接到主机, 但是没有些操作了. 如果主机回来了, 从机依旧可以直接获取到主机写的信息

  • 如果是是用命令行来配置的主从, 这个时候, 如果重启了, 就会变回主机

  • 只要变回从机, 立马就会从主机中获取值!

  • 命令 slaveof no one ====> 使自己成为主机, 其他的节点就可以手动连接到这个最新的主节点

5. 哨兵模式

  • 自动选取老大的模式!

  • Redis从2.8开始正式提供了 Sentinel (哨兵) 架构来解决这个问题

  • 哨兵是一个独立的进程, 他会独立运行, 其原理是 哨兵通过发送命令, 等待 Redis 服务器响应, 从而监控运行的多个Redis实例

  • 我们可以使用多哨兵模式, 哨兵之间也会进行监控

1. 测试

  • 我们目前的状态是一主二从

  • 配置哨兵配置文件

    • 新建 sentinel.conf 文件

    • 在配置文件中写如下配置 (这是最核心的配置)

    • #sentinel monitor myredis 被监控的名称 127.0.0.1 主机的ip地址 6379  主机的端口 1
      sentinel monitor myredis 127.0.0.1 6379 1
      
    • 后面的这个数字 1 代表主机挂了之后, slave 投票看让谁接替成为主机, 票数最多的, 就会成为主机

  • 启动哨兵

    • redis-sentinel 配置文件的路径
    • image-20201026103901086
  • 如果主节点挂了, 哨兵过一会可以发现, 并投票选出新的主节点

  • image-20201026104405256

  • 主节点回来之后, 只能作为从机

  • image-20201026105034528

2. 优缺点

  • 优点
    • 哨兵集群, 基于主从复制模式, 所有的主从配置的优点, 他全有
    • 主从可以切换, 故障可以转移, 系统的可用性就会更好
    • 哨兵模式就是主从模式的升级, 手动到自动, 更加健壮
  • 缺点
    • Redis不好在线扩容, 集群容量一旦到达上限, 在线扩容就十分麻烦
    • 实现哨兵模式的配置其实是很麻烦的, 里面有很多选择!
posted @ 2020-10-26 10:59  山人西来  阅读(102)  评论(0编辑  收藏  举报