Redis学习笔记二 主从复制

Redis 默认使用异步复制,低延迟、高性能,是绝大多数 Redis 用例的自然复制模式。但是,Redis 副本会异步确认它们定期与主服务器接收的数据量。因此,master 不会每次都等待副本处理命令,但是如果需要,它知道哪个副本已经处理了哪个命令。这允许具有可选的同步复制。

命令

从节点发起复制主节点命令   

注:已经复制切换也是一样用这个 ,切换会删除从节点当前所有数据

slaveof  {host} {port}

断开复制命令

slaveof no one

查看主从关系,也可以从中查看复制偏移量

info replication

架构

一主一从

   一个主节点一个从节点

一主多从

   一个主节点多个从节点

树状多从

   一个主节点多个从节点,从节点也有多个从节点

注意:建议从节点不必过多,减少从节点对主节点的压力,从节点只读

复制原理

偏移量

每个master使用一个偏移量,该偏移量随着它生成的要发送到副本的复制流而增加,用来副本同步指标。即使没有实际连接副本,复制偏移也会增加

原理

replica连接master,会发送psync命令发送他们的旧主服务器复制ID和它们处理的偏移量,master可以只发送所需的增量部分(master会先写入复制缓存区,再从复制缓存区到replica节点 复制缓存区默认只有1M),如果主缓冲区没有足够的积压,或者如果副本引用不在已知的历史记录(复制ID),则会全量复制

全量复制:master启动后台生成RDB文件。同时他开始缓冲从客户端接收到的所有新命令。后台保存完成后master将数据库文件传输到replica,replica保存到磁盘然后加载到内存中

                主从复制时需要注意当生成RDB文件超过6GB(6GB 至少需要60秒)以上时要格外小心 repl-timeout默认设置为60s 超过则导致全量复制失败

注:复制分为全量复制和部分复制,master会优先部分复制,如果发现没有达到部分复制要求才会实现完全同步

主从复制 master关闭持久化问题

假设我们设置一个master ,和两个replica  ,replica 从master 复制

master崩溃,如果没有开启持久化,当他自动重启后,master节点的数据是空数据

如果这时replica 同步复制master ,master节点是空的,因此replica会将数据销毁

关闭master的持久性,则关闭master的自动重启,这样就必然会被 Redis Sentinel(高可用)检测到故障

建议:开启主动复制时,master和replica都开启持久化(replica为什么也要开启了?因为如果从节点数据没有,就会重新同步主节点会增加主节点压力)

注:Redis Sentinel(高可用) 在master快速重启有可能检测不到

系列链接

Redis学习笔记一 入门基础_记性差的程序员的博客-CSDN博客

Redis学习笔记三 哨兵(Sentinel)_记性差的程序员的博客-CSDN博客

Redis学习笔记四 集群(cluster)_记性差的程序员的博客-CSDN博客

Redis学习笔记五 运用篇_记性差的程序员的博客-CSDN博客

参考

《Redis开发与运营》

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值