Redis学习之主从复制

  1. 主从复制流程
  2. 主从复制核心知识
  3. 主从复制应用场景
  4. 注意事项
  5. 搭建主从复制

1 主从复制流程

psyn同步请求
redis-server从
redis-server主
  1. 从服务器通过psync命令发送服务器已有的同步进度(同步源ID、同步进度offset)
  2. master收到请求,同步源为当前master,则根据偏移量增强同步
  3. 同步源非当前master,则进入全量同步:master生成rdb,传输到slave,加载到slave内存

2 主从复制核心知识

复制
复制
复制
redis-server主
redis-server B从
redis-server C从
redis-server D从
  • Redis默认使用异步复制,slave和master之间异步地确认处理的数据量
  • 一个master可以拥有多个slave
  • slave可以接受其他slave的连接,slave可以有下级sub slave
  • 主从同步过程在master侧是非阻塞的,即异步复制
  • slave初次同步需要删除旧数据,加载新数据,会阻塞到来的连接请求

3 主从复制应用场景

  • 读写分离,规避单机瓶颈
  • 故障切换,master出问题后还有slave节点可以使用
复制
复制
redis-server主
redis-server 只读/持久化
redis-server 只读
  • 主从复制可以用来支持读写分离
  • slave服务器设定为只读,可以用在数据安全的场景下
  • 可以使用主从复制来避免master持久化造成的开销。master关闭持久化,slave配置为不定期保存或是启动AOF。(注意:重新启动的master程序将从一个空数据集开始,如果一个slave试图与它同步,那么这个slave也会被清空。)

4 注意事项

读写分离场景:
数据复制延时导致读到过期数据或者读不到数据(网络原因、slave阻塞)
从节点故障(多个client如何迁移)

全量复制情况下:
第一次建立主从关系或者runid不匹配会导致全量复制
故障转移的时候也会出现全量复制

复制风暴:
master故障重启,如果slave节点较多,所有slave都要复制,对服务器的性能,网络的压力都有很大影响

写能力有限:
主从复制还是只有一台master,提供的写服务能力有限

master故障情况下:
如果是master无持久化,slave开启持久化来保留数据的场景,建议不要配置redis自动重启
启动redis自动重启,master启动后,无备份数据,可能导致集群数据丢失的情况

带有效期的key:
slave不会让key过期,而是等待master让key过期
在Lua脚本执行期间,不执行任何key过期操作

5 windows环境下搭建主从复制

在这里插入图片描述
在./conf文件下新建三个配置文件,分别为redis.windows-6379.confredis-windows-6380.confredis-windows-6381.conf

redis.windows-6379.conf文件的内容

bind 0.0.0.0
port 6379
logfile "6379.log"
dbfilename "dump-6379.rdb"
daemonize yes
rdbcompression yes

redis.windows-6380.conf文件的内容

bind 0.0.0.0
port 6380
logfile "6380.log"
dbfilename "dump-6380.rdb"
daemonize yes
rdbcompression yes
masterauth 123456
slaveof 127.0.0.1 6379

redis.windows-6381.conf文件的内容

bind 0.0.0.0
port 6381
logfile "6381.log"
dbfilename "dump-6381.rdb"
daemonize yes
rdbcompression yes
masterauth 123456
slaveof 127.0.0.1 6379

注:如果未能主从同步复制成功,注意配置masterauth 123456

依次启动redis服务器
在这里插入图片描述
使用Redis Desktop Manager来进行查看管理。
在这里插入图片描述
通过命令 flushdb 来清空6379端口的redis服务器

通过keys * 来查看服务器中的key

通过set命令往6379端口写数据
在这里插入图片描述
通过6380和6381来查看刚刚添加进去的数据,发现可以查找到,说明数据同步成功。
在这里插入图片描述
通过命令info replication可以查看主从复制的信息,下图表示有两个slave连接到master服务器上,分别是6380和6381。
在这里插入图片描述

参考文章

网易云课堂《Java高级开发工程师》

结语

本人所有博客仅用于学习记录,不做任何商业用途,如涉及侵权,还请联系删除,感谢阅读,欢迎留言,一起进步~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值