Redis:主从复制_通过此功能实现对内存上的数据更好的保护

news2024/11/22 22:21:30

什么是主从复制?

简单的意义上来讲就是一个主人带着几个奴隶,奴隶的全部都是主人给他的,刚开始的时候奴隶是一无所有,是主人将自己的一部分给到奴隶了。因此奴隶翻身了,变得有钱了,也就是有一定价值了,但是主人能够控制奴隶。能让变得很有money,也能让它变得一无所有。

主从复制,是指将一台 Redis 服务器(主人)的数据,复制到其他的 Redis 服务器(奴隶)

主人服务器被称为主节点(英文名叫:master / leader),奴隶称为从节点(slave / follower)。

注意:这里的复制是单向的,只能够从主节点复制数据到子节点

主节点master主要是以写为主,子节点slave主要一读为主

主页点可以拥有多个子节点,但是子节点却只能拥有一个主节点

在通常的情况下,每个Redis服务器都是主节点

 为什么要使用主从复制?

1:数据冗余:它可以实现数据的热备份,是持久化的一种数据方式

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

3:负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务,分担服务器负载。尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高 Redis 服务器的并发量。

4:高可用:主从复制是哨兵和集群能够实施的基础,因此说主从复制是 Redis 高可用的基础。

一般来说,要将 Redis 运用于工程项目中,只使用一台 Redis 是万万不能的,原因如下:

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

  • 容量上:单个 Redis 服务器内存容量有限,一般来说,单台 Redis 最大使用内存不应该超过 20G。

环境搭建

搭建集群环境

复制几个配置文件 

[root@localhost myc]# ls
redis79.conf  redis80.conf  redis81.conf  redis82.conf

这四个文件,一个是主三个是从

每个几点都有自己端口号和配置

修改配置文件

redis79.conf 

一:端口号

2: 开启后台运行

 3:修改持久化RDB文件名称

 4:修改日志文件名称

5:修改pid文件名称

 其他的三个配置文件也是如此

redis6380.conf

daemonize yes

port 6380
pidfile /var/run/redis_6380.pid
logfile "6380.log"
dbfilename dump6380.rdb

redis6381.conf 

daemonize yes

port 6381
pidfile /var/run/redis_6381.pid
logfile "6381.log"
dbfilename dump6381.rdb

 redis6382.conf 

daemonize yes

port 6382
pidfile /var/run/redis_6381.pid
logfile "6382.log"
dbfilename dump6382.rdb

打开4个客户端分

 在各个客户端界面,通过4个配置文件启动redis服务

页面一:

[root@localhost redis]# ./bin/redis-server ./myc/redis79.conf 

页面二:

[root@localhost redis]# ./bin/redis-server ./myc/redis80.conf

页面三:

[root@localhost redis]# ./bin/redis-server ./myc/redis81.conf

页面四:

[root@localhost redis]# ./bin/redis-server ./myc/redis82.conf   

看一下是否生成日志文件

查看开启的服务

环境搭建完成 

 前面有一句话提到过每台redis服务器都是主节点

登录不同端口的客户端,查看一下信息是否为主节点

79端口:主节点

 代码含义:

127.0.0.1:6379> info replication    查看主从复制信息
# Replication
role:master       角色为主节点
connected_slaves:0        连接的子节点个数为0 
master_failover_state:no-failover                              //剩下的都是一些配置信息
master_replid:aacf4caa93481ac43819eebbb266d8230b85d34f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

查看其他节点的主从复制信息,都与79端口配置相同

一主三从

默认的配置为一主三从

主节点不需要进行配置,只需要配置子节点即可,子节点配置也很简单,只需要找到靠山就行

对安装的配置进行配置,一主(79端口号)三从(80,81,82)端口号

认主:

127.0.0.1:6380> SLAVEOF 127.0.0.1 6379    80端口认主成功
OK
127.0.0.1:6380> 

查看主从复制配置信息

80端口:

127.0.0.1:6380> INFO replication
# Replication
role:slave        角色为从机
master_host:127.0.0.1  主节点的ip
master_port:6379           主节点的端口号
master_link_status:up    
master_last_io_seconds_ago:8
master_sync_in_progress:0
slave_read_repl_offset:84
slave_repl_offset:84
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:a2634fdf22a44fd46f3e73f78f0abed72b78b35e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:84
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:15
repl_backlog_histlen:70
127.0.0.1:6380> 

查看主节点配置信息:

127.0.0.1:6379> INFO replication
# Replication
role:master    角色为主节点
connected_slaves:1       一个子节点
slave0:ip=127.0.0.1,port=6380,state=online,offset=350,lag=1   子节点配置信息
master_failover_state:no-failover
master_replid:a2634fdf22a44fd46f3e73f78f0abed72b78b35e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:350
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:350
127.0.0.1:6379>  

接下来将其他的两个子节点进行认主

127.0.0.1:6381> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6381> 

127.0.0.1:6382> SLAVEOF 127.0.0.1 6379
OK
127.0.0.1:6382>  

查看主节点主从复制配置信息

127.0.0.1:6379> INFO replication
# Replication
role:master              
connected_slaves:3  三个子节点
slave0:ip=127.0.0.1,port=6380,state=online,offset=588,lag=1   子节点配置信息
slave1:ip=127.0.0.1,port=6381,state=online,offset=588,lag=1
slave2:ip=127.0.0.1,port=6382,state=online,offset=588,lag=0
master_failover_state:no-failover
master_replid:a2634fdf22a44fd46f3e73f78f0abed72b78b35e
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:588
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:588
127.0.0.1:6379>  

这里的主从复制配置是通过命令行进行配置的,这只是暂时的,具体的配置是通过配置文件进行配置的。

打开redis80.conf配置文件 

 配置修改为

replicaof 127.0.0.1 6379

只需要将三个从节点的配置文件配置成这样即可。 

在主节点的进行写的操作:创建一个key

 通过从机是否能够查看主节点创建的key?
前面就提到过,主节点的主要功能为写操作,而子节点的主要的功能为读操作,所以子节点是一定义访问主节点创建的内容,如果子节点没有访问到主节点创建的内容,说明您的配置出现了问题。

子节点1:能够访问到主节点创建的key值,但是子节点的权限只有读的权限,却没有写的权限,,所以当子节点创建key时;就会报错read only 只有读的权限。 

 其他的节点也是如此,这里就不进行一一展示了。

如果当主机出现了问题(宕机)等问题,导致主节点断掉了,会出现什么状况???

断掉主节点

 子节点:正常使用,与主节点没断掉一样,对他没有任何的影响

查看配置:显示主节点关机,关于主从复制的配置并没有发生任何的变化

 主节点重连:保留宕机前创建的key值,因为子节点保留主节点的内容,并且能够正常使用

重连后,关于主从复制的内容,并没有发生任何改变。正常使用 

那如果子节点宕机了呢?

1:保留之前主节点创建的内容

2:重新启动后,身份发生了变化,不在是从机,而变成主机,与前面的主机没有了任何的关系

3:宕机后,如果主机创建了新的内容,宕机的子节点不会获取到,原因为2

4:身份转变为主机拥有主节点的所有权限 

层层链路

 按照下图进行配置

79端口号:只有一个子节点,本身角色为主节点

 

 80端口号:它的主节点为79端口号,并且它拥有一个端口号为81的子节点,它的身份为子节点

 81端口号:与80端口的配置差不多,除了主节点和子节点不同,剩下的都差不多

 82端口号:本身角色为字节点,拥有一个主节点

 

如果其中一个,假设80端口号闹独立,想要当老大不想依附在任何人身上,通过命令该怎么实现?

127.0.0.1:6380> SLAVEOF no one
OK

80端口号独立,要当老大

角色为主节点,连接的子节点还是之前的那一个,小弟还是那个小弟

查看一下79端口的配置:

小弟给别人走了,光杆司令

 

当然也可以重新认主,还是给初次认主一样即可。

注意:上面关于主从复制的命令行代码都是暂时的,重新启动,所有的配置的都会丢失,如果想要永久的配置,从开启服务的配置文件进行配置,前面提到过。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/540719.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SYSU程设c++(第十三周)虚函数、覆盖与隐藏

虚函数 形式:是一个类的成员函数,前面有关键字 virtual 作用:在公有继承的派生类中会对虚函数进行重定义。 当使用基类的指针(或引用)调用派生类的对象的虚函数时,将调用该对象的虚函数的重定义版本 性质&a…

STM32单片机厨房环境油烟温湿度调节系统加湿加热排风

实践制作DIY- GC0131-厨房环境油烟温湿度调节系统 一、功能说明: 基于STM32单片机设计-厨房环境油烟温湿度调节系统 二、功能介绍: 硬件组成:STM32F103C系列最小系统DHT11温度湿度传感器1个5V直流风扇 5V风扇 USB加湿器1个5V直流风扇排烟1…

RestNet详解及在pytorh下基于CIFAR10数据集的实现

1 RestNet介绍 RestNet是2015年由微软团队提出的,在当时获得分类任务,目标检测,图像分割第一名。该论文的四位作者何恺明、张祥雨、任少卿和孙剑如今在人工智能领域里都是响当当的名字,当时他们都是微软亚研的一员。实验结果显示&…

STM32单片机蓝牙APP自动伸缩遮阳棚雨伞雨滴角度温度光强控制

实践制作DIY- GC0130-蓝牙APP自动伸缩遮阳棚 一、功能说明: 基于STM32单片机设计-蓝牙APP自动伸缩遮阳棚 二、功能介绍: 基于STM32F103C系列,LCD1602显示器,光敏电阻采集光强,雨滴传感器,ULN2003控制步进…

MySQL:5.6同步到5.7 GTID报错

问题描述和处理 同步到的版本为5.7.35,按理说在5.7种还是一个比较新的版本了,报错大概如下: 2023-05-14T05:09:47.427031Z 12 [Note] Multi-threaded slave statistics for channel : seconds elapsed 163; events assigned 67585; worke…

GD32 系列FLASH锁死解决.

1.背景描述 使用keil开发工具JLINK调试过程中偶尔出现找不到目标版,或存在目标版但keil调试烧录出现如下界面: 2.问题查询步骤 2.1检查jlink连接线是否异常; 2.2确定boot0和boot1设置是否正确; 2.3确定是否是flash读写保护 2.3.1…

K8s进阶2——二进制搭建K8s高可用集群

文章目录 一、单master资源清单二、系统初始化三、部署etcd集群3.1 生成etcd证书3.2 部署流程3.2.1 准备二进制安装文件3.2.2 创建工作目录3.2.3 创建etcd配置文件3.2.4 设置成systemd服务3.2.5 添加etcd-2和etcd-3节点3.2.6 所有节点启动etcd并设置开机启动 四、安装容器引擎&…

webpack基础

1. 当面试官问Webpack的时候他想知道什么 前言 在前端工程化日趋复杂的今天,模块打包工具在我们的开发中起到了越来越重要的作用,其中webpack就是最热门的打包工具之一。 说到webpack,可能很多小伙伴会觉得既熟悉又陌生,熟悉是…

java汽车4S店管理系统myeclipse定制开发oracle数据库网页模式java编程jdbc

一、源码特点 java汽车4S店管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助 oracle数据库,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 java汽车4S店管理系统myeclipse定制开发orac 二、功能介绍 此次系统…

漏扫工具-xray 1.9.10(文末附下载)

一、工具介绍 一款功能强大的安全评估工具 二、使用说明 1.使用基础爬虫爬取并对爬虫爬取的链接进行漏洞扫描 xray webscan --basic-crawler http://example.com --html-output vuln.html 2.使用 HTTP 代理进行被动扫描 xray webscan --listen 127.0.0.1:7777 --html-outp…

Fiddler如何抓取微信小程序的包

1.简介 有些小伙伴或者是童鞋们说小程序抓不到包,该怎么办了???其实苹果手机如果按照宏哥前边的抓取APP包的设置方式设置好了,应该可以轻松就抓到包了。那么安卓手机小程序就比较困难,不是那么友好了。所以…

FMC子卡设计资料原理图450-基于ADRV9009的双收双发射频FMC子卡 数字信号处理卡 射频收发卡 基站应用 便携测试设备

FMCJ450-基于ADRV9009的双收双发射频FMC子卡 一、板卡概述 ADRV9009是一款高集成度射频(RF)、捷变收发器,提供双通道发射器和接收器、集成式频率合成器以及数字信号处理功能。这款IC具备多样化的高性能和低功耗组合,FMC子卡为2路输入,…

MySQL高级_第08章_索引的创建与设计原则

MySQL高级_第08章_索引的创建与设计原则 1. 索引的声明与使用 1.1 索引的分类 MySQL 的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从 功能逻辑 上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索…

新手如何重装Win10系统 新手重装Win10系统的方法

电脑系统是电脑运行的核心,如果出现问题就需要重装系统。对于新手来说,重装电脑系统可能会显得比较困难和陌生。本文将介绍新手如何重装电脑系统Win10,让电脑新手也能轻松搞定。 新手重装Win10系统的方法 一、准备工作 1、下载极客狗电脑重…

canvas、svg的基本使用【数据可视化】

什么是数据可视化? 基本概念:是关于数据视觉表现形式的科学技术研究 这个概念向我们传达了两个信息: (1)数据可视化是一门学科 (2)数据可视化与数据和视觉有关 数据可视化简单理解,…

veth网卡的多队列及RPS

背景: 3.10内核下容器使用的veth网卡,默认开启的是一个队列,导致在某些单线程多TCP链接的应用场景下,出现某个CPU软中断高的情况。之前处理的方案一直是开启这个veth网卡的RPS,让其在多流场景下可以去分散到其它CPU上…

DSSM - 双塔经典模型(微软)

《Learning Deep Structured Semantic Models for Web Search using Clickthrough Data》论文由微软发表于 CIKM-2013。DSSM被广泛用于工业界的 召回/粗排 阶段。 模型结构 模型结构一目了然,非常简单,双塔结构:user侧一个塔,ite…

ChatGPT的兴起的时代,国内chatgpt产品大盘点

在人工智能技术的不断发展和应用下,自然语言处理技术成为了研究的热点之一。而其中最受关注的就是“聊天机器人”技术,而GPT(Generative Pre-trained Transformer)模型则是目前最流行的聊天机器人生成模型之一。 随着 ChatGPT 技…

蓝牙RSSI/BLE AOA/UWB室内定位技术哪个好?

蓝牙AOA定位技术的出现,弥补了蓝牙RSSI值定位精度不高的缺陷。从理论上来说,可以对目前的蓝牙RSSI定位方案进行一定程度的替代。当然了,在高精度定位应用领域中,UWB定位已经在批量的成熟商用了。蓝牙AOA也具有很高的定位精度&…

单位网站被黑被下达整改进行行政处罚

最近这几年,由于信息系统安全等级保护法的普及,越来越多公司收到当地公安网监部门打来的电话,说你们公司网站有漏洞,需要限期在2-3内进行漏洞整改和加固,遇到这种情况,不要着急,下面来分享一下该…