redis超详细篇6 redis主从复制(配置主从、薪火相传、反客为主)

本文主要是介绍redis超详细篇6 redis主从复制(配置主从、薪火相传、反客为主),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇我们讲了redis的持久化相关知识,本篇带领大家了解下主从复制

开篇

我们为啥需要做主从复制?
读写分离,性能扩展
容灾快速恢复
上诉两种理由大家都能理解吧,就不做赘述

下面江苏下如何做主从配置

主从配置

主从配置我们举例哈,分三个步骤进行
1.创建一个myredis文件夹复制redis配置文件
2.写一主两从配置文件
3.写主从命令

以下仅为测试案例:
我们新建一个myredis的文件夹,将redis目录下得redis.conf配置文件拷贝到这文件夹下
在这目录另外建立三个配置文件分别命名:redis6379.conf、redis6380.conf、redis6381.conf;
redis6379作为主服务器,其他两个作为从服务器
在这里插入图片描述

redis6379.conf、redis6380.conf、redis6381.conf,写入以下命令
```bash
include /root/microservice/myredis/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb

这里面要做一定的修改:include 是指向myredis目录下得redis.conf路径; pidfile定义当前进程文件;dbfilename 定义当前得服务得持久化文件名(这里记得三个文件对应相应的端口号哈)

接下来重载下三个conf文件(重载前记得查看redis所有进程,先杀死再重载,为了更好的看到效果
在这里插入图片描述
查看效果
用redis-cli打开相应端口的服务,然后输入

info replication

查看每个redis服务状态,发现他们都是master主机形式,是因为我们还没有进行命令设置
在这里插入图片描述
设置两台从机
配置策略:配从不配主,只需要在从机上设置,命令为

slaveof ip port

ip port就是主机得ip 和端口

再看看效果:
在这里插入图片描述
我们发现两台从机已经变成了slave,并且有主机的相关信息,但还有一个问题,就是此时它连接主机的状态是:down。这说明没有连接上主机,经过日志调查,发现报错了:MASTER aborted replication with an error: NOAUTH Authentication required.
这段错误是主机中止了复制,出现错误:没有权限;

报错解决:
从机在配置主机的时候加上主机的密码,尝试过用命令去实现,发现不行,最终的解决方式是在conf文件中加上

masterauth 123456

在这里插入图片描述
从机的配置中加上了主机的密码验证,这样在设置了主机时,主机就能复制信息到从机了

命令改完之后,重新加载下,我们再次看效果,发现主机的连接状态就变成了:up

主机也能看到从机的相关信息了
在这里插入图片描述

我们在主机上写入个键值看看从机能不能收到
在这里插入图片描述

经过测试,我们发现,主机上写入一个值,无论是主从之前的还是之后的,从机都能完整的复制过来,有一点要注意:从机没办法进行写入

到这里为止,我们的主从配置就算入门了。

总结下:
1.设置配置文件
2.命令代码设置主机
3.重新加载

缺点:用命令选择主机服务器的方式有点不太可取,如果服务器一旦挂掉,重启之后它还是指定自己为主机,需要重新指定;

解决:我们解决办法是在conf文件进行指定主机的ip 和端口。

讲到这顺便讲一下主从机制的一些特点

主从特点

一主二仆

主机挂断之后,从机正常,从机不会上位,依然指定的是主机;只是主机的连接状态时:down。待主机恢复正常后,从机指定主机的连接状态为:up

一句话就是:大哥依旧是大哥

薪火相传

上一个slave可以是下一个slave的master,slave同样可以接收其他slave的连接和同步请求;该slave作为链条中的下一个master,可以有效地减轻master的写压力,去中心化风险。
什么意思:就是slave可以发展自己的下线,把自己作为一个master
举个例子:你是公司的研发经理,你下面有三个研发,后来公司扩招,找了20个研发,这时候你就需要有三四个小组长来管理下,你只要对接其中三四个小组长就可以了。剩下的都是小组长的小弟
这么做也有个风险:一旦某个slave宕机了,后面的slave没法备份;无论主机挂了,从机还是从机的小弟都无法进行数据同步

反客为主

有没有想过这么一个问题,如果主机突然挂了,还想让服务正常运行下去,该怎么办么。我们当然有办法,

主要在某一从机中选出一台,然后输入以下命令

slave no one

可以从机变成主机

举例:如果你的经理走了,这时候群龙无首,需要选出一个人来顶替;这就是反客为主的概念了

到这你可能说:前面不是说了,大哥一直是大哥,这里怎么变成反客为主了。我们不要抠字眼,这里反客为主是大哥走了,其他人第题,以前的大哥不影响在你心中的位置

最后来讲下主从复制的远离

复制原理

1.当从连接上主服务器之后,从服务器主服务器发送进行数据同步消息
2.主服务器接受到从服务器发送过来的同步消息,把主服务数据进行持久化,rdb文件,把rdb文件发送 从服务器,从服务器拿到rdb进行读取
3.每次主服务器进行写操作之后和从服务器进行数据同步

未完待续:下一篇我们继续将redis的其他特性

这篇关于redis超详细篇6 redis主从复制(配置主从、薪火相传、反客为主)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/603359

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Goland debug失效详细解决步骤(合集)

《Golanddebug失效详细解决步骤(合集)》今天用Goland开发时,打断点,以debug方式运行,发现程序并没有断住,程序跳过了断点,直接运行结束,网上搜寻了大量文章,最后得以解决,特此在这... 目录Bug:Goland debug失效详细解决步骤【合集】情况一:Go或Goland架构不对情况二:

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤

《SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤》本文主要介绍了SpringBoot+MyBatis-Flex配置ProxySQL的实现步骤,文中通过示例代码介绍的非常详... 目录 目标 步骤 1:确保 ProxySQL 和 mysql 主从同步已正确配置ProxySQL 的

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

Springboot 中使用Sentinel的详细步骤

《Springboot中使用Sentinel的详细步骤》文章介绍了如何在SpringBoot中使用Sentinel进行限流和熔断降级,首先添加依赖,配置Sentinel控制台地址,定义受保护的资源,... 目录步骤 1: 添加 Sentinel 依赖步骤 2: 配置 Sentinel步骤 3: 定义受保护的

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略