redis的主从复制的作用、连接方式、连接过程、复制过程

本文详细介绍了Redis主从复制的原理、作用及操作步骤,旨在实现数据冗余备份和高可用性。主从复制能实现读写分离,提升服务器负载能力,当主服务器故障时,从服务器能快速接管服务。文中还涵盖了连接过程、工作流程及注意事项,包括数据同步阶段的优化策略,确保系统的稳定性和效率。
摘要由CSDN通过智能技术生成

目录

主从复制为了解决什么问题?

主从复制的作用

主从复制连接过程

主从连接(slave连接master) 三种方式

实际测试 (使用方式一连接)

主从复制工作流程 

数据同步阶段master注意点(一)

数据同步阶段master注意点(二) 


主从复制为了解决什么问题?

为了避免单点Redis服务器故障,准备多台服务器,互相连通。将数据复制多个副本保存在不同的服务器上,连接在一起,并保证数据是同步的。即使有其中一台服务器宕机,其他服务器依然可以继续提供服务,实现Redis的高可用,同时实现数据冗余备份。

 

这里有4个redis服务器。

主从复制即将master(主)中的数据及时有效的复制到slave(从)中。

特征:一个master可以拥有多个slave,一个slave只对应一个master。

主从复制的作用

  1. 读写分离:master写、slave读,提高服务器的读写负载能力
  2. 负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数 量,通过多个从节点分担数据读取负载,大大提高Redis服务器并发量与数据吞吐量
  3. 故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复 
  4. 数据冗余:实现数据热备份,是持久化之外的一种数据冗余方式 
  5. 高可用基石:基于主从复制,构建哨兵模式与集群,实现Redis的高可用方案

主从复制连接过程

 

主从连接(slave连接master) 三种方式

方式一:客户端发送命令

slaveof   master-IP地址    master-PORT端口

 方式二:启动服务器时加上参数

redis-server -slaveof   master-IP地址    master-PORT端口

方式三:服务器配置文件中加上配置参数

slaveof   master-IP地址    master-PORT端口

 主从断开连接

在slave服务器使用命令

slaveof no one

说明:slave断开连接后,不会删除已有数据,只是不再接受master发送的数据 

实际测试 (使用方式一连接)

两个服务器在不建立主从关系的情况下

1.开启一个端口6379的redis服务器(redis-6379.conf是自定义确定配置文件):

 

 2.开启一个端口6380的redis服务器:

 

3.开启第一个客户端,连接端口6379的服务器: 

存储一个数据:set name abcd

 

 4.开启第二个客户端,连接端口6380的服务器:

 获取数据key=name

结果:在未设置服务器主从关系的情况下,第二个客户端获取的数据不同于第一个客户端存储的数据。 

两个服务器在建立主从关系的情况下

1.在第二个客户端(连接端口6380的服务器),使用指令slave 127.0.0.1  6379与6379端口服务器建立连接。6379为主,6380为从。

 

2.在第一个客户端中再次set  name  abcd2 

  

 3.然后在第二个客服端进行查询get  name

 结果:这次获取的值与第一个客户端设置值一样。说明主服务器的数据会同步到从服务器。

主从复制工作流程 

在slave初次连接master后,复制master中的所有数据到slave,将slave的数据库状态更新成master当前的数据库状态。

大致步骤:

步骤1:slave发送指令psync2请求同步数据。

步骤2:master创建RDB同步数据发送给slave。

步骤3:slave恢复RDB同步数据。

步骤4:slave请求部分同步数据(在复制阶段,master新进来的数据)。

步骤5:master发送部分数据。

步骤6:slave恢复部分同步数据。

 

 数据同步阶段master注意点(一)

1. 如果master数据量巨大,数据同步阶段应避开流量高峰期,避免造成master阻塞,影响业务正常执行。

2. 复制缓冲区大小设定不合理,会导致数据溢出。如进行全量复制周期太长,进行部分复制时发现数据已 经存在丢失的情况,必须进行第二次全量复制,致使slave陷入死循环状态。

repl-backlog-size 1mb   //设置缓冲区大小

3. master单机内存占用主机内存的比例不应过大,建议使用50%-70%的内存,留下30%-50%的内存用于执 行bgsave命令和创建复制缓冲区 

数据同步阶段master注意点(二) 

1. 为避免slave进行全量复制、部分复制时服务器响应阻塞或数据不同步,建议关闭此期间的对外服务。

slave-serve-stale-data yes|no

2. 数据同步阶段,master发送给slave信息可以理解master是slave的一个客户端,主动向slave发送 命令 。

3. 多个slave同时对master请求数据同步,master发送的RDB文件增多,会对带宽造成巨大冲击,如果 master带宽不足,因此数据同步需要根据业务需求,适量错峰。

4. slave过多时,建议调整拓扑结构,由一主多从结构变为树状结构(多主多从),中间的节点既是master,也是 slave。

注意使用树状结构时,由于层级深度,导致深度越高的slave与最顶层master间数据同步延迟 较大,数据一致性变差,应谨慎选择 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IABQL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值