主从复制
一、概述
主从复制是一种防止服务器容灾的技术,将一台redis服务器的数据复制到另一台redis服务器中。
-
前者为主节点 master
将写操作保存到主节点
-
后者为从节点 slaver
将读操作保存到从节点
一般是一个主节点管理多个从节点
通过将读和写进行分离存储,避免容灾(高访问 高并发后无法读取数据),如果有从节点宕机 无法访问,由于多个从节点都可以进行访问 读取数据,可以及时响应
二、实现
先创建一个文件夹 用于存放操作主从复制的文件
将配置文件复制到 文件夹中
-
将该文件的aof关闭 并且创建 3个用于主从复制的配置文件
redis6379.conf
redis6380.conf
redis6381.conf
配置文件中填写内容,对于公共部分直接引用现成的redis.conf
对于自己的部分,例如pid 端口号 rdb文件名称这些需要自己填写

开启三个服务器(目前这些都是master)
之后在6380 6381中执行
slaveof ip port
后将本机设置为对应的从机 slaver
- 使用命令查看 本机状态
info replication
可以看到本机是从机还是主机

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

复制原理
步骤:
从服务器向主服务器发送数据同步消息
主服务器会生成一个rdb文件发送给从服务器进行数据同步
每当主服务器进行写操作 都会主动对从服务器进行数据同步
复制方式:
-
全量复制
全部数据进行同步
-
增量复制
只同步每次新增的写数据
异常:
当主服务宕机:从服务器还是从服务器,不会改变
当从服务器宕机:从服务器再次启动后会从slave 变为 master
二、薪火相传
薪火相传就是一台主机同时同步数据 / 管理从机数量过多会力不从心,不方便管理,此时让一台从机管理几台从机,这样形成架构会减少主机管理负担

当管理从机的从机宕机 会导致其管理的从机无法同步数据,因为主机不能直接管理
三、反客为主
当主机挂掉,正常从机是不会改变的,就是从机还是从机,反客为主就是当主机宕机,从机会变为主机。
使用:
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
当主机宕机会从从机中选举出一个主机
选举规则:
- 按照配置文件中 优先级参数(越小优先级越高)
replica-priority 100
-
按照偏移量
偏移量就是从机和主机的数据完整度(例如从机1中有8个数据 从机2中有9个数据 主机一共10个数据,就会选从机2)
-
按照runid
每个从机都会有一个随机生成的runid 这个runid数值小的会被选为master
也就是说随机抽取一个选为master