Redis的复制

    1.Redis的复制是什么

          是主从复制,主机数据更新后根据配置和策略,自动同步到背脊的Master/Slave机制,Master负责写,Slave负责读。

    2.作用

         1)读写分离

         2)容灾恢复

    3.如何实现

         1)配从(库)不配主(库)

         2)从库配置:slaveof 主库IP 主库端口

                每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件

                使用Info replication命令

         3)修改配置文件

              1.copy对个redis.cnf文件

                    

redis怎么把master变成slave redis master slave_Redis

              2.开启daemonize yes

                   

redis怎么把master变成slave redis master slave_Redis_02

              3.Log文件名字

                    

redis怎么把master变成slave redis master slave_重新连接_03

              4.Dump.rdb名字

                    

redis怎么把master变成slave redis master slave_Redis_04

     4.常用模式

         4.1 一主二仆

               1.init

                

redis怎么把master变成slave redis master slave_Redis_05

               2.一个Master两个Slave

               

redis怎么把master变成slave redis master slave_重新连接_06

 

              3.日志查看

                 1)主机日志

                     

redis怎么把master变成slave redis master slave_Redis_07

                 2)从机日志

                   

redis怎么把master变成slave redis master slave_重新连接_08

 

                 3)主从问题演示

                  

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

                        

redis怎么把master变成slave redis master slave_Redis_09

                        是从之前的123复制开始

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

                       

redis怎么把master变成slave redis master slave_redis的复制_10

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

                       

redis怎么把master变成slave redis master slave_redis的复制_11

                      

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

                        

redis怎么把master变成slave redis master slave_重新连接_12

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

                       

redis怎么把master变成slave redis master slave_redis_13

         4.2 薪火相传

              1)是什么

               上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力

              2)在一主二仆的基础上实现薪火相传

               

redis怎么把master变成slave redis master slave_redis_14

           

redis怎么把master变成slave redis master slave_重新连接_15

  

     4.3 反客为主

           

redis怎么把master变成slave redis master slave_redis_16

5.复制的原理

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

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

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

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

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

6.哨兵模式

     6.1是什么

          反客为主的升级版,后台监控主机,当主即宕机是,根据投票数自动将从机转换为主机

     6.2如何实现

         1)创建一主二仆

            

redis怎么把master变成slave redis master slave_Redis_17

    6.3 在myredis目录下新建sentinel.conf文件,名字绝不能错

             1)配置哨兵,填写内容

               sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1

               

redis怎么把master变成slave redis master slave_redis_18

    6.4 启动哨兵

             

redis怎么把master变成slave redis master slave_redis_19

    6.5 原有的master挂了

  6.6 问题:如果之前的master重启回来,会不会双master冲突?

      

redis怎么把master变成slave redis master slave_redis的复制_20

       

 7.复制的缺点

       由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

 

8.外部连接linux上的redis

      执行:

         1)/etc/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT   开启6379端口

         2)/etc/rc.d/init.d/iptables save     保存端口

         3)/etc/init.d/iptables restart          重新启动防火墙

         4)/etc/init.d/iptables status           查看防火墙