搭建redis主从复制(读写分离)

2023-11-18

一、主从复制原理

在搭建redis读写分离架构时,master必须开启持久化。(可参考博客,RDB和AOF持久化策略一起使用也行Redis的持久化机制(RDB和AOF)(1)_p&f°的博客-CSDN博客

一旦master宕机,虽然slave可以继续提供读服务。但等到master恢复,由于没有持久化,内存里面没有任何数据,master再次做数据同步的时候,会把slave里的数据清空。

二、本博客实现的redis主从复制架构

(三台虚拟机均需要安装redis,请看redis在CentOs服务器上的安装和设置开机自启动_p&f°的博客-CSDN博客

三、具体实现

1、先配置129从机。进入redis主配置文件夹

cd /usr/local/redis/

vim redis.conf

找到如下位置,配置redis.conf从节点

①设置连接主节点的ip和接口

②设置连接主节点redis的密码

 ③设置从节点为只读

 2、下面来验证129这个从节点是否设置成功。

①在重启redis使得配置生效前,先确保持久化文件夹下没有appendonly.aof和dump.rdb文件。这两个文件就是用来持久化的,如果从机第一次装redis默认是没有的,如果有的话删除就好了,避免影响后面测试结果。我这里之前设置过是有的。rm删除即可。

(如果找不到位置,请查看Redis的持久化机制(RDB和AOF)(1)_p&f°的博客-CSDN博客

中的RDB的配置第一条 1. 保存位置)

且确保129从机的redis中没有任何数据

 ② 进入到151主机中,查看已有的数据

 输入info replication 查看当前是否有主从redis

 3、 进入从机129中重启redis

/etc/init.d/redis_init_script stop

/etc/init.d/redis_init_script start

① 此时查看持久化文件夹,主机redis的持久化文件appendonly.aof和dump.rdb已被同步过来

 登录从机的redis,查看 keys * 。此时已将主节点redis中的数据同步过来

 继续输入info replication,查看从机redis的情况

 ② 切换回主机151中,查看主机redis情况,对比上面第2 ②步一开始没有设置从机时,主机redis的情况


4、此时一主一从(151主,129从)的redis配置已经完成,下面来配置130从节点,与129从节点其实是一样的,参考上面配置129从节点过程即可。

5、此时进入151主机,查看将看到两台从机redis

 搭建完的小伙伴可以自行测试以下三个结论:

  • 如果,你在主机中新增key,两台从机中也会同步。
  • 如果,你把其中一台从机redis关闭(宕机),主机redis中新增加的key,会在宕机的从机的redis重启后,再同步过来。
  • 如果,主机redis宕机,从机不会替代主机redis,而是等待主机redis重启后,继续作为主机的从机

题外扩展:Redis无磁盘化复制 

一、无磁盘化复制原理

 

 二、配置无磁盘化复制开启(还是在redis.conf配置文件中)

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建redis主从复制(读写分离) 的相关文章

  • 具有多个数据源 Oracle 和 H2 的 Spring Boot

    我为我的 Angular 项目开发了一个 Spring Boot RestController 并遇到了问题 在我的休息服务逻辑中 我使用了两个不同的数据库来获取数据 在这里您可以看到数据源配置 应用程序 属性 datasource1 sp
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo
  • MySql:将多项选择数据存储在数据库中

    我的表单中有一个复选框列表 用户可以选择其中任何一个 也可以选择全部 认为用户选择他感兴趣的运动类型 我需要最好的数据库结构来存储这个用户选择 这样 将来我就可以获得所有这些数据 我想 我无法将每个 用户 ID 运动 选择作为新行存储在数据
  • 如何确定一个日期范围是否出现在另一个日期范围内的任何时间?

    我有一个事件表 指定日期范围start date and end date字段 我有另一个在代码中指定的日期范围 它将当前周定义为 week start 和 week end 我想查询本周的所有活动 这些案例似乎是 活动在一周内开始和结束
  • FIND_IN_SET 具有多个值[重复]

    这个问题在这里已经有答案了 我想从数据库字段搜索多个值 以下是我的查询 SELECT FROM tablename WHERE FIND IN SET 12 13 15 15 category id 我如何搜索它对我不起作用 FIND IN
  • Java 将字节转换为二进制安全字符串

    我有一些以字节为单位的数据 我想将它们放入Redis中 但是Redis只接受二进制安全字符串 而我的数据有一些二进制非安全字节 那么如何将这些字节转换为二进制安全字符串以便将它们保存到 Redis 中呢 Base64 对我有用 但它使数据更
  • 如何使用 Perl 从 NCBI 获取 FASTA 核苷酸格式的基因特征?

    我可以手动下载 FASTA 文件 如下所示 gt lcl CR543861 1 gene 1 ATGCTTTGGACA gt lcl CR543861 1 gene 2 GTGCGACTAAAA 通过单击 发送到 并选择 基因特征 FAST
  • 用于客户端存储和服务器端同步的javascript库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 javascript 库 它可以让我将数据存储在客户端数据库中 并在后台自动将数据库同
  • 防止 Django 在并发请求时多次将同一对象保存到数据库

    对于我们的博客平台 我们有一个 文章 模型 其中包含一个 更新的 日期时间字段 class Article models Model updated models DateTimeField null True blank True 当任何
  • 哪种 SQL 模式能够更快地避免插入重复行?

    我知道有两种不重复插入的方法 第一个是使用WHERE NOT EXISTS clause INSERT INTO table name col1 col2 col3 SELECT s s s WHERE NOT EXISTS SELECT
  • Redis是如何实现高吞吐量和高性能的?

    我知道这是一个非常普遍的问题 但是 我想了解允许 Redis 或 MemCached Cassandra 等缓存 以惊人的性能极限工作的主要架构决策是什么 如何维持连接 连接是 TCP 还是 HTTP 我知道它完全是用C写的 内存是如何管理
  • 单向关系和双向关系的区别

    我想知道这两个词是什么意思 我遇到他们是在教义的文档 http www doctrine project org documentation manual 2 0 en association mapping 但我不明白他们的意思 这与常见
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • 可以使用两个独立的 SQLite 数据库吗?

    我有一个 sqlite 数据库 其中存储用户定义的信息和用户只读的信息 我觉得将来可能需要修改只读信息 并且我不想进行整个数据迁移 有没有一种方法可以使用单独的 sqlite 数据库来存储只读信息 该数据库可以轻松替换 如果是这样 您能否就
  • 如何通过单个mysql查询更新多个表?

    我有两个表 tb1 和 tb2 我必须在用户级别更新两个表的公共列 我对两个表都有一个共同的标准 例如用户名 所以我想这样更新 UPDATE tb1 tb2 SET user level 1 WHERE username Mr X 但不知何
  • 我应该保留远程数据库的本地副本吗?

    我正在开发一个应用程序 基本上允许人们创建 加入和管理其他人的群组 群组内的人也可以互相发送消息 我一直在想哪条路会更好 保留包含所有信息的远程数据库 包括发送给用户和从用户发送的消息 并让应用程序在每次需要信息时查询服务器 甚至是它以前见
  • StackExchange.Redis的正确使用方法

    这个想法是使用更少的连接和更好的性能 连接会随时过期吗 对于另一个问题 redis GetDatabase 打开新连接 private static ConnectionMultiplexer redis private static ID
  • MySQL - 替换列中的字符

    作为一个自学成才的新手 我给自己制造了一个大问题 在将数据插入数据库之前 我将字符串中的撇号 转换为双引号 而不是 MySQL 实际需要的反斜杠和撇号 在我的表增长到超过 200 000 行之前 我认为最好立即纠正此问题 所以我做了一些研究
  • 寻找免费的 GUI 工具来使用 PostgreSQL [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目前 我正在使用独立的 GUI 工具DbSchema http www dbschema com 设计
  • 使用 POJO 仅更新 JOOQ 记录中已更改的字段

    我想使用 POJO 作为源来更新 JOOQ 记录中已更改的字段 Record from Object http www jooq org javadoc 3 8 x org jooq Record html from java lang O

随机推荐

  • CentOS常用zip压缩和解压缩命令

    1 压缩文件夹为zip文件 root cgls zip r mydata zip mydata 2 把mydata zip解压到mydatabak目录里面 root cgls unzip mydata zip d mydatabak 3 m
  • 电脑开机后,显示屏无信号怎么处理?

    转自 微点阅读 https www weidianyuedu com 随着使用电脑的用户越来越多 而使用的用户遇到的问题就越多了 而经常用电脑的同学大部分都遇到过电脑显示器无信号的情况吧 其实相比显示器没有任何显示而言 电脑显示器无信号的故
  • SQLServer如何统计每两小时的值

    把当前时间的 时分转为数字 select CONVERT FLOAT replace CONVERT VARCHAR 6 GETDATE 108 思路 select sum 数字 年月日 小时 2取整 from 表 group by 年月日
  • kafka学习笔记(一)简介

    这是对我找到的学习资料的整理 非手打 参考 https kafka apachecn org intro html https blog csdn net weixin 39468305 article details 106346280
  • Cannot forward after response has been committed问题解决及分析

    通过TOMCAT把系统启动 可以正常登陆门户 登陆进去选择子系统的时候点击登陆的时候 可是去又回到了登陆界面 如此反复就是不能够进入子系统 查看后台报的错误 Cannot forward after response has been co
  • 数据库密码忘记了怎么办

    修改数据库密码 方法1 用SET PASSWORD命令 首先登录MySQL 格式 mysql gt set password for 用户名 localhost password 新密码 例子 mysql gt set password f
  • 应急响应-账户排查

    用户信息排查 在服务器被入侵之后 攻击者可能会建立相关账户 方便进行远程控制 主要采用一下几种 直接建立一个新用户 有时候为了混淆视听 账户名称和系统常用名相似 激活一个系统中的默认用户 但是这个用户不经常使用 建立一个隐藏用 在windo
  • java-通过ip获取地址

    添加maven依赖
  • 关于ArcMap中打开ArcToolbox导致闪退的解决办法

    最近好久不用ArcGis的小编要用到ArcMap去发送一个GP服务 发现按照套路打开ArcMap点击ArcToolbox时 发生了ArcMap的闪退现象 几经周折终于解决了问题 希望也遇到这类问题的同学能够参考解决 而不是无脑的去重装软件
  • C# 实现ESC退出窗口的几种方法

    实现ESC退出窗口的几种方法 引言 方法一 同步按钮法 方法二 监听按键法 方法三 隐藏按钮法 最后 引言 我们通常用通过点击取消按键或者右上角的 X 盒子退出的方法来实现关闭当前Form窗体 但要使用按键ESC退出关闭窗口就显得更加高级了
  • 解决SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]的方案!!!!!

    目录 前提 一 安装maven helper插件 1 安装 2 安装成功 3 使用 二 去掉冲突的依赖包 1 前面已找到目标依赖 去pom文件内操作 2 去除 3 最后就可以了 前提 今天单元测试遇到了jar包冲突 SLF4J Class
  • 自己学驱动17——ARM工作模式和ARM9寄存器

    1 ARM体系CPU的7种工作模式 1 用户模式 usr ARM处理器正常的程序执行状态 2 快速中断模式 fiq 用于高速数据传输或通道处理 3 中断模式 irq 用于通用的中断处理 4 管理模式 svc 操作系统使用的保护模式 5 数据
  • 【Python】PyCharm中调用另一个文件的函数或类

    欢迎来到Python专栏 PyCharm中调用另一个文件的函数或类 o o 嗨 我是小夏与酒 博客主页 小夏与酒的博客 该系列文章专栏 Python学习专栏 文章作者技术和水平有限 如果文中出现错误 希望大家能指正 欢迎大家关注 目录 Py
  • 数据结构:栈

    文章目录 栈 一 概述 二 添加数据 三 删除数据 栈 一 概述 栈 Stack 是一种特殊的线性表 它只允许在一端进行插入和删除操作 通常被称为 后进先出 Last In First Out LIFO 的数据结构 栈由一系列元素组成 每个
  • python常见的三种格式化输出

    Author Father Teng Name input name Age int input age Job input job info info of 0 Name 0 Age 1 Job 2 format Name Age Job
  • 【源码改造】Flink-jdbc-connector源码简析+改造支持谓词下推

    一 需求背景分析 flink sql在维表关联时 会有一个场景 当右表的数据量比较大且有些数据虽然符合join条件 但其实对于下游来说数据可能没用 这样就浪费了flink的计算资源 且拉低了数据处理能力 如果在join前就把维表的数据进一步
  • rac术语小结

    author skatetime 2010 03 01 rac术语小结 CSS 集群同步服务 Cluster Syncronization Service 功能 Manages the cluster configuration by co
  • 一文搞定SpringSecurity+vue前后端分离

    我好菜啊 学了好几天才明白一点点 前言 把v部落git下来学一学 比起halo来说v部落会更加简单好懂一点 我看他用了SpringSecurity来做登录验证 那第一步就是学学这个SpringSecurity 然后我就发现了 我真的是太菜了
  • Linux如何强制关闭任务进程(Linux版任务管理器)

    问题描述 有时我们在使用Linux软件时会碰到软件卡死或者软件BUG无法退出 如何像使用Windows任务管理器一样去关闭应用呢 其实不需要通过重启系统来解决此类问题 只需要按照如下步骤即可解决 解决方案 第一步 打开Terminal终端控
  • 搭建redis主从复制(读写分离)

    一 主从复制原理 在搭建redis读写分离架构时 master必须开启持久化 可参考博客 RDB和AOF持久化策略一起使用也行Redis的持久化机制 RDB和AOF 1 p f 的博客 CSDN博客 一旦master宕机 虽然slave可以