title: 【学习之路】Redis主从复制
draft: true
tags:


Redis主从复制概述

  1. redis主从复制是自动同步到备机的master/slaver机制,master以写为主,slave以读为主
  2. 主要是为了解决读写分离与容灾恢复

如何实现主从复制

  1. 输入SLAVEOF 主机IP地址和端口号让这台机器变成slaver
  2. 通过info replication查看当前redis状态

主从复制细节问题


一主二仆

  1. 主机存入的key值在从机上可以取到
  2. 当一台主机还没有成为另一台主机的从机,主机提前存入key值,当另一台主机成为这台主机的从机也能取到该值
  3. 如果主机和从机要同时存入一个key,主机如果先存入当前key值从机再存入那么就会报错
  4. 当主机故障,数据还会保存,从机原地待命
  5. 当故障主机重新恢复,那么从机继续运行,可以取到主机新添加的值
  6. 当从机故障,不干扰其他从机正常运行,如果故障从机恢复那么会重新成为master,除非写进配置文件

薪火相传

  1. slave链接master下一台主机链接上一台slave
  2. 链接下一台主机的slave使用info replication 查看的时候当前主机还是slave只是链接了另一台slave
  3. 如果中途跟新链接会清除之前的数据,重新建立拷贝最新的

反客为主

  1. 当主机故障,可以使用SLAVEOF no one让从机变为主机,其他从机需要手动切换到该主机的从机
  2. 如果故障主机重新恢复,那么上面两台主机与恢复主机并没有任何关系

主从复制复制原理

  1. slave启动成功后连接到master后会发送一个sync命令,master接到命令后启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕后,master将传送整个数据文件到slave,已完成一次完全同步
  2. 全量复制:slave服务在接收到数据库文件数据后,将其存盘并加载到内存中
  3. 增量复制:master继续将新的所有收集到的修改命令依次传给slave,完成同步
  4. 如果只要是重新链接master,全量复制就会被自动执行

哨兵模式(sentinel)

哨兵模式时反客为主的自动版本

  1. 打开sentinel.conf的文件

  2. 文件里写入sentinel monitor [被监控数据库名字(自己起名字)] [主机IP] [端口] [如果票数大于多少让从机成为主机]

  3. 启动哨兵模式:redis-sentinel 配置文件路径

  4. 如果master故障,那么哨兵检测到之后,就会对master下的slave主机进行投票选出新的master

  5. 如果故障的master重新恢复,哨兵机制自动检测到之后,将恢复的master变为新选举出来master的slave

  6. 一组sentinel可以监视多个master