一、Redis实现主从复制

概念(了解才能方便实操):

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。

主从复制的作用主要包括:

数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写 少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

实操主要概念:

(1)一主二从

(2)只配置从库,不用配置主库

(3)主机负责写,从机负责读(不能写)

10步实现Redis主从复制:

  1. 首先进入Redis:
  2. Redis输入:info replication
  3. 查看返回:# Replication
    role:master                        #目前是master
    connected_slaves:0          #目前是从机slaves数量为0
  4. 复制操作:
  5. 进入Xftp的myredisconfig文件夹(也可用vim),用记事本可以快速查找修改这三个文件,修改以下5个参数即可:port 6379、daemonize yes、pidfile /var/run/redis_6379.pad、logfile "6379.log"、dbfilename dump6379.rdb。在配置文件的port下添加主机密码以让从机连接时可以访问(否则会显示slaves为0):masterauth 密码
  6. 开启单机多个窗口,在各自窗口输入命令:[root@litao bin]# redis-server myredisconfig/redis81.conf
  7. 查看进程:[root@litao bin]# ps -ef|grep redis  。返回说明三个redis服务已经启动:
  8. 在各自窗口输入命令:[root@litao bin]# redis-cli -p 6379
  9. 默认情况下每台机都是主机,那么自设6380、6381两个为从机salves,在这两台机上输入redis命令将6379端口作为主机:SLAVEOF 127.0.0.1 6379  。在主机输入命令查看是否连接成功:info replication,查看返回:
    role:master                        #目前是master
    connected_slaves:2          #目前是从机slave数量为2
  10. 以上便是(命令行)一主多从的暂时性配置,重启就会变成主机,只能再次设置命令行成为主机,这时会自动进行全量复制/增量复制。若想永久配置,则需要在配置文件中修改。
  11. -------------------永久配置主从复制-------------
  12. 打开配置文件,将这两个参数写好即可:
  13. --------------全量复制和增量复制---------
  14. 全量复制:第一次成为salve或重新成为salve,会进行一次全量复制数据。

    1)主节点收到全量复制的命令后,执行bgsave,在后台生成RDB文件,并使用一个复制缓冲区记录从现在开始执行的所有写命令(防止rdb后的数据丢失)

    2)主节点的bgsave执行完成后,将RDB文件发送给从节点;从节点首先清除自己的旧数据,然后载入接收的RDB文件,将数据库状态更新至主节点执行bgsave时的数据库状态

    3)主节点将前述复制缓冲区中的所有写命令发送给从节点,从节点执行这些写命令,将数据库状态更新至主节点的最新状态

  15. 增量复制:后续的salve都是通过增量复制来同步master的数据
  16. -------------让从节点再次变成主节点---------
  17. 通过命令:saveof no one
  18. ***--------------多哨兵模式-----------****
  19. 概念:在复制的基础上,哨兵实现了自动化的故障恢复,为Redis提供一个高可靠解决方案,对一定程序上的错误,可以不需要人工干预自行解决。

    1、监控:哨兵会不断地检查主节点和从节点是否运作正常。

    2、自动故障转移:当主节点不能正常工作时,被视为主观下线,多哨兵会通过投票视作可观下线,开始自动故障转移操作,它会将失效主节点的其中一个从节点升级为新的主节点,并让其它从节点成为主节点

    3、配置提供者:客户端在初始化时,通过连接哨兵来获得当前Redis服务的主节点地址。

    4、通知:哨兵可以将故障转移的结果发送给客户端

  20. 实操:在配置文件目录下,创建一个文件sentinel.config,在文件内输入:sentinel monitor 自取被监控redis名称myredis79 host 目标port  1(这里的1是指只要有1个哨兵认为主服务器已经下线,主服务器就会被判定为客观下线)。还有目标主机的密码:sentinel auth-pass myredis79 密码

  21. 输入命令启动哨兵:redis-sentinel myredisconfig/sentinel.conf 

  22. 此时关掉6379的redis,查看哨兵日志和其它redis目前状态info replicatiot:

  23. 若这时候6379再次上线,只能成为salve:

     

     

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐