Redis主从复制

本文介绍了Redis的主从复制机制,包括其工作原理、配置要点、基本操作命令以及应用场景。强调了读写分离、容灾恢复和复制延迟的问题,并提到了Redis哨兵在故障自动切换中的作用。
摘要由CSDN通过智能技术生成

Redis replication | Redis

是什么:

主从复制,master以写为主,Slave以读为主。当master数据变化时,自动将新的数据异步同步到其他slave数据库。

能什么:

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

配置时必须要求配置密码。如果master配置里密码,那么slave就要配置masterauth来设置校验密码,否则的话master就会拒绝slave的访问请求。

基本操作命令:

info replication:可以查看复制节点的主从关系和配置信息

replicaof 主库IP 主库端口:一般写进redis.conf配置文件中

slaveof 主库IP 主库端口(命令操作):每次与master断开之后都需要重新连接,除非你配置进

redis.conf文件。在运行期间修改slave节点的信息,如果该数据库已经是某个数据库的从数据库,那么会停止和元数据的同步关系,转而和新的数据库同步,重新签订主从关系。

可以这样理解:最开始S1 S2 是 M1的小弟,在S2上执行了这条命令,S2就会和之前的M1撇清关系,把M2当做大哥。

slaveof no one:是当前数据库停止与其他数据库的同步,转成主数据库(Master)。


一主二从(修改配置文件):

搭建主从复制环境:

环境要求:一个Master俩个Slave(3台虚拟机,都安装redis)

最好把3台主机的redis.conf 文件名称加上端口号(例:redis6379.conf)

确保3台主机都能ping通。

copy一份最新的配置文件去修改: cp redis.conf /myredis/redis6379.conf

注意在copy master到slave的配置文件之后,记得在slave中修改和端口相关的配置

启动: 先启动Master,然后启动2台Slave。(有问题查log,上面配置了log的名字和路径)

        

以上启动完成!!!

场景:

        master启动,写到k3

        slave1跟着master同时启动,跟着写到k3

        slave2写到k3之后才启动(master写完k3)

slave2启动之后也会有 k3 之前写入的数据。slave首次启动全部复制master数据,之后master写,slave跟。

主机(master)shutdown后,从机(slave)会自动变为master吗? 不会, 只是master_link_status:down,但是数据可以正常读取。

主机(master)shutdown后,重启后主从关系还在吗?从机还能否顺利复制?关系还在。可以顺利复制。

一主二从(手动(命令)操作):

为了方便测试,把slave 中的配置文件 中的 # replicaof 192.168.217.135 6379 注释掉。即 3台机器都是Master,只是connected_slaves为0。

使用命令 实现主从关系,从机重启后,主从关系不存在,都是master。


薪火相传:

上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中的一个master,可以有效减轻主master的写压力。

为了效果明显,2台slave的配置文件恢复到之前一主二从的配置。

操作:在6381这台机器上执行 slaveof 192.168.217.134 6380(表示6380是6381的主人)


反客为主(自己成为Master,脱离之前的主从架构):

复制的原理和工作流程:

  1. slave启动,同步初请:slave 启动成功连接到master后会发送一个sync的命令。slave首次全新连接master,一次完全同步(全量复制)将自动执行,slave自身原有数据会被master数据覆盖清除。
  2. 全量复制:master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化完成后,master将rdb快照文件和所有缓存的命令发送到所有slaves,以完成一次完全同步。而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化
  3. 心跳,保持通信: 心跳包(默认10s),repi-ping-replica-period 10
  4. 进去平稳,增量复制:master持续将新的所有收集到的修改命令自动依次传给slave,完成同步
  5. 从机下线,重连续传:master 会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,offset是保存在backlog中的,master只会把已经复制的offset后面的数据复制给slave,类似锻炼续传。

主从复制的缺点:

  • 复制延迟,信号衰减。由于所有的写操作都是现在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重。如果在高并发的情况下,一主二从是不都用的,Slave机器数量的增加也会使这个问题更加严重
  • Master挂了之后:默认情况下,当master挂了之后,不会在slave节点中自动重选一个master。这时只能读取不能插入。

我们希望能在master挂了之后,能自动选取一个新的master。---Redis 哨兵 (sentinel)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值