Redis主从复制

Redis主从复制前言

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

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

这就要求当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上,这时候就用到了Redis的主从复制。

 

Redis提供了复制(replication)功能来自动实现多台redis服务器的数据同步(每天19点 新闻联播,基本从cctv1-8,各大卫视都会播放)

我们可以通过部署多台redis,并在配置文件中指定这几台redis之间的主从关系,主负责写入数据,同时把写入的数据实时同步到从机器,这种模式叫做主从复制,即master/slave,并且redis默认master用于写,slave用于读,向slave写数据会导致错误。

(一)Redis主从复制配置

方式1:修改配置文件,启动时,服务器读取配置文件,并自动成为指定服务器的从服务器,从而构成主从复制的关系

方式2: ./redis-server --slaveof <master-ip> <master-port>,在启动redis时指定当前服务成为某个主Redis服务的从Slave

三台linux

主redis192.168.184.133
从redis192.168.184.135
从redis192.168.184.136

 

方式1的实现步骤:

  1. 在3台linux都装好redis,参考: Redis单机安装

  2. 在135,136机器上修改从redis的配置

  3. slaveof   主ip  主端口

  4. masterauth 主密码

  5. 133,135,136服务器上的redis依次启动

  6. 登录133主redis登录

  7. 输入:info replication

  8. 登入135从redis

  9. 登入136从redis

  10. 向主redis写入数据,flushall清空数据,避免干扰

  11. 在135,136从redis都可以读到数据库

  12. 向从redis写入数据失败,默认slave-read-only yes,如果为no则可以向从写数据

容灾处理

当Master服务出现故障,需手动将slave中的一个提升为master, 剩下的slave挂至新的master上(冷处理:机器挂掉了,再处理)

命令:

  1. slaveof no one,将一台slave服务器提升为Master (提升某slave为master)

  2. slaveof 192.168.184.135 6379(将slave挂至新的master上)

  3. 将133主redis关闭

  4. 将135从redis提升为主redis

  5. info replication

  6. 在136从redis上执行

  7. info replication,显示136从redis为135主redis的从

  8. 现在主从关系为135为主,136为从

  9. 将原来的133redis添加到主从结构中
  10. 重新启动133服务器上的redis

  11. 登录133redis客户端,执行slaveof 192.168.184.135 6379

  12. 显示OK,但是看控制台显示为,一看就是不能从主上复制,需要密码,查看133配置文件发现没有改masterauth

  13. 修改135主redis密码

  14. 重新在133从redis上执行:slaveof 192.168.184.135 6379,显示日志信息为

  15. 至此主从模式为:135主redis,133从redis,136从redis

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值