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,一次完全同步(全量复制)将被自动执行

 

posted on 2019-11-19 20:38  我不吃番茄  阅读(210)  评论(0编辑  收藏  举报