redis 主从复制

redis 通过主从复制可以允许多个salve server拥有和master server相同的数据库副本。

Redis主从复制的特点:

1.Master可以拥有多个Salve

2.多个Slave可以连接同一个Master外,还可以连接到其他的Slaver。(这样就有机会将Master做成主备。根据心跳当Master挂掉的时候,备用的Slaver可以迅速变为Master)

3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

4.提高系统的伸缩性

 

Redis主从复制的过程:

1.Slave与Master建立连接,发送sync同步命令

2.Master收到命令后会启动一个后台进程,将数据库快照保存到文件中(RDB持久化过程),同时master 主进程会开始收集新的写命令并缓存

3.当快照完成过,Master会将快照文件和所有的缓存发送给slave

4.Slave接收到后,会载入快照文件并且执行收到的缓存的命令

5.之后,Master每当接收到写命令时就会将命令发送给Slave,从此保证数据的一致性

 

注: 主库接收到SYNC命令时会执行RDB持久化过程,即使在配置文件中的禁用RDB持久化也会生成。如果主库所在的磁盘的IO性能较差,那么这个复制过程就会出现瓶颈,可以开启redis的无磁盘复制功能

repi-diskless-sync yes

原理就是:Redis在与从数据库进行复制初始化时将不会将快照存储到磁盘,而是直接通过网络发送给从数据库,避免了IO性能差的问题

 

配置主从服务器:

配置slave服务器,只需要在slave的配置文件中加入以下配置

slaveof  masterip  port # 指定master的IP和port

masterauth 密码   #master的密码

或者在启动slave以后,采用redis-cli连接后执行 slaveof masterip port 这条指令

 

主从架构架构中出现宕机:

1.Slave宕机

   Slave重新启动加入到主从架构时,自动完成同步数据。在redis2.8之前是进行的全量复制,在redis2.8之后是进行的增量复制。

2.Master宕机

   1).在Salver中执行slaveof no one命令,断开主从关系。防止主库起来后冲掉从库数据

  2)将主库重新启动后,执行slaveof命令,将其设置为其他的库的从库。这时数据就能更新回来。

    这个过程容易出错,可以采用redis的哨兵(sentinel)来自动执行

哨兵(sentinel)的作用就是对redis的运行情况进行监控,是一个独立的进程,也就相当于守护进程。

它的功能有两个:

1.监控主数据库和从数据库是否运行正常

2.主数据库出现故障后自动将从数据库(如果有多个从,根据投票选举)升为主库

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值