最新Redis7主从复制(保姆级教程)

前提准备:三台云服务器(吐血消费,点赞回血)也可以使用虚拟机创建三台,但是我搞了一天也连接不上,要是又可以连接上的大家可以教我一下,也可以参考一下或者大家可以参考一下这个大佬的配置:如何配置虚拟机

官网解释:

一句话解释:master以写为主,slave以读为主;就是当master数据变化的时候,自动将新的数据异步同步到其他slave数据库

                        ​​​​​​

配置文件修改

我们使用vim redis.conf 在视图模式使用:set number 就可显示行数

开启daemonize yes 

注释掉bind 127.0.0.1 

protected-mode no 

指定端口 

指定当前工作目录:dir  

pid文件名字:pidfile 

log文件名字:logfile 

密码设置:requirepass 

dump.rdb名字 

aof文件:appendfilename 

从机访问主机的通行密码masterauth,必须

常用三招

一主二仆

配置文件固定写死

我们按照上述配置文件,修改一下我们的文件

先master后slave依次启动

此时我们可以看见,每个redis服务器都执行keys *的时候,都可以把所有元素都打印一下

我们可以通过日志查看一下主从关系

主机日志:使用vim 6379.log

从机日志:

1、从机可以执行写命令吗?

此时我们可以看到,我们使用从机设置的时候,报错了!!!

2、slave是从头开始复制还是从切入点开始复制?

master启动,写到k3

slave1跟着master同时启动,跟着写到k3

slave2写到k3后才启动,那之前的是否也可以复制?

此时我们可以发现,slave2把所有内容都同步了,结论:首次一锅端,后续跟随,master写,slave跟

3、主机shutdown后情况如何?从机是上位还是原地待命

从机不动,原地待命,从机数据可以正常使用;等待主机重启动归来,当主机回来后,青山依旧在!!!

4、某台从机down后,amster继续,从机重启后能否跟上大部队?

由此我们可以知道,无论是那个从机down机了,重连之后都会从主机复制所有内容

命令操作手动指定

刚刚我们是吧主从关系写到配置文件中,这样只要一开机,就会自动连接主机,现在我们要实现手动连接

1、从机停机去掉配置文件中的配置项,三台都是主机的状态,各不从属

2、使用info replication查看主从关系

预设的从机上执行 slaveof 主机ip 端口号

此时我们可以看见执行该命令的机器变成从机

如果从机重启的话关系还在呢

很显然,我们重启之后这种主从关系就消失了

薪火相传

关于上述的一主二从的关系是比较鸡肋的,因为多个从机连接一个master会增加master的压力;所以我们要实现一种方法:

上一个slave可以是下一个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻主master的写压力

反客为主

使当前数据库停止与其他数据库的同步,转为master

复制的工作原理和工作流程

slave启动,同步初始

slave启动成功连接到master后会发送一个sync命令、

slave首次全新连接master,一次完全同步(全量复制)将会被自动执行,slave自身原有数据将会master数据覆盖清除

首次连接,全量复制

master节点收到sync命令后,会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接受到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,master将RDB快照文件和所有缓存的命令发送到slave,已完成一次完全同步

slave服务器在收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化

心跳持续,保持通信

master发出PING包的周期,默认是10

进入平稳,增量复制

Master继续将新的所有收集到的修改命令自动依次传给slave,完成同步

从机下线,重连续传

Master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,offset是保存在backlog中的。Master只会把已经复制的offset后面的数据复制给Slave,类似断点续传

复制缺点

复制延时,信号衰减

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重

                        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

master挂了怎么办

默认情况下,不会在slave节点中自动重选一个master,那么都要人工干预呢?无人值守变成刚需,那么我们请静等下集:哨兵!!!

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

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

相关文章

人工智能与天文:技术前沿与未来展望

人工智能与天文:技术前沿与未来展望 一、引言 随着科技的飞速发展,人工智能(AI)在各个领域的应用越来越广泛。在天文领域,AI也发挥着越来越重要的作用。本文将探讨人工智能与天文学的结合,以及这种结合带…

大数据Doris(三十六):Duplicate 模型(冗余模型)介绍

文章目录 Duplicate 模型(冗余模型)介绍 一、创建doris表 二、插入数据

PR模板,复古怀旧电影效果视频制作PR项目工程文件

Premiere复古怀旧电影效果视频制作pr模板项目工程文件下载 这个PR模板以复古城市印象电影质感为特色,结合了电影和数字故障效果。包含6个场景。可以编辑文本、添加媒体和自定义颜色。包含视频教程。4K版本。不需要任何插件。 软件支持:PR2022 | 分辨率&a…

DBA面试题

Oracle体系结构 (1)、Oracle实例内存中包含哪些部分? 答: sga与pga sga:是一组共享的内存区域,包含数据字典缓存、库缓存、重做日志缓冲区 Pga:为每个服务器进程分配的非共享内存,存储会话状态和私有SOL工作区 在Oracle数据库中&…

使用Linux命令修改服务器时间及设置时区

在服务器管理和维护中,准确的系统时间对于保证服务器正常运行和数据一致性至关重要。 而有时候,我们可能需要手动修改服务器上的系统时间,以调整时区、修复时间漂移等问题。 本文将介绍如何使用Linux命令来修改服务器时间。 一、检查当前时…

StarCCM+ 导入STL几何模型进行仿真

使用 StarCCM 进行仿真时,通常都是用 3D-CAD Model 导入 CAD 类型的几何模型。但对于一些特殊情况,例如通过三维重建等方法获得的几何模型是 STL 文件而非 CAD 文件,这种情况下可以通过 Import Surface Mesh 的方法导入 STL 文件进行仿真&…

Halcon 深度学习语义分割

1.1根据txt格式标签生成Label图片 (1) 经过测试验证,使用python代码或者halcon代码生成的Label图片是一样的。但要注意,最后要生成png格式的Label图片。 (2) 使用python代码生成Label图片 import cv2 import os import numpy as npdef gen_label_img(…

ubuntu pycharm 死机,如何重启

1. 找出pycharm 进程的id 进入命令行: ps -ef 是查看当前运行的进程 值输入 ps -ef 会返回所有当前执行的进程,太多了,过滤一下,找到 pycharm : ps -ef | grep pycharm 2. 使用 kill -s 9 来杀死进程 如图所是,…

文字转语音自动合成系统源码:让你的语音自动转成文字 附带完整的搭建教程

人工智能技术的不断发展,语音识别和自然语言处理技术已经逐渐成熟。文字转语音自动合成系统就是结合了这两项技术,将文字信息转化为语音输出,为用户提供更加便捷、高效的信息获取方式。这种系统在语音助手、智能客服、教育学习等领域有着广泛…

11月,1Panel开源面板项目收到了这些评论

2023年11月24日,1Panel开源面板项目(https://github.com/1Panel-dev)发布了题为《10月,1Panel开源面板收到了这些评论》的社区评论合集。在该文章的评论区,很多社区用户跟帖发表了自己对1Panel开源项目的使用感受和意见…

爬虫中Cookies 和 Sission的区别 , 超时设置

Cookies 和 Sission 1.1 cookie和session的区别 cookie数据存放在客户的浏览器上,session数据放在服务器上 cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗 session会在一定时间内保b存在服务器上,当访问增多&#xf…

QEMU源码全解析 —— virtio(8)

接前一篇文章: 上一回讲解了virtio balloon相关类所涉及的realize函数,如下表所示: realize函数parent_dc_realize函数DeviceClassvirtio_pci_dc_realizePCIDeviceClassvirtio_pci_realizeVirtioPCIClassvirtio_balloon_pci_realizepci_qdev…

二叉搜索树--二叉排序树

特性 搜索依据的关键码&#xff0c;所有节点的关键码互不相同非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。左 < 根 < 右&#xff0c;左右都是二叉排序树二叉搜索树-中序遍历从小到大有序 创建二叉搜…

什么是WebSocket?在PHP中如何使用WebSocket?

WebSocket&#xff1a; WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它提供了与 HTTP 不同的通信方式&#xff0c;允许服务器主动向客户端推送数据&#xff0c;而不需要客户端明确地请求。WebSocket 通信始于一个握手过程&#xff0c;之后就可以在双方之间建立持…

学习软件测试建议看些什么书?

测试入门软件测试&#xff08;第2版&#xff09;Software Testing (2e), Ron Patton 一本测试入门的好书&#xff0c;较全面地介绍了各种测试领域和方法&#xff0c;为测试新手提供了正确的观念和宽泛的基础。 软件测试的艺术&#xff08;第2版&#xff09;The Art of Softwar…

精通Spring整合MyBatis:架构师的实践指南

引言&#xff1a; 介绍Spring和MyBatis的基本概念及其在Java应用开发中的重要性。 整合原理 在整合Spring和MyBatis时&#xff0c;关键在于理解两者是如何协同工作的。Spring框架主要负责管理Java应用的生命周期和依赖注入&#xff0c;而MyBatis则专注于数据库操作和映射。 …

Linux 服务器使用 ssh 密钥登录

背景 我们平时登录云服务器都是直接输入 IP、账号、密码进行登录&#xff0c;这种方式当是你自己的服务器的时候就没什么关系。 但是如果在企业中&#xff0c;当员工人数日渐增多时&#xff0c;又需要给后端开放测试服务器、或正式服务器的权限时。 不得不面临的一个问题就是…

node-red中输出当前时间

在node-red中输出当前时间&#xff0c;并指定时区为北京时间&#xff0c;时间格式为&#xff1a;YYYY-MM-DD HH:mm:ss 可以使用moment.js库&#xff0c;也可以自行写一个function&#xff0c;介绍一下使用自定义function的方法。 var now new Date(); var formattedDate …

SpringDataRedis 基本使用

1.1 简介 1.1.1 概述 Spring Data 中有一个成员 Spring Data Redis&#xff0c;他提供了 RedisTemplate 可以在 Spring 应用中更简便的访问 Redis 以及异常处理及序列化&#xff0c;支持发布订阅等操作。 1.2 RedisTemplate 常见 API   RedisTemplate 针对 jedis 客户端中大…

c++知识总结

一 细碎知识 1.9 I 1.9.1 inline 参考 C语言中头文件中的 static inline 函数以及 __attribute__((always_inline)) 强制内联展开-CSDN博客https://blog.csdn.net/m0_37616597/article/details/104138980 慎用 inline 内联能提高函数的执行效率,为什么不把所有的函数都定…