微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis的主从复制

一、什么是主从复制

  1. 主服务器用于写入数据,从服务器用于读取数据,master/slaver机制,master写,slaver读

    在这里插入图片描述

  2. 有什么作用
    1. 实现读写分离,减缓服务器压力
    2. 容灾快速恢复

二、实现组从复制(一台服务器模拟)

  1. 新建myredis文件夹并将redis配置文件复制到该目录下

    在这里插入图片描述

  2. 配置一主俩从,创建三个配置文件:redis6379.conf、redis6380.conf、redis6381.conf,先将刚才复制文件的AOF关闭
  3. 创建并编辑3个配置文件,直接使用vim创建

    在这里插入图片描述

    在这里插入图片描述

  4. 启动三个服务

    在这里插入图片描述

  5. 此时3个服务没有主从关系,使用info replication可以查看
    ·

    在这里插入图片描述

  6. 配置从机slaveof <ip> <port>,成为某个实例的从服务器。在6380和6381上执行,完成后查看6379信息

    在这里插入图片描述

  7. 测试,在主机上存数据,在从机上读取,从机上写数据会报错

在这里插入图片描述


在这里插入图片描述


8. 注意:如果从服务器挂掉了,在从服务器从挂掉到重启的时间内,主服务器又添加了数据,从服务器还是可以获取这些数据的。从服务器挂掉后重启并不会成为从服务器,还需要手动加入到集群中

6381挂掉以后主服务器又添加了2条数据

在这里插入图片描述


重启6381并查看信息,发现是主服务器,并不是从服务器

在这里插入图片描述


将6381添加到从服务器中并获取key可以发现挂掉之后主机新存入的key也存在

在这里插入图片描述


一主二仆:slave1和slave2复制时机是从头开始复制,比如从k4进来,k1,k2,k3也可以复制,在从机挂掉后,重启从机需要手动将从机加入集群,主机挂掉后从机并不会替代主机的位置,而是等待主机重启,重启后主机依然有俩个从机。

三、复制原理

  1. 从服务器连上主服务器后,相主服务器发送一个进行数据同步的消息;
  2. 主服务器收到消息后会将主服务器的数据持久化(RDB),发送给从服务器,从服务器拿到RDB读取;
  3. 每次主服务器进行写操作后,会和从服务器进行数据同步;

薪火相传
 设置一台从服务器为另一台从服务器的主服务器,主服务器将数据同步到这个服务器上,这个服务器再将数据同步到子服务器上,可以减轻主服务器的压力。设置方法和设置主服务器相同。遵循一主二仆,但是作为主机的slave挂了,后面的slave都无法备份。

反客为主
 当主服务器挂掉后,让一台从服务器变成主服务器,slaveof no one,注意,变成这个主服务器的从服务器需要是其他从服务器的主服务器。

四、哨兵模式

是什么

 反客为主的自动版,能够监视后台主机是否故障,如果出现故障根据投票数自动将主机转化为从机。

怎么做:
 首先将结构转化为一主二仆6379带着6380和6381,在myredis目录下新建一个名字为sentinel.conf文件

在这里插入图片描述


sentinel:哨兵
monitor:监控
mymaster:主机名字(自己取得名字)
最后的1表示有多少个哨兵同意迁移的数量
redis-sentinel sentinel.conf执行哨兵,再将主机停掉,查看输出

哨兵监视到6379挂了:

在这里插入图片描述


选择6381为新主机:

在这里插入图片描述


将6380和6379设置为从机:即下一次启动6379,无需手动设置从机,6379自动为从机

在这里插入图片描述


哨兵选择主机的机制

  1. 选择优先级靠前的 优先级在conf文件认配置replica-priorify 100,值越小优先级越高
  2. 选择偏移量大的 指和主机同步值最高的
  3. 选择runid最小的服务 每个redis实例启动后都会随机生成一个40为的runid

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐