Redis6配置主从复制+读写分离

2022年10月19日09:15:40

Redis6配置主从复制+读写分离

Redis5主从复制+读写分类介绍

背景

  • 单机部署简单,但是可靠性低,并且不能很好的利用cpu的多核处理能力
  • 生产环境—必须保证高可用-一般不可能单机部署
  • 读写分离是可用性要求不高、性能要求较高、数据规模小的情况

目标

  • 读写分离,扩展主节点的读能力,分担主节点读压力
  • 容灾恢复,一旦主节点宕机,从节点作为主节点的备份可以随时顶上

redis主从架构介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KAWhpQ47-1626503734005)(C:\Users\阮相歌\AppData\Roaming\Typora\typora-user-images\image-20210717130506749.png)]

Linux服务器-Redis6.X 主从复制 一主二从架构环境准备

配置

mkdir-p/data/redis/master/data
mkdir-p/data/redis/slave1/data
mkdir-p/data/redis/slave2/data
#从节点开启只读模式(默认)
replica-read-only yes
#从节点访问主节点的密码,和requirepass⼀样
masterauth123456
#哪个主节点进⾏复制
replicaof8.129.113.2336379

创建主配置文件redis.conf

bind 0.0.0.0
port 6379
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis1.log"
dbfilename "xdclass1.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly1.aof"
masterauth "123456"

创建两个从配置文件redis.conf

bind 0.0.0.0
port 6380/6381
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis1/2.log"
dbfilename "xdclass1/2.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly1/2.aof"
replicaof 8.129.113.233 6379
masterauth "123456"

Linux服务器-Redis6.X 主从复制 一主二从架构

启动

#启动主
./redis-server
/data/redis/master/data/redis.conf
#启动从
./redis-server
/data/redis/slave1/data/redis.conf
#启动从
./redis-server
/data/redis/slave2/data/redis.conf
  • info replication 查看状态
  • 主从复制和读写验证
  • 防火墙和网络安全组记得开放端口
    • 6379 主节点
    • 6380 从节点
    • 6381 从节点

Redis主从架构-复制读写分离原理解析

主从复制

  • 主从复制分两种(主从刚连接的时候,进⾏全量同步;全同步结束后,进⾏增量同步)
    • 全量复制
      • master服务器会开启⼀个后台进程⽤于将redis中的数据⽣成⼀个rdb⽂件
      • 主服务器会缓存所有接收到的来⾃客户端的写命令,当后台保存进程 处理完毕后,会将该rdb⽂件传递给slave服务器
      • slave服务器会将rdb⽂件保存在磁盘并通过读取该⽂件将数据加载到内存
      • 在此之后master服务器会将在此期间缓存的命令通过redis传输协议发送给slave服务器
      • 然后slave服务器将这些命令依次作⽤于⾃⼰本地的数据集上最终达到数据的⼀致性
    • 增量复制
      • Slave初始化后开始正常⼯作时主服务器发⽣的写操作同步到从服务器的过程
      • 服务器每执⾏⼀个写命令就会向从服务器发送相同的写命令,从服务器接收并执⾏收到的写命令

特点

  • 主从复制对于 主/从 redis服务器来说是⾮阻塞的,所以同步期间都可以正常处理外界请求
  • ⼀个主redis可以含有多个从redis,每个从redis可以接收来⾃其他从redis服务器的连接
  • 从节点不会让key过期,⽽是主节点的key过期删除后,成为del命令传输到从节点进⾏删除
    • 从节点开启 sync 看⽇志

加速复制

  • 完全重新同步需要在磁盘上创建⼀个RDB⽂件,然后加载这个⽂件以便为从服务器发送数据
  • 在⽐较低速的磁盘,这种操作会给主服务器带来较⼤的压⼒
  • 新版⽀持⽆磁盘的复制,⼦进程直接将RDB通过⽹络发送给从服务器,不使⽤磁盘作为中间存储
  • repl-diskless-sync yes (默认是no)

主从断开重连

  • 如果遭遇连接断开,重新连接之后可以从中断处继续进⾏复制,⽽不必重新同步
  • 2.8版本后 部分重新同步这个新特性内部使⽤PSYNC命令,旧的实现中使⽤SYNC命令

)

Redis6配置主从复制+读写分离

Redis5主从复制+读写分类介绍

背景

  • 单机部署简单,但是可靠性低,并且不能很好的利用cpu的多核处理能力
  • 生产环境—必须保证高可用-一般不可能单机部署
  • 读写分离是可用性要求不高、性能要求较高、数据规模小的情况

目标

  • 读写分离,扩展主节点的读能力,分担主节点读压力
  • 容灾恢复,一旦主节点宕机,从节点作为主节点的备份可以随时顶上

redis主从架构介绍

Redis6配置主从复制+读写分离

Linux服务器-Redis6.X 主从复制 一主二从架构环境准备

配置

mkdir-p/data/redis/master/data
mkdir-p/data/redis/slave1/data
mkdir-p/data/redis/slave2/data
#从节点开启只读模式(默认)
replica-read-only yes
#从节点访问主节点的密码,和requirepass⼀样
masterauth123456
#哪个主节点进⾏复制
replicaof8.129.113.2336379

创建主配置文件redis.conf

bind 0.0.0.0
port 6379
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis1.log"
dbfilename "xdclass1.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly1.aof"
masterauth "123456"

创建两个从配置文件redis.conf

bind 0.0.0.0
port 6380/6381
daemonize yes
requirepass "123456"
logfile "/usr/local/redis/log/redis1/2.log"
dbfilename "xdclass1/2.rdb"
dir "/usr/local/redis/data"
appendonly yes
appendfilename "appendonly1/2.aof"
replicaof 8.129.113.233 6379
masterauth "123456"

Linux服务器-Redis6.X 主从复制 一主二从架构

启动

#启动主
./redis-server
/data/redis/master/data/redis.conf
#启动从
./redis-server
/data/redis/slave1/data/redis.conf
#启动从
./redis-server
/data/redis/slave2/data/redis.conf
  • info replication 查看状态
  • 主从复制和读写验证
  • 防火墙和网络安全组记得开放端口
    • 6379 主节点
    • 6380 从节点
    • 6381 从节点

Redis主从架构-复制读写分离原理解析

主从复制

  • 主从复制分两种(主从刚连接的时候,进⾏全量同步;全同步结束后,进⾏增量同步)
    • 全量复制
      • master服务器会开启⼀个后台进程⽤于将redis中的数据⽣成⼀个rdb⽂件
      • 主服务器会缓存所有接收到的来⾃客户端的写命令,当后台保存进程 处理完毕后,会将该rdb⽂件传递给slave服务器
      • slave服务器会将rdb⽂件保存在磁盘并通过读取该⽂件将数据加载到内存
      • 在此之后master服务器会将在此期间缓存的命令通过redis传输协议发送给slave服务器
      • 然后slave服务器将这些命令依次作⽤于⾃⼰本地的数据集上最终达到数据的⼀致性
    • 增量复制
      • Slave初始化后开始正常⼯作时主服务器发⽣的写操作同步到从服务器的过程
      • 服务器每执⾏⼀个写命令就会向从服务器发送相同的写命令,从服务器接收并执⾏收到的写命令

特点

  • 主从复制对于 主/从 redis服务器来说是⾮阻塞的,所以同步期间都可以正常处理外界请求
  • ⼀个主redis可以含有多个从redis,每个从redis可以接收来⾃其他从redis服务器的连接
  • 从节点不会让key过期,⽽是主节点的key过期删除后,成为del命令传输到从节点进⾏删除
    • 从节点开启 sync 看⽇志

加速复制

  • 完全重新同步需要在磁盘上创建⼀个RDB⽂件,然后加载这个⽂件以便为从服务器发送数据
  • 在⽐较低速的磁盘,这种操作会给主服务器带来较⼤的压⼒
  • 新版⽀持⽆磁盘的复制,⼦进程直接将RDB通过⽹络发送给从服务器,不使⽤磁盘作为中间存储
  • repl-diskless-sync yes (默认是no)

主从断开重连

  • 如果遭遇连接断开,重新连接之后可以从中断处继续进⾏复制,⽽不必重新同步
  • 2.8版本后 部分重新同步这个新特性内部使⽤PSYNC命令,旧的实现中使⽤SYNC命令
  • 作者:ruan_luqingnian
  • 原文链接:https://blog.csdn.net/ruan_luqingnian/article/details/118856442
    更新时间:2022年10月19日09:15:40 ,共 4299 字。