美文网首页redis
Redis笔记(六)复制以及高可用

Redis笔记(六)复制以及高可用

作者: huyi0616 | 来源:发表于2017-03-09 08:36 被阅读40次

[图片上传中。。。(1)]
从日志记录来看,从服务器128从主服务器130上备份数据成功

1、为什么要复制

  • 实现数据的多副本存储,实现服务的高可用
  • 提供更好的读性能
  • 提供更好的安全性

2、复制的技术关键点以及难点

  • 如何指定复制对象
  • 增量还是全量以及如何实现增量?
  • 复制时不影响前端业务的操作
  • 网络被中断后如何处理
  • 如何防止发送出去的数据丢失没到到达从服务器
  • 如何识别复制的数据源发生变化,导致数据出错

3、复制步骤

3.1 指定master

  1. 配置文件配置slaveof
  2. 从节点命令行执行slaveof命令

3.2 建立socket连接

  • 从服务器根据配置或者命令行slaveof创建连向主服务器的socket

3.3发送ping命令:当连接创建后发送

  1. 通过ping命令检查socket的读写状态是否正常
  2. 检查主服务器能否正常处理命令请求
  3. 当从服务器不能在规定时间内得到ping的回复,则表示网络不正常,从服务器会断开socket并重新创建连接
  4. 如果从服务器收到主服务器返回一个错误信息,比如BUSY redis is busy runing a script,you can ...,则从服务器会断开连接并创新创建连接
  5. 如果从服务器收到的回应是“ PONG”,则表示一切正常,可以执行下一步流程

3.4 身份验证

  • 如果从服务器设置了masterauth选项,则进行身份验证,否则不就行
  • 通过向master发送美丽的auth来实现认证,比如auth passwd
  • 当master没有设置requirepass时,会提示no passwd is set
  • 如果master的设置与slave的密码不一样,则出现invalid password提示

3.5 发送端口

  • 从服务器执行命令REPLCONF listen-port <port number>,向主服务器发送从服务器的命令监听端口
  • 这个端口号是为了在master上执行info命令是,可以查看到从节点的端口信息

3.6 同步

  • 主从服务器之间互为客户端,可以彼此发送命令和响应回应

3.7 命令传播

  • 主服务器执行完成命令后发送给从服务器

3.8 配置说明

Paste_Image.png

4. 复制

4.1 复制积压缓冲区(repl-backlog)

  • 是一个固定长度的先进先出的队列,默认是1MB
  • 当从节点连接上后,所有导致数据变更的命令完成后都会先进入缓冲队列,再传播给从节点
  • 如何估算backlog的大小:second*write_size_second
    • 每秒产生的数据量
    • 最长等待从链接的时间 repl-timeout
    • 算出来后,讲结果建议乘以2,更安全

4.2 如何判断是否增量同步

  • 如果从传递过来的偏移量+1之后的数据还在缓冲去中,则执行增量同步,如果不在缓冲区中,则执行全量同步
  • 当从节点连接时,发送过来的主的实例id与本机的不一样,则主机会做全量同步
    • 每个redis实例启动后会生成一个实例标识

5. Redis高可用

5.1 高可用应该解决哪些问题

  • 多个节点拥有相同的数据
  • 当主节点宕机后,如何产生新的主节点
  • 当主节点宕机后,从节点如何自动连接到新的主节点
  • 如果判断主节点宕机
  • 旧的主节点恢复后,如何处理
  • 如何监控redis所有节点的监控状态

5.2 什么是哨兵(sentinel)

  • 监控redis节点的健康状态
  • 通知,把监控到的变化通知给相关系统或者redis实例,通过redis的订阅机制实现
  • 自动热备(failover),主节点宕机---选举新的主节点
  • 配置管理,redis实例可以通过sentinel获取到某些共享信息

- Sentinel本身也是分布式,解决了自身单点问题

Paste_Image.png

6. Redis主从复制的配置过程

  1. 这里选择了两台服务器,一台IP是192.168.182.130,一台IP是192.168.182.128,130作为主服务器,128作为从服务器,首先找到从服务器的redis配置文件位置,我是以服务的方式安装,那么首先定位服务的文件位置在/etc/rc.d/init.d/redis(见截图):


    Paste_Image.png
  2. 找到/var/apps/redis/redis-3.2.5/6379.conf


    Paste_Image.png
  3. 打开/var/apps/redis/redis-3.2.5/6379.conf,找到slaveof 配置项目,修改为主服务器的ip和端口
[root@localhost redis-3.2.5]# vi /var/apps/redis/redis-3.2.5/6379.conf
Paste_Image.png
  1. 配置成功后,需要重启从服务器的redis服务
    我们可以通过日志看到主从复制成功


    Paste_Image.png

相关文章

  • Redis笔记(六)复制以及高可用

    [图片上传中。。。(1)]从日志记录来看,从服务器128从主服务器130上备份数据成功 1、为什么要复制 实现数据...

  • Redis哨兵集群

    redis-sentinel主从复制高可用 Redis-Sentinel Redis-Sentinel是redis...

  • Redis的高可用,哨兵机制Sentinel

    上一篇聊了Redis的主从复制以及实现原理,下面会在复制的基础上来说说Redis的高可用方案:哨兵机制 哨兵机制 ...

  • Redis高可用原理

    1 Redis高可用常见的有三种方式: 主从复制 哨兵模式 Redis集群 2 复制 在Redis中,可以通过执行...

  • 8.Redis复制、哨兵、集群

    Redis复制、哨兵、集群 Redis实现高可用相关的技术,它们包括:持久化、复制、哨兵和集群,其主要作用和解决的...

  • 14. Redis 主从复制

    9. Redis高可用集群 9.1 主从复制架构 主从模式(master/slave), 可以实现Redis数据的...

  • 深入学习Redis:持久化

    从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化、复制(及读写分离)、哨兵、以及集群。 本文将先说明...

  • Redis 复制搭建

    Redis 为我们提供了复制功能,实现了相同数据的多个 Redis 副本节点。复制功能是高可用 的基础,也是哨兵和...

  • redis主从复制和哨兵机制

    主从复制 Redis主从复制作用:数据备份,读写分离,集群,高可用,宕机容错机制Redis只支持一主(有继承关系)...

  • Kubernetes Redis 高可用方案

    Redis 高可用方案常用的有两种:Redis Sentinel 和 Redis Cluster ,本篇笔记介绍这...

网友评论

    本文标题:Redis笔记(六)复制以及高可用

    本文链接:https://www.haomeiwen.com/subject/ncebgttx.html