欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis3/5---主从复制

程序员文章站 2023-04-02 20:19:03
Redis主从复制。...

1.基础概念

什么是主从复制?
Redis3/5---主从复制
为什么要主从复制?

  • redis-server单点故障
  • 单节点QPS有限

主从复制应用场景

  • 读写分离场景,规避redis单机瓶颈
  • 故障切换,master出问题后还有slave节点可以使用

2.主从复制搭建流程

(1)搭建主从复制

Redis Server以普通模式启动。

启动从服务器的方式:

  • 第一种方式:命令行
#测试的时候可以先清空服务器上的数据,防止数据不一致
flushdb
#连接需要实现从节点的redis,执行下面的命令:
#数据从[ip] [port]复制
127.0.0.1:6380>slaveof [ip] [port]
  • 第二种方式:redis.conf配置文件
#配置文件中增加
slaveof [ip] [port]
或者replicaof [ip] [port]
#从服务器是否只读(默认 yes)
slave-read-only yes
  • 退出主从集群的方式
salveof on one

(2)检查主从复制

[root@localhost redis]# /usr/local/redis/bin/redis-cli -p 6380 info Replication
#或者
127.0.0.1:6380>#info replaction

Redis3/5---主从复制

【主从复制测试】

#主从服务器开启监控状态,查看信息
#打印Redis收到的每条状态。
monitor
  • 客户端通过info replaction实现: set命令,去找主服务器;get命令找从服务器。从而实现读写分离。

3.概念

(1)主从复制流程

Redis3/5---主从复制

  • 从服务器通过psync命令发送服务器已有的同步进度(同步源ID、同步进度offset)
  • master收到请求,同步源为当前master,则根据偏移量增量同步。
  • 同步源非当前master,则进入全量同步:master生产rdb,传输到slave,加载到slave内存

增量:把命令转发过来;全量:把内存所有信息转发过来】

(2)主从复制核心知识

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

(3)主从复制应用场景

  • 主从复制可以用来支持读写分离
  • slave服务器设定为只读,可以用在数据安全的场景下。
  • 可以使用主从复制来避免master持久化造成的开销。master关闭持久化,slave配置为不定期保存或启用AOF。

(注意:重新启动master程序将从一个空数据集开始,如果一个slave试图与它同步,那么这个slave也会被清空。)
Redis3/5---主从复制

(4)主从复制注意事项

注意事项 内容
读写分离场景 数据复制延迟时导致读到过期数据或者读不到数据(网络原因、slave阻塞)。从节点故障(多个client如何迁移)。
全量复制情况下 第一次建立主从关系或者runid不匹配会导致全量复制。 故障转移的时候也会出现全量复制。
(全量)复制风暴 master故障重启,如果slave节点较多,所有slave都要复制,对服务器的性能、网络压力都有很大影响。一个机器部署了多个master。
写能力有限 主从复制还是只有一台master,提供的写服务能力
master故障清空下 如果master无持久化,slave开启持久化来保留数据的场景,建议不要配置redis自动重启。;启动redis自动重启,master启动后,无备数据,可能导致集群数据丢失的情况。
带有效期的key slave不会让key过期,而是等待master让key过期。 在Lua脚本执行期间,不执行任何key过期操作。

【master出现故障解决方案】

  • 主从切换:原来做持久化保存数据的从服务器,变成主服务器;原来的主服务器,变成从服务器。
  • 不改变原来的主从关系,将从服务器上的数据复制到主服务器。

本文地址:https://blog.csdn.net/a954553391/article/details/107401521

相关标签: # Redis