redis个人学习笔记 七:Redis的复制(Master/Slave)

       此文是我看尚硅谷教学视频后的个人的redis学习笔记,每一张截图都是我亲自敲后截图放在笔记中的,粘贴在博客上可能会有点点模糊,若有错误或不足,还望各位大神多多指正!

9 Redis的复制(Master/Slave)

9.1 是什么

       行话:也就是我们所说的主从复制(读写分离),主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

9.2 能干嘛

       ① 读写分离
       ② 容灾恢复

9.3 怎么玩

9.3.1 配库

       配从(库)不配主(库)

9.3.2 从库配置

       ① 命令:slaveof 主库IP 主库端口;
       ② 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件;
       ③ info replication

9.3.3 修改配置文件细节操作

       本次示例用三个客户端测试。
       ① 拷贝多个redis.conf文件
redis个人学习笔记 七:Redis的复制(Master/Slave)_第1张图片
       ② 修改复制了的三个配置文件
redis个人学习笔记 七:Redis的复制(Master/Slave)_第2张图片
       6380和6381以此改。

9.3.4 常用3招

9.3.4.1 一主二仆

       1.Init
       开启三台客户端
redis个人学习笔记 七:Redis的复制(Master/Slave)_第3张图片
       最初时三个客户端的角色都是一样的,都是master
redis个人学习笔记 七:Redis的复制(Master/Slave)_第4张图片
       2.一个Master两个Slave
redis个人学习笔记 七:Redis的复制(Master/Slave)_第5张图片
       3.日志查看
       ① 主机日志
redis个人学习笔记 七:Redis的复制(Master/Slave)_第6张图片
       ② 备机日志
       跟主机操作一样
       ③ info replication
       查看主机从机的信息
       4.主从问题演示
       ① 问题一:当主机设置了值后从机是否可以对同一个key设值?
这里写图片描述
       ② 问题二:当主机关机后,从机的角色是什么?
redis个人学习笔记 七:Redis的复制(Master/Slave)_第7张图片
       当主机关机后,从机是原地待命的。
       ③ 问题三:当主机启动后,再存值,从机可以取到吗?
redis个人学习笔记 七:Redis的复制(Master/Slave)_第8张图片
       ④ 问题四:当从机关机后,再开机,是什么角色?时候还可以取到以前主机的值?
redis个人学习笔记 七:Redis的复制(Master/Slave)_第9张图片
       每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件;
redis个人学习笔记 七:Redis的复制(Master/Slave)_第10张图片

9.3.4.2 薪火相传

       ① 上一个Slave可以是下一个slave的Master,Slave同样可以接收其他,slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力;
       ② 中途变更转向:会清除之前的数据,重新建立拷贝最新的slaveof 新主库IP 新主库端口;
redis个人学习笔记 七:Redis的复制(Master/Slave)_第11张图片
redis个人学习笔记 七:Redis的复制(Master/Slave)_第12张图片

9.3.4.3 反客为主

       SLAVEOF no one:使当前数据库停止与其他数据库的同步,转成主数据库
       ① 第一步
redis个人学习笔记 七:Redis的复制(Master/Slave)_第13张图片
       ② 第二步
redis个人学习笔记 七:Redis的复制(Master/Slave)_第14张图片

9.4 复制原理

       slave启动成功连接到master后会发送一个sync命令,Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
       全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
      增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步,但是只要是重新连接master,一次完全同步(全量复制)将被自动执行即,首次是全量复制,之后的是增量复制,只要是重连了一次主机,就是全量复制。

9.5 哨兵模式(sentinel)

9.5.1 是什么

      反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

9.5.2 怎么玩(使用步骤)

      ① 调整结构,6379带着6380、6381,6379作为主机,80和81作为从机
      ② 自定义的/root/Myredis目录(我自己是这个目录)下新建sentinel.conf文件,名字绝不能错
redis个人学习笔记 七:Redis的复制(Master/Slave)_第15张图片
      ③ 配置哨兵,填写内容
这里写图片描述
      sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
      上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机。
      ④ 启动哨兵
      redis-sentinel /myredis/sentinel.conf,上述目录依照各自的实际情况配置,可能目录不同
redis个人学习笔记 七:Redis的复制(Master/Slave)_第16张图片
      ⑤ 正常主从演示
      ⑥ 原有的master挂了
      ⑦ 投票新选
      ⑧ 重新主从继续开工,info replication查查看
redis个人学习笔记 七:Redis的复制(Master/Slave)_第17张图片
      ⑨ 问题:如果之前的master重启回来,会不会双master冲突?
redis个人学习笔记 七:Redis的复制(Master/Slave)_第18张图片

9.5.3 一组sentinel能同时监控多个Master

9.6 复制的缺点

      复制延时

你可能感兴趣的:(redis)