Redis(五)【主从复制】

  通过持久化功能,Redis 保证了即使在服务器重启的情况下也不会丢失(或少量丢失) 数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,如硬盘坏了,也会导致数据丢失。

  为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台 服务器出现故障其他服务器依然可以继续提供服务。

  Redis 的主从复制就可以实现当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上。

  Redis 提供了复制(replication)功能来自动实现多台 redis 服务器的数据同步。

  通过部署多台 Redis,并在配置文件中指定这几台redis之间的主从关系,主负责写入数据,同时把写入的数据实时同步到从机器,这种模式叫做主从复制,即 master/slave。

  Redis默认master用于写,slave 用于读,向 slave 写数据会导致错误 。

 

  Redis主从复制实现:

  1)新建三个Redis的配置文件,将原有的redis.conf拷贝三份,并将拷贝后的配置文件命名加上新的端口号,以便区分

  2)编辑Master配置文件,在空文件加入如下内容:

    include /usr/local/redis-4.0.13/redis.conf (包含原来的配置文件内容,按照自己的目录设置)

    daemonize yes (后台启动应用,相当于 ./redis-server & 的作用)

    port 6380 (自定义的端口号)

    pidfile /var/run/redis_6380.pid ( 自定义的文件,表示当前程序的 pid ,进程 id)

    logfile 6380.log (日志文件名)

    dbfilename dump6380.rdb (持久化的 rdb 文件名)

  3)编辑Slave配置文件,在空文件中加入以下内容:

    include /usr/local/redis-4.0.13/redis.conf

    daemonize yes

    port 6382

    pidfile /var/run/redis_6382.pid l

    ogfile 6382.log

    dbfilename dump6382.rdb

    slaveof 127.0.0.1 6380  (表示当前 Redis 是谁的从)

    还可以继续添加多个不同端口号的Slave配置文件

  4)启动服务器 Master/Slave都启动,并查看启动进程是否有多个

    

 

   5)查看配置后的服务信息

    5.1) Redis客户端使用指定端口连接Redis服务器 ./redis-cli -p 端口

 

     5.2)在客户端的Redis内执行命令info replication(查看Redis服务器所处角色 )

 

     5.3)切换到Slave端口同样查看信息

 

   6)向Master写数据,向Slave读数据

 

   容灾处理:当Master服务器出现故障,需手动将Slave中的一个提升为Master,剩下的Slave挂至新的Master上

   容灾处理命令:

    1)slaveof no one:将一台Slave服务器提升为Master

    2)slaveof 127.0.0.1 6382(刚提升为Master的服务器地址和端口号)

    3)故障的服务器修复好以后,需要重新挂到现有的Master上:slaveof 127.0.0.1 6382

 

注意: 

  1)一个master可以有多个slave

  2)slave下线,读请求的处理性能会下降

  3)master下线,写请求无法执行

  4)当master发生故障,需手动将其中一台slave使用slaveof no one命令提升为master,其它slave执行slaveof命令指向这个新的master,从新的master处同步数据

  5)主从复制模式的故障转移需要手动操作,要实现自动化处理,需要Sentinel哨兵, 实现故障自动转移

  

 

posted @ 2020-05-28 02:20  Rhettttt  阅读(83)  评论(0)    收藏  举报