码迷,mamicode.com
首页 > 其他好文 > 详细

Redis主从复制

时间:2021-01-18 11:29:11      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:一个   请求   页面   tps   测试   serve   服务器   专业   持久化   

1. 概念

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(masterleader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。

主从复制的作用主要包括:

1、数据冗余∶主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

2、故障恢复∶当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

3、负载均衡︰在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载﹔尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

4、高可用(集群)基石︰除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。

一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的(宕机,最少3个),原因如下:

1、从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;

2、从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。 电商网站上的商品,一般都是一次上传,无数次浏览的,说专业点也就是"多读少写"。对于这种场景,我们可以使如下这种架构︰

技术图片

主从复制,读写分离!80%情况下都是在进行读操作!减缓服务器压力,架构经常使用!至少最低配也要

一主二从!

只要在公司中,主从复制就是必须要使用的,因为在真实的项目中,不可能单机使用redis!

2. 环境配置

只配置从库,不用配置主库,因为Redis默认就是一个主库

2.1 新建立一个连接看看基本的属性

技术图片

 

 

 2.2 创建四个页面,分别代表连接a、b、c和一个测试连接

技术图片

 

 

 现在我们就开了四台机器相当于

2.3 复制三份这个redis.conf

技术图片

 

 

 2.4 编辑这四个文件

1.redis79.conf:

daemonize yes #后台运行打开
logfile "6379.log" #因为有四个配置文件这个log不能重复了,因此不能使用默认的改名
dbfilename dump6379.rdb #同样的生成的这个文件也要改名

  

1.redis80.conf:

port 6380 #这里端口号要改成80
daemonize yes
pidfile /var/run/redis_6380.pid #这里的文件名也要改成6380
logfile "6380.log"
dbfilename dump6380.rdb

  

1.redis81.conf:

port 6381 #这里端口号要改成80
daemonize yes
pidfile /var/run/redis_6381.pid #这里的文件名也要改成6380
logfile "6381.log"
dbfilename dump6381.rdb

  

 2.5 启动这三个服务

redis-server redis79.conf
redis-server redis80.conf
redis-server redis81.conf

  

可以看到三个log文件已经生成了

技术图片

 

 

 服务也都启动了

技术图片

 

 

 

3.一主二从(也就是将我们上面开的三个redis服务器变成一主二从)

默认情况下,每台Redis服务器都是主节点,我们先来连接这个三个服务器,看看这三个服务器的角色是什么

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 可以看到三台都是主机

 

我们一般情况下只用配置从机就好了

6380:

技术图片

 

 

 我们再去看看6379端口中发生的变化

技术图片

 

 

 继续把8381配一下

认老大,一主(79)二从(80,81)

真实的主从配置应该在配置文件中配置,这样的话是永久的,使用命令是暂时的

真实的主从配置应该在下面这里:

技术图片

 

 

 技术图片

 

 

 

4.细节

主机可以写,从机不能写只能读!主机中的所有信息和数据,都会自动被从机保存

也就是如下的意思:

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 现在主机和两个从机都是空的,我们去主机中去写东西,但是可以在从机中拿到

技术图片

 

 

 技术图片

 

 

 技术图片

 

 

 但是从机是不能写的,他会直接报错

技术图片

 

 

 现在我们把主机断掉,也就是两个从机依附的主机没有了,但是去检查的时候它的老大还是它,必须手动改回来,并且我们再去从机中去拿之前的东西还是拿得到的

技术图片

 

 

 技术图片

 

技术图片

技术图片

 

 

 

 但是我们现在重新再把主机连接上去,从机依旧还是可以获得主机的东西

但是重点来了,我们这里采用的不是在配置文件配置主从,而是手动控制台敲的,当我们去断掉了从机的连接,再次启动从机,从机的主从关系是会消失的。同时里面的东西是什么也读不到的。

技术图片

 

 

 

技术图片

 

 

 我们现在在这个从机断了的情况下,去进行一个主机的写入操作,那么我们又把这个81从机连上是可以拿到主机刚刚写进去的东西的。

技术图片

 

 

 技术图片

 

 

 只要变为从机,就会立刻将东西拿过来

5.复制原理

Slave启动成功连接到master后会发送一个sync命令 Master接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。

全量复制︰而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

增量复制 :Master继续将新的所有收集到的修改命令依次传给slave,完成同步。

但是只要是重新连接master,就一定会一次完全同步(全量复制)将被自动执行。我们的数据一定可以在从机中看到

6.层层链路

上一个M连接下一个S,这时候也可以完成我们的主从复制,就是方式二中中间那个又当从机又当主机

技术图片

我们将80变成中间那个来操作一下:

技术图片

 

此时的80还是一个从节点,还是无法写入的

 技术图片

 技术图片

技术图片

 

 那么我们在79存东西,80和81

如果没有老大,能不能选择一个老大出来呢,手动

谋朝篡位

salveof no one,如果主机断开了连接,可以使用这个命令来让自己成为主节点,其他的结点就可以手动连接到最新的这个主节点

如果这个时候老大修复了,那就只能重新连接

技术图片

 

 技术图片

 

 80变成master带领81了。

Redis主从复制

标签:一个   请求   页面   tps   测试   serve   服务器   专业   持久化   

原文地址:https://www.cnblogs.com/yaoyaoo/p/14289286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!