Bootstrap

【Redis7】主从复制-初步入门

Redis-主从复制

需求

​ 单机版的Redis服务器在运行过程中,如果发生宕机会导致缓存服务直接中断,缺乏高可用性,目前的解决方法是搭建多台Redis服务器,主从复制就是来解决这个问题的。

  • 其中一台作为主服务器(主机),主要用于接受用户的写命令。
  • 其它的作为从机,主要用于用户读取数据,其数据来源就是直接复制主机内的数据集。

使用方法

  1. 区别:主机和从机的主要区别在于配置上,原生都是Redis服务器
  2. 配置方法:

前提刚要:注意用vmware开多台虚拟机玩主从复制,先把主机的防火墙关了,或者像下面这样给主机的端口号设置到防火墙的白名单上(设置好之后,一般重启虚拟机之后就会失效,有时候从机连接不上主机基本都是这个问题)
Alt
Alt
![Alt](https://img-blog.csdnimg.cn/direct/0fb72175c9ef40d7ae4ee77975f8405b.png)

  1. 一劳永逸:在配置文件中配置主机的IP地址和端口号,以及主机的访问密码。
    Alt

  2. 临时起意:通过在客户端的命令直接配置主机IP地址(需要提前在配置文件中配置好主机的访问密码),不过,关闭掉从机再重启,连接的主机就会失效,具体查看常用命令中的“连接主机”。

常用命令

  1. 查看主从复制信息:INFO replication。
    Alt
  2. 连接主机:slaveof 主机IP地址+端口号(配置文件里配好主机访问密码)。
  3. 从机恢复成主机:slaveof no one ,兽人永不为奴。

日志

  1. 设置日志路径:
    Alt

  2. 主从复制成功样例(日志文件中查看):
    在这里插入图片描述

注意事项

  1. 从机会复制主机当前缓存中所有的数据,包括从机之前还没有连接上主机时,主机存入缓存的数据。
  2. 主机宕机之后,从机会停止工作,直到主机上线,主从关系仍然保持。

复制原理和大致工作流程

  1. 主机接受从机的sync(同步)请求,开始准备数据。
    Alt

  2. 从机接受来自主机的RDB快照和新的修改命令(缓存),开始全量复制,就是直接把数据完完整整搬到从机里面。

  3. 保持主从机之间的通信,默认是每隔10秒,确认一次主机或从机是否在正常工作。

  4. 开始主从机的日常工作,主机接受到了啥写命令(修改操作)就传到slave(从机)那里,完成数据同步。

  5. 如果从机宕机了,从机是如何恢复数据的?
    首先,这里要先了解,主机和从机都会维护一个offset(偏移量),存储在backlog中,offset类似数据的时间坐标,主机每次从机同步了n字节的数据,offset = offset + n,从机每次从主机同步了n字节的数据也会更新偏移量,即offset = offset + n,offset主要用于判断主机和从机之间的数据库状态是否保持一致。
    然后,从机宕机一段时间之后,偏移量和主机发送不一致,从机重新启动的时候,会从当前偏移量开始复制数据(数据大小不超出复制缓存积压区),

优点

  1. 读写分离
  2. 容灾恢复(容灾概念:容灾(Disaster Tolerance),就是在自然灾害、设备故障、人为操作破坏等的灾难发生时,在保证生产系统的数据尽量少丢失的情况下,保持生存系统的业务不间断地运行。)
  3. 数据备份
  4. 水平扩容支持高并发

缺点

  1. 主机寄了,从机不会自己上位,直接开始摆烂,需要靠人工去管控,直到主机上线,从机才上班。
  2. 从机多了,跟主机之间的通信就多了,会导致主机性能的下降
;