Redis主从复制环境部署

news2025/3/4 16:52:31

文章目录

    • Redis主从复制:
      • 原理:
      • 全同步过程:
      • 增量同步过程:
      • 主从复制配置:
      • 关闭防火墙和Selinux(三台都要)
      • 修改bindIP:
        • node3
        • node2
        • master
      • 以138为主,140,141为从
        • 检查结果:
      • 改变主服务器:
        • 例如:

Redis主从复制:

master以写为主,slave以读为主。

原理:

Redis一般是使用一个Master节点来进行写操作,而若干个Slave节点进行读操作,Master和Slave分别代表了一个个不同的 Redis Server 实例。

另外定期的数据备份操作也是单独选择一个Slave去完成,这样可以最大程度发挥Redis 的性能,为的是保证数据的弱一致性和最终一致性。

另外,Master和 Slave的数据不是一定要即时同步的,但是在一段时间后Master和 Slave的数据是趋于同步的,这就是最终一致性。

image-20230717133224775

全同步过程:

  1. Slave 发送Sync命令到Master。
  2. Master启动一个后台进程,将 Redis 中的数据快照保存到文件中。
  3. Master 将保存数据快照期间接收到的写命令缓存起来。
  4. Master完成写文件操作后,将该文件发送给Slave。
  5. 使用新的RDB或AOF文件替换掉旧的RDB或AOF文件。
  6. Master将这期间收集的增量写命令发送给Slave端。

增量同步过程:

  1. Master接收到用户的操作指令,判断是否需要传播到Slave。
  2. 将操作记录追加到AOF文件。
  3. 将操作传播到其他Slave:对齐主从库;往响应缓存写入指令。
  4. 将缓存中的数据发送给Slave。

主从复制配置:

准备三台虚拟机或三个实例

我这边准备了三个虚拟机:

image-20230717140737671

关闭防火墙和Selinux(三台都要)

[root@rhel7 ~]# systemctl stop firewalld.service 
[root@rhel7 ~]# setenforce 0

修改bindIP:

node3

image-20230717141520330

[root@redis3 ~]# redis-server /etc/redis/redis.conf
[root@redis3 ~]# redis-cli -h 192.168.110.141
192.168.110.141:6379> ping
PONG

node2

image-20230717141650411

[root@redis2 ~]# redis-server /etc/redis/redis.conf
[root@redis2 ~]# redis-cli -h 192.168.110.140
192.168.110.140:6379> ping
PONG

master

image-20230717141855589

[root@rhel7 ~]# redis-server /etc/redis/redis.conf 
[root@rhel7 ~]# redis-cli -h 192.168.110.138
192.168.110.138:6379> ping
PONG
192.168.110.138:6379> 

执行以下命令检查信息

192.168.110.138:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:19fcb46c603434fd1fc3ed7402d1d6452e49068b
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

以138为主,140,141为从

则需要在140及141上如下配置:

192.168.110.140:6379> SLAVEOF 192.168.110.138 6379
OK

192.168.110.141:6379> SLAVEOF 192.168.110.138 6379
OK

检查结果:

#查看角色
192.168.110.138:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.110.140,port=6379,state=online,offset=478,lag=0
slave1:ip=192.168.110.141,port=6379,state=online,offset=478,lag=0
master_replid:17fd54608d77ecf7eef93bff047b96bdc2edbeaf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:478
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:478

#在138上设置键
192.168.110.138:6379> set words 'i am master of 138'
OK
#140,141都拿到了该建
192.168.110.140:6379> keys *
1) "words"
192.168.110.141:6379> keys *
1) "words"
192.168.110.141:6379> get words
"i am master of 138"

注意:

从服务器只能读,若从服务器写入数据则会报错。

若从服务器宕机后需要再次执行slaveof命令才能变为从服务器。

改变主服务器:

slaveof no one

例如:

#在140上执行
192.168.110.140:6379> SLAVEOF no one
OK
192.168.110.140:6379> info replication
# Replication
role:master
connected_slaves:0
master_replid:16f6113a27fcc013d1cff83923802bc3213ea8ff
master_replid2:17fd54608d77ecf7eef93bff047b96bdc2edbeaf
master_repl_offset:1136
second_repl_offset:1137
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1136
#此时其他服务器还没有添加140为主,所以此时140是一个独立的服务器。

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

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

相关文章

redis 跳跃表、字典、压缩列表、快速列表

redis 跳跃表、字典、压缩列表、快速列表 1. 跳跃表 ​ 跳跃表是有序集合的底层实现。就是将有序集合的部分节点进行分层。每一层都是有序集合,并且层次越高,节点数量就越少。最底层的包含所有节点数据。典型的空间换时间。 ​ Redis中的跳跃表&#x…

使用 FreeCAD 软件打开 stp、dwg、dxf 等模型文件并测量零件尺寸

1、下载安装 FreeCAD 软件 https://www.freecad.org/downloads.php 2、打开 stp 等模型文件,选择 framework 查看方式(只显示点、线) 3、切换到 Part 菜单栏 4、打开 Measure Linear 工具(测量线性距离) 5、选择两个…

初探KVM虚拟化技术:新手指南

首先了解一下虚拟化的概念 虚拟化是指对资源的逻辑抽象、隔离、再分配、管理的一个过程,通常对虚拟化的理解有广义狭义之分。广义包括平台虚拟化、应用程序虚拟化、存储虚拟化、网络虚拟化、设备虚拟化等等。狭义的虚拟化专门指计算机上模拟运行多个操作系统平台。…

安卓设备监听全部输入信号

前言: 最近团队收到一个产品需求,需要监听安卓设备上用户是否有输入行为,以免定制推荐的时候打搅到用户。这里指的是设备上所有应用的输入行为,而不是单指某一个应用。 这个需求还是蛮有挑战性的,需要涉及到很多FW层…

Java设计模式之模板模式

1. 模板模式介绍 1、模板模式即模板方法模式自定义了一个操作中的算法骨架,而将步骤延迟到子类中,使得子类可以不改变一个算法的结构,可以自定义该算法的某些特定步骤; 2、父类中提取了公共的部分代码,便于代码复用&am…

PyTorch深度学习实战(5)——计算机视觉基础

PyTorch深度学习实战(5)——计算机视觉基础 0. 前言1. 图像表示2. 将图像转换为结构化数组2.1 灰度图像表示2.2 彩色图像表示 3 利用神经网络进行图像分析的优势小结系列链接 0. 前言 计算机视觉是指通过计算机系统对图像和视频进行处理和分析&#xff…

Scala(二)

第2章 变量和数据类型 2.1 注释 Scala注释使用和Java完全一样。 注释是一个程序员必须要具有的良好编程习惯。将自己的思想通过注释先整理出来,再用代码去体现。 1)基本语法 (1)单行注释:// (2&#xff0…

高时空分辨率、高精度一体化预测技术的风、光、水自动化预测技术的应用

第一章 预测平台讲解及安装 一、高精度气象预测基础理论介绍 综合气象观测数值模拟模式; 全球预测模式、中尺度数值模式; 二、自动化预测平台介绍 Linux系统 Crontab定时任务执行机制 Bash脚本自动化编程 硬件需求简介 软件系统安装 …

独立站该怎么带来客户流量?来看看这五大方法吧!

建立独立站是为了让更多的人知道你的品牌和产品,从而吸引潜在客户并转化为销售机会。以下是一些可以帮助独立站带来客户流量的方法: 01.SEO(搜索引擎优化): 优化网站的SEO,使得搜索引擎能够更好地找到你的…

MyBatis之慎用association

这里先总结一下 association 存在的问题。 一、内嵌查询时存在报错Id找不到及内存溢出隐患 二、一对多关系数据重复问题 三、多层嵌套内层 association 查询结果为null 或 非预期的值 一、内嵌查询时存在报错Id找不到及内存溢出隐患 参考: https://www.lmlphp.co…

DP358/321/323/324运算放大器芯片

DP358、DP321、DP323、DP324是一款低噪声、低压、低 功耗轨到轨输出运放大器,该系列放大器的增益带宽为 11MHz,压摆率为 8.5V/uS,其中DP323 在掉电工作模式下待机电流小于1uA。该系列放大器可以广泛应用于各种电子产品领域。 主要特性: 轨到轨最大输入…

电脑提示msvcr110.dll丢失怎样修复呢?推荐三个修复方法

Windows系统总是不可避免会出现系统报错,提示msvcr110.dll丢失,无法运行启动软件程序,主要就是由于系统的msvcr110.dll丢失或者损坏。msvcr110.dll是Microsoft Visual C Redistributable软件包中的一个文件,它是由Microsoft Visua…

【文生图系列】Stable Diffusion Webui安装部署过程中bug汇总(Linux系统)

文章目录 bugs虚拟环境pythongfpgan和cython bugs 看网上部署stable diffusion webui的教程,很简单。而且我也有部署stable diffusion v1/v2的经验,想着应该会很快部署完stable diffusion webui,但是没想到在部署过程中,遇到各种…

【数据分析 - 基础入门之pandas篇③】- pandas数据结构——DataFrame

文章目录 前言一、DataFrame创建1.1 字典创建1.2 NumPy二维数组创建 二、DataFrame切片2.1 行切片2.2 列切片2.3 行列切片 三、DataFrame运算3.1 DataFrame和标量的运算3.2 DataFrame之间的运算3.3 Series和DataFrame之间的运算 四、DataFrame多层次索引4.1 多层次索引构造1.隐…

AJAX异步请求JSON数据格式

目录 前言 1.AJAX的实现方式 1.1原生的js实现方式 1.2JQuery实现方式 2.1语法 3.JSON数据和Java对象的相互转换 3.1将JSON转换为Java对象 3.2将Java对象转换为JSON 前言 AJAX:ASynchronous JavaScript And XML 异步的JavaScript 和 XML。 Ajax 是一种在…

在安卓里用c++显示骨骼动画

1. 程序模块图 2. 编译第三方库Assimp 2.1 下载 官网下载5.0.0版本,https://codeload.github.com/assimp/assimp/zip/refs/tags/v5.0.0 2.2 生成安卓编译链 解压后在assimp-5.0.0下建文件夹BuildAssimp 放两个脚本make_standalone_toolchain.bat python D:/Android/Sdk/nd…

安达发|各部门实施APS系统前后有哪些变化?

众所周知,生产计划部门是制造企业的重要部门,承担销售、采购、仓储、质量检验和生产的各个部门的协调工作。APS 先进计划排程系统系统通过人工智能算法跟踪所有资源,包括材料、设备、人员、客户需求、订单变更等,自动快速计算出“…

odoo-031 odoo13和odoo16的网站上添加显示变体描述 Website Add Variant Description

文章目录 测试环境需求描述实现步骤实际效果思路说明 测试环境 Odoo 版本: odoo13 和 odoo16 Python 版本:3.6.9 操作系统:Ubuntu 18.04 需求描述 添加变体描述,显示在 form 视图;在网站上动态显示产品变体描述。 …

QT之智能指针

如果没有智能指针,程序员必须保证new对象能在正确的时机delete,四处编写异常捕获代码以释放资源,而智能指针则可以在退出作用域时(不管是正常流程离开或是因异常离开)总调用delete来析构在堆上动态分配的对象。 来看看一个野指针例子 程序将会…

在 3ds Max 中创建逼真的玻璃材质

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 尽管本教程基于 3ds Max,但相同的设置适用于许多其他 3D 产品。 注意:单击每个步骤中的缩略图可查看更大的屏幕截图,其中包括视口和用户界面的相关部分。 步骤 1由于本教…