Redis 主从复制

Redis 主从复制

是什么

主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,**Master以写为主,Slave以读为主

image.png

有什么用

  • 读写分离,性能扩展
  • 容灾快速恢复

如何配置

配从(库),不配主(库):在从库上,执行命令,成为某个实例的从服务器

slaveof  <主库ip> <port>

这样,在主机上写在从机上可以读取数据

从机上写数据,会报错

常见场景

一主二仆

  • 其中一个 slave 挂了,在它挂了期间,主机写入了一些数据data
    • 当这个 slave 恢复之后,会将上面的 date,重新写入自己内存当中
  • 主机shutdown后,从机原地待命

薪火相传

上一个Slave可以是下一个slaveMasterSlave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力去中心化降低风险

image.png

中途变更转向:会清除之前的数据,重新建立拷贝最新的

风险是一旦某个slave宕机,后面的slave都没法备份(上图中,中间的从机down后,最后的从机也没法备份)

反客为主

当一个master宕机后,后面的slave可以立刻通过命令,升为master(需要手动执行),其后面的slave不用做任何修改。

slaveof  no one 

复制原理

  • Slave启动成功连接到master后会发送一个sync命令(从机仅在启动时,才主动同步)-- 全量复制
  • Master向主机主动同步(从机启动之后,都是主机主动同步),分为增量同步和全量同步
    • 收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master传送整个数据文件(RBD文件)到slave,以完成一次完全同步 -- 全量复制
    • Master新的所有收集到的修改命令依次传给slave,完成同步 -- 增量同步
image.png

哨兵模式

是什么

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

image.png

配置方式

自定义 sentinel.conf,配置命令:

sentinel monitor mymaster ip port num

其中mymaster为监控对象起的服务器名称,ip 是监控对象的ip

num :至少有num个哨兵同意,才进行迁移

选举方式

当主机挂掉,从机选举中产生新的主机

哪个从机会被选举为主机呢?根据优先级别:slave-priority 、偏移量:从机所复制主机数据的数据量(复制的越多,越可能成为主机)、随机runid

故障恢复

当故障的主机恢复之后,但此时已经有了新的主机,那么它就变为从机,"俯首称臣"。

image.png

优先级在redis.conf中默认:slave-priority 100,值越小优先级越高

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runid

参考:

尚硅谷视频

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容