Redis_主从复制

主从复制

一、概述

主从复制是一种防止服务器容灾的技术,将一台redis服务器的数据复制到另一台redis服务器中。

  • 前者为主节点 master

    将写操作保存到主节点

  • 后者为从节点 slaver

    将读操作保存到从节点

一般是一个主节点管理多个从节点

通过将读和写进行分离存储,避免容灾(高访问 高并发后无法读取数据),如果有从节点宕机 无法访问,由于多个从节点都可以进行访问 读取数据,可以及时响应

二、实现

  1. 先创建一个文件夹 用于存放操作主从复制的文件

  2. 将配置文件复制到 文件夹中

  3. 将该文件的aof关闭 并且创建 3个用于主从复制的配置文件

    • redis6379.conf

    • redis6380.conf

    • redis6381.conf

  4. 配置文件中填写内容,对于公共部分直接引用现成的redis.conf

对于自己的部分,例如pid 端口号 rdb文件名称这些需要自己填写

image-20220109225306259.png
  1. 开启三个服务器(目前这些都是master)

  2. 之后在6380 6381中执行

    slaveof ip port

后将本机设置为对应的从机 slaver

  1. 使用命令查看 本机状态
    info replication

可以看到本机是从机还是主机

image-20220109233849001.png

测试

在主机可以写操作 从机不可以

image-20220109234015171.png

复制原理

步骤:

  1. 从服务器向主服务器发送数据同步消息

  2. 主服务器会生成一个rdb文件发送给从服务器进行数据同步

  3. 每当主服务器进行写操作 都会主动对从服务器进行数据同步

复制方式:

  • 全量复制

    全部数据进行同步

  • 增量复制

    只同步每次新增的写数据

异常:

当主服务宕机:从服务器还是从服务器,不会改变

当从服务器宕机:从服务器再次启动后会从slave 变为 master

二、薪火相传

薪火相传就是一台主机同时同步数据 / 管理从机数量过多会力不从心,不方便管理,此时让一台从机管理几台从机,这样形成架构会减少主机管理负担

无标题.png

当管理从机的从机宕机 会导致其管理的从机无法同步数据,因为主机不能直接管理

三、反客为主

当主机挂掉,正常从机是不会改变的,就是从机还是从机,反客为主就是当主机宕机,从机会变为主机。

使用:

slaveof no one

主动实现反客为主,哨兵模式会将手动变为自动

四、哨兵模式 sentinel

哨兵模式就是 当主机宕机 从机反客为主的过程自动化

创建一个配置文件(sentinel.conf):

sentinel monitor mymaster 127.0.0.1 6379 1
mymaster :主机名
127.0.0.1 :主机ip
6379 :主机port
1 : 监视主机的哨兵数量

开启哨兵模式:

redis-sentinel sentinel.conf

当主机宕机会从从机中选举出一个主机

选举规则:

  1. 按照配置文件中 优先级参数(越小优先级越高)
    replica-priority 100
  1. 按照偏移量

    偏移量就是从机和主机的数据完整度(例如从机1中有8个数据 从机2中有9个数据 主机一共10个数据,就会选从机2)

  2. 按照runid

    每个从机都会有一个随机生成的runid 这个runid数值小的会被选为master

    也就是说随机抽取一个选为master

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容