zoukankan      html  css  js  c++  java
  • Redis学习04:主从复制Replication

    Redis学习04:主从复制Replication

     主从复制是什么

      1-官网描述:https://redis.io/topics/replication

       

     主从复制可以做什么

      1-读写分离

      2-容灾备份

    如何实现主从复制

      1-配置(只需设置从库,无需设置主库)(假设配置一主二从,主端口号为6379,从端口号位6380,6381)

        1-复制redis.conf为redis_slave_6380.conf,并修改redis_slave_6380.conf中的相关配置,如下;其中port和salveof必须设置

    port 6380//设置端口号,必须设置
    slaveof 127.0.0.1 6379//这是主库的IP+port
    daemonize yes//开启守护进程,允许redis可以后台进行
    logfile "log6380.log"//设置日志文件名称
    pidfile /var/run/redis_6380.pid//设置PID文件路径
    dbfilename dump_slave_6380.rdb//设置RDB文件名称

        2-从库6381设置步骤同1,将6380改成6381即可;

        3-确认是否配置成功:依次启动6379,6380,6381Redis服务器,并依次进入三个客户端,执行info replication;结果如下,表示成功;

        4-在主库写入值,从库也可以读取到值

     主从复制的几个细节问题

      1- 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的k1、k2、k3是否也可以复制

        答:是从头开始复制全部数据  

      2- 从机是否可以写?set可否?

        答:从库禁止写入;强制写入,报"(error) READONLY You can't write against a read only slave."异常

      3- 主机shutdown后情况如何?从库是上位还是原地待命

        答:从库原地待命,不会自动升为主库

      4- 主机又回来了后,主机新增记录,从机还能否顺利复制?

        答:可以顺利复制;

      5- 其中一台从机down后情况如何?依照原有它能跟上大部队吗?

        答:从机down后,再次启动就会独立成为新的主机;但是如果从机slaveof ip port是写在配置文件的,那么从机重启后依然会是原主机的从机;

    复制原理

      Slave启动成功连接到master后会发送一个sync命令

      Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步

      全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

      增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步

      但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/wobuchifanqie/p/11851562.html
Copyright © 2011-2022 走看看