Redis主从复制

Redis主从复制

Redis如何通过复制支持高可用性和故障转移

就是主从复制,master以写为主,slave以读为主

当master数据变化的时候,自动将新的数据异步同步到其他slave数据库

1. 能干啥

  • 读写分离
  • 容灾恢复
  • 数据备份
  • 水平扩容支持高并发

2. 主要命令

Redis主从复制_第1张图片

3. 连接一主两从

Redis主从复制_第2张图片

查看6379机器的信息:

Redis主从复制_第3张图片

4. 一些问题

从机可以执行写操作吗?

不可以:

Redis主从复制_第4张图片

从机切入点问题:

Redis主从复制_第5张图片

没有配置replicaof,使用slave of命令,从机重启后还会联系吗?

没有,slave of 是临时命令,关机后就没了

所以确定的主从关系,要写进配置文件

薪火相传问题

第二台机器既是主机又是从机,仍不能进行写操作

5. 主从复制工作流程

首次启动

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

slave首次全新连接master一次性完全同步将被自动执行

slave原有的数据将被覆盖

全量复制

master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB)同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化后,master将rdb快照文件和所有缓存命令发送到所有slave

slave收到后加载rdb文件,完成初始化

保持通讯

Redis主从复制_第6张图片

增量复制

每次修改命令执行,主机传给从机

从机下线,重连续传

master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,offset是保存在backlog中的,Master只会把已复制的offset后面的数据赋值给Slave 类似断点续传

主从复制的缺点

复制延时,信号衰减

Redis主从复制_第7张图片

大哥挂了咋办(痛点)

新的master只能自己手动选个?

你可能感兴趣的:(redis,数据库,缓存)