redis 的主从复制 总结

时间:2022-06-05 05:18:37

redis 在服务器集群方面 有 主从复制的用法,  这种方法主要是用来对 系统做分布式的时候, 当一台redis 服务器挂机之后  ,服务扔可以访问, 也就是说 程序的高可用性 得以保障


大至可发分为三种模式

1 .  一主二仆 (假设三台服务器   分别是 redis6379      redis6380   redis 6381)

其构架是  一台主(redis) 服务器  其下挂两台  从服务器  (其配置原则是    配从 不配主)

1)  主服务器  中  修改 redis6379.conf

daemonize : yes  //修改redis在后台运行

port : 6379

pidfile /var/run/redis_6379.pid  (这个地方本可以不用改,但是我们是在一台机上模似的 所以 redis运行时会在/var/run/ 文件夹下生成的 进程文件名还是修改一下)

logfile "redis6379.log"  //给主服务器上的日志文件命个名

dbfilename dump6379.rdb  //给主服务器上的 rdb 数据库命一个名字,以便区分

2) 从服务器  拷贝  redis6379.conf  并改名为   redis6380.conf  ,用作redis6380从服务器的  配置文件  ,之后进行相应的修改

daemonize : yes //在后台运行

port : 6380

pidfile /var/run/redis_6380.pid   // 设置生成的pid文件名

logfile "redis6380.log"  //给该从服务器日志文件命名

dbfilename dump6380.rdb  //给从服务器上的rdb数据库 设置一个文件名,以便区分

3)  重复步骤2 , 注意这里应该是 6381了

4)   分别启动三个  redis 服务器      ./redis-server redis6379.conf                    ./redis-server  redis6380.conf                   ./redis-server  redis6381.conf

5)   启动之后 开启客户端      ./redis-cli -h 127.0.0.1 -p 6379                        ./redis-cli -h 127.0.0.1 -p 6380                     ./redis-cli -h 127.0.0.1 -p 6381

6)   在每一个客户端下 输入命令                  info replication                             info replication                                                info relicaption

观察一下显示                这时三个服务器都是一个立的服务  所以  role  master (角色都是 master)

7) 配置主从服务         此时 主服务器不用配  ,在两个从服务器的客户端输入        ./slaveof  127.0.0.1 6379                          ./slaveof 127.0.0.1  6379

8) 然后再在每个客户端输入                         info replicationinfo replication info replication

观察一下显示 可以发现  主服务器(6379) 上显示  (role master )  并且有两台 slave 连接 分别是 6380和6381

从服务器6380  上显示  (role slave)

从服务器6381 上显示(role slave)

这是主从复制配置好了   

ps: 这个时候的主从复制   (主服务器6379) 是可读可写的   从服务器(6380  6381) 是只能读 不能写的   如果想可写  可以在redis.conf文件中配置

当从服务器第一次连接上 主服务器时  ,  数据库使用的是全量复制  (把主服务器上的所有数据都拷到从服务器上)

之后 就是 增量的复制   只把新加入的拷贝过来

当主服务器挂机的时候   两个从服务器保持静默状态   这时 两个从服务器的角色还是  slave ,它们会一直等待 主服务器 (6379) , 当主服(6379) 重新上线的时候, 主仆关系不会发生改变

当然这种方式也可以改变  ,以后说的  哨兵模式  就可以解决这个问题

哨兵模式时     当主服务器挂机的时候     ,  两个从服务器会自动  选举出一个来充当 主服务器  另一个当从服务器  ,如果以前的主服务器再重新上线的话,  不会再认它了




第二种  我们叫它"星火相传" 模式

也就是说  把 服务器(redis6379当主服)      把 服务器(6380 ) 配置成  服务器(6379) 的从服      然后把 服务器 6381 配置成 服务器6380  的从服务器

就好像是手拉手的一个一个的传下去的样子

大置配置如下

主服 6379 不用配

从服 6380                        slave 127.0.0.1 6379

从服 6381    slave 127.0.0.1 6380

这样就可以了



如果想要自动化一点  就可使用  哨兵模式了

哨兵模式时     当主服务器挂机的时候     ,  两个从服务器会自动  选举出一个来充当 主服务器  另一个当从服务器  ,如果以前的主服务器再重新上线的话,  不会再认它了


哨兵模式的配置方法

1.自定义的/myredis目录下新建 sentinel.conf  文件,名字绝不能错

2. vim  编辑 sentinel.conf 文件  头一行  顶格写   sentinel monitor 主机名称(自己起名字) 127.0.0.1 6379 1

如  :   sentinel monitor  localhost  127.0.0.1  6379  1            //这里是哨兵要  监视的 主服务器的主机名   ip地址   端口号    最后的1  表示开启监视

3  执命令  redis-sentinel /myredis/sentinel.conf                 // redis-sentinel  命令在redis的安装目录中,    sentinel.conf  则是第二步编写的  ,视情况写上相应的命令位置和配置文件的位置


这样就配置完成了

当主服挂了之后    会从从服中选一个出来充当主服  ,  当原来的主服重新上线了之后,  不会再认它当主服 , 主且新上线的原来的主服会自动的变为从服



OK完结