redis_06_主从复制,宕机,哨兵

【redis_06_主从复制,宕机,哨兵】
主从复制,宕机,哨兵

  • 1. 主从复制概念
  • 2. 主从复制的好处
  • 3. 主从复制设置
    • 3.1 在master的redis.conf中设置
    • 3.2 主从复制 slave的配置
    • 3.3 测试主从复制
  • 4. 主从复制的原理过程
  • 5. ==主从复制出现宕机==
  • 6. 哨兵
    • 6.1 ==哨兵的工作流程==

1. 主从复制概念
  • 可以用多个redis.server来组成一个集群,让其中一个作为主服务器,其他作为从服务器,从服务器会自动从主服务器上同步数据,可以分布一些读的操作。主服务器master的RDB备份的工作可以交给从服务器slave。
  • master:可以关闭rdb快照,开启aof(写操作)
  • slave:声明一个slave-of;某一个slave打开rdb的快照功能,配置是否只读slave-read-only;可以选配置密码;
  • 每次slave断开后,再次连接master时全部的dump出来的rdb再aof,即同步的过程需要重新再来一次,多个slave不要一下全部启动
2. 主从复制的好处
  • 避免redis单点故障
  • 构建读写分离结构,满足读多写少的应用场景
3. 主从复制设置
  • 拿port的端口号为6379 6380来测试
  • 其中6379为master 6380位slave
3.1 在master的redis.conf中设置
  • port 6379
  • pidfile /var/run/redis_6379.pid
  • rdb关闭 rdb的备份工作交给slave,开启aof
    redis_06_主从复制,宕机,哨兵
    文章图片

    -# replicaof redis_06_主从复制,宕机,哨兵
    文章图片
  • logfile "/data/logs/redis.master.log"
3.2 主从复制 slave的配置
  • port 6380
  • pidfile /var/run/redis_6380.pid
  • replicaof 127.0.0.1 6379
  • replica-read-only yes
  • logfile "/data/logs/redis.slave1.log"
3.3 测试主从复制
  • 要先打开master的redis1服务 ./bin/redis-server redis.conf
  • 打开slave的redis服务器 ./bin/redis-server redis6380.conf
  • 新建会话窗口1 ./bin/redis-cli -p 6379
  • 新建会话窗口2 ./bin/redis-cli -p 6380
  • 在会话1info replication 可以查看角色信息
    redis_06_主从复制,宕机,哨兵
    文章图片
  • 在会话窗口2info replication查看slave的角色信息,说明配置成功
    redis_06_主从复制,宕机,哨兵
    文章图片
  • 只能在master中设置信息,slave中只能读取信息不能写
    redis_06_主从复制,宕机,哨兵
    文章图片
  • mster写的信息,在slave中可以显示出来 说明主从复制备份成功。
4. 主从复制的原理过程
  • 当从库与主库建立MS的关系之后,从库向主数据库发送同步sync命令
  • 当主库接收到从库的sync命令之后会保存快照数据(rdb持久化过程),并将期间接受到的命令缓存起来
  • 当快照完成后,主redis会将快照文件和所有缓存的写命令发送给从redis
  • 从redis接受后,会载入快照文件并且执行收到得缓存命令
  • 主redis每当接受到写的命令时就会将命令发送给redis,从而保证了数据的一致性。
5. 主从复制出现宕机
  1. 从redis宕机
    a) 在redis中从库重新启动后会自动加入到主从架构中去,自动完成同步数据
    b)如果从库在断开期间,主库变化不大,从库再次启动,主从断线后redis2.8以后是增量复制(会有记录上一次执行到的地方,中断后以及现在的地方,就复制中间的差的那一截儿)
  2. 主redis宕机
    a)首先要在从数据库中设置slave no one 的命令,断开主从的关系,并且提升为主库继续服务(断开主从关系,以为主句宕机,再次启动时数据清空了,如果主从关系还在,会把从库的数据也弄丢,所以要先断开主从的关系)
    b)将主库重新启动后,作为执行slave命令,将它设置为现在主库的从库(就是在原来主库宕机后,从从库中选举出来的新的主库),此时通过主从复制,原来主库丢失的数据又回来了。(但是人来操作很麻烦,故而有了哨兵)
6. 哨兵
  • 哨兵的作用是对redis的系统的运行情况的监控,它是一个独立的进程
    功能
  1. 监控主数据库和从数据库是否正常运行
  2. 主数据库出现故障后自动将选举leader,选举出新的主数据库,并把之前的主数据库作为新主数据库的从数据库
  • 当时单个哨兵也容易出现单个哨兵单点故障,所以一般多个哨兵;多个哨兵每个哨兵不仅要监控主从数据库,哨兵之间也要相互做监控。
6.1 哨兵的工作流程
  • master宕机时,哨兵监测到master宕机
  • 开始恢复故障
  • 通过投票选举出哨兵的leader
  • 再从从库中选举一个从库作为主库
  • 发送slaveof no one命令
  • 等待升级为master
  • 故障恢复完成
  • 将之前的主库变成现在的从库
    redis_06_主从复制,宕机,哨兵
    文章图片

    推荐阅读