Redis的主从复制
作者:互联网
一、什么是主从复制
- 主服务器用于写入数据,从服务器用于读取数据,master/slaver机制,master写,slaver读
- 有什么作用
- 实现读写分离,减缓服务器压力
- 容灾快速恢复
二、实现组从复制(一台服务器模拟)
- 新建myredis文件夹并将redis配置文件复制到该目录下
- 配置一主俩从,创建三个配置文件:redis6379.conf、redis6380.conf、redis6381.conf,先将刚才复制文件的AOF关闭
- 创建并编辑3个配置文件,直接使用vim创建
- 启动三个服务
- 此时3个服务没有主从关系,使用
info replication
可以查看
· - 配置从机
slaveof <ip> <port>
,成为某个实例的从服务器。在6380和6381上执行,完成后查看6379信息
- 测试,在主机上存数据,在从机上读取,从机上写数据会报错
8. 注意:如果从服务器挂掉了,在从服务器从挂掉到重启的时间内,主服务器又添加了数据,从服务器还是可以获取这些数据的。从服务器挂掉后重启并不会成为从服务器,还需要手动加入到集群中
6381挂掉以后主服务器又添加了2条数据
重启6381并查看信息,发现是主服务器,并不是从服务器
将6381添加到从服务器中并获取key可以发现挂掉之后主机新存入的key也存在
一主二仆:slave1和slave2复制时机是从头开始复制,比如从k4进来,k1,k2,k3也可以复制,在从机挂掉后,重启从机需要手动将从机加入集群,主机挂掉后从机并不会替代主机的位置,而是等待主机重启,重启后主机依然有俩个从机。
三、复制原理
- 从服务器连上主服务器后,相主服务器发送一个进行数据同步的消息;
- 主服务器收到消息后会将主服务器的数据持久化(RDB),发送给从服务器,从服务器拿到RDB读取;
- 每次主服务器进行写操作后,会和从服务器进行数据同步;
薪火相传:
设置一台从服务器为另一台从服务器的主服务器,主服务器将数据同步到这个服务器上,这个服务器再将数据同步到子服务器上,可以减轻主服务器的压力。设置方法和设置主服务器相同。遵循一主二仆,但是作为主机的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自动为从机
哨兵选择主机的机制:
- 选择优先级靠前的 优先级在conf文件中默认配置replica-priorify 100,值越小优先级越高
- 选择偏移量大的 指和主机同步值最高的
- 选择runid最小的服务 每个redis实例启动后都会随机生成一个40为的runid
标签:主从复制,主机,Redis,挂掉,6379,从机,6381,服务器 来源: https://blog.csdn.net/qq_45655489/article/details/118677292