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

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⼀样
masterauth 123456
#哪个主节点进⾏复制
replicaof 8.129.113.233 6379

创建主配置文件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主从架构介绍

在这里插入图片描述

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⼀样
masterauth 123456
#哪个主节点进⾏复制
replicaof 8.129.113.233 6379

创建主配置文件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命令
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Redis高可用主要通过主从复制分离来实现。 主从复制实验过程如下: 1. 准备两个Redis实例,一个作为主服务器,一个作为从服务器。 2. 在主服务器上配置开启主从复制功能,并设置合适的密码认证。 3. 在从服务器上配置连接主服务器的IP地址和端口,并设置密码认证。 4. 在主服务器上执行命令SLAVEOF NO ONE,将该服务器设置为主服务器。 5. 在主服务器上编辑和插入数据。 6. 在从服务器上使用命令SLAVEOF <主服务器IP> <主服务器端口>,将该服务器设置为从服务器。 7. 从服务器连接主服务器后,会自动将主服务器上的数据同步到从服务器上。 8. 在主服务器上修改或删除数据,观察从服务器是否同步执行相同的操作。 分离实验过程如下: 1. 准备两个Redis实例,一个作为主服务器,一个作为从服务器。 2. 在主服务器上配置开启主从复制功能,并设置合适的密码认证。 3. 在从服务器上配置连接主服务器的IP地址和端口,并设置密码认证。 4. 在主服务器上编辑和插入数据。 5. 在应用程序中设置分离规则,将操作发送到主服务器,将操作发送到从服务器。 6. 在应用程序中进行操作,观察数据的是否按照设定的规则执行。 通过以上实验过程,可以验证Redis主从复制分离功能是否正常工作。主从复制可以实现数据的同步备份,提高系统的可用性和容灾能力;分离可以分担主服务器的负载,提高系统的性能和吞吐量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值