Redis主从复制(反客为主模式 演示示例)——图解版

2024-01-14 00:30

本文主要是介绍Redis主从复制(反客为主模式 演示示例)——图解版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 一、Redis主从复制(反客为主的理解)
    • 二、Redis主从复制配置步骤概述
    • 三、lz虚拟机配置说明
    • 四、Redis主从复制(每台服务器的redis配置文件配置步骤)
      • 1、配置master服务器(即IP为192.168.3.15的6379端口)的配置文件
      • 2、配置slave1服务器(即IP为192.168.3.16的6380端口)的配置文件
      • 3、配置slave2服务器(即IP为192.168.3.17的6381端口)的配置文件
    • 五、Redis主从复制(反客为主演示示例,包含各种宕机情况))
      • 1、分别启动3台服务器的redis服务端,并查看3台服务器的角色信息
      • 2、slave1和slave2分别执行slaveof +master服务器ip+端口命令,查看slave1和slave2角色信息,并查看master角色信息。
      • 4、当master服务器宕机后,在slave1服务器中执行slaveof no one命令,slave2服务器重新挂载到slave1服务器中,查看slave1和slave2的角色。
      • 5、当master服务器宕机重新启动后,在次查看slave1服务器和slave2服务器角色。

一、Redis主从复制(反客为主的理解)

在这里插入图片描述

  • 由上图结构可知,反客为主指一个master服务器同时挂2个salve服务器。当master宕机后,在2个slave服务器的哪一台服务器中执行slaveof no one 命令,哪一台服务器就会升级为master服务器。

二、Redis主从复制配置步骤概述

序号配置作用
1配从(库)不配主(库)配置从服务器不配置主服务器
2从库配置,使用 slaveof 主库IP 主库端口 命令slaveof命令再每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件。
3info replication命令查看主/从复制信息
4slaveof no one命令使当前数据库停止与其他数据库同步,转成主数据库
5拷贝redis.conf文件表示指定配置文件启动redis服务
6开启daemonize yes表示是否把redis-server启动在后台,默认是“否”。若改成yes,会生成一个pid文件。
7指定pid文件名字表示pid文件的路径
8指定IP和端口表示指定服务器IP和端口如果是主机的话bind要改成0.0.0.0,从机不需要(主机一定要修改,否则主从连接失败)
9指定log文件名字表示日志文件路径
10指定dump.rdb名字表示数据库文件路径

三、lz虚拟机配置说明

1、三台虚拟机配置说明:

ip端口说明
192.168.3.15(master)6379redis主服务器
192.168.3.16(slave1)6380redis从服务器
192.168.3.17(slave2)6381redis从服务器

2、关闭三台虚拟机的防火墙,保证三台虚拟机的ip和端口都能互相访问通
在这里插入图片描述

四、Redis主从复制(每台服务器的redis配置文件配置步骤)

1、配置master服务器(即IP为192.168.3.15的6379端口)的配置文件

  • 拷贝redis.conf文件为redis6379.conf,并编辑redis6379.conf文件。如下图:
    在这里插入图片描述

  • 开启daemonize yes,如下图:
    在这里插入图片描述

  • 修改pid文件名字为redis_6379.pid,如下图:
    在这里插入图片描述

  • 指定IP和端口(6379),主机一定要把bind 127.0.0.1要改成0.0.0.0,从机不需要(一定要修改,否则主从连接失败),如下图:

    在这里插入图片描述
    在这里插入图片描述

  • 修改log文件名字为6379.log,如下图:
    在这里插入图片描述

  • 修改dump.rdb名字为dump6379.rdb,如下图:
    在这里插入图片描述

2、配置slave1服务器(即IP为192.168.3.16的6380端口)的配置文件

  • 拷贝redis.conf文件为redis6380.conf,并编辑redis6380.conf文件。如下图:
    在这里插入图片描述

  • 开启daemonize yes,如下图:
    在这里插入图片描述

  • 修改pid文件名字为redis_6380.pid,如下图:
    在这里插入图片描述

  • 指定IP和端口(6380),slave1从服务器一定也要把bind 127.0.0.1要改成0.0.0.0,因为当master宕机后,需要在slave1服务器中执行slaveof no one命令,从而升级为master服务器(一定要修改,否则主从连接失败)。如下图:

    在这里插入图片描述

    在这里插入图片描述

  • 修改log文件名字为6380.log,如下图:
    在这里插入图片描述

  • 修改dump.rdb名字为dump6380.rdb,如下图:
    在这里插入图片描述

3、配置slave2服务器(即IP为192.168.3.17的6381端口)的配置文件

  • 拷贝redis.conf文件为redis6381.conf,并编辑redis6381.conf文件。如下图:
    在这里插入图片描述

  • 开启daemonize yes,如下图:
    在这里插入图片描述

  • 修改pid文件名字为redis_6381.pid,如下图:
    在这里插入图片描述

  • 指定IP和端口(6381),从主机不需要把bind 127.0.0.1要改成0.0.0.0,从机不需要,如下图:

    在这里插入图片描述
    在这里插入图片描述

  • 修改log文件名字为6381.log,如下图:
    在这里插入图片描述

  • 修改dump.rdb名字为dump6381.rdb,如下图:
    在这里插入图片描述

五、Redis主从复制(反客为主演示示例,包含各种宕机情况))

1、分别启动3台服务器的redis服务端,并查看3台服务器的角色信息

  • 启动6379端口的master服务器并测试是否连接成功,如下图:

    在这里插入图片描述

  • 启动6380端口的slave1服务器并测试是否连接成功,如下图:
    在这里插入图片描述

  • 启动6381端口的slave2服务器并测试是否连接成功,如下图:
    在这里插入图片描述

  • 输入info replication命令,查看3台服务器的角色信息,由下图可知,3台服务器均为master服务器,如下图:
    在这里插入图片描述

2、slave1和slave2分别执行slaveof +master服务器ip+端口命令,查看slave1和slave2角色信息,并查看master角色信息。

  • 由下图可知,slave1和slave2服务器的角色都为slave,
    在这里插入图片描述
  • 由下图可知,master服务器的角色都为master,并且挂2个从服务器。
    在这里插入图片描述

4、当master服务器宕机后,在slave1服务器中执行slaveof no one命令,slave2服务器重新挂载到slave1服务器中,查看slave1和slave2的角色。

  • 由下图可知,当master宕机后,在slave1服务器中执行slaveof no one命令并且在slave2服务器重新挂载到slave1服务器中,salve1会升级为master服务器。并且可以看到挂载了slave2服务器。
    在这里插入图片描述

5、当master服务器宕机重新启动后,在次查看slave1服务器和slave2服务器角色。

  • 由下图可知,当master重新启动后,master自己单独一套体系,而slave1和slave2服务器单独一套体系,互不影响。
    在这里插入图片描述

这篇关于Redis主从复制(反客为主模式 演示示例)——图解版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

模版方法模式template method

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/template-method 超类中定义了一个算法的框架, 允许子类在不修改结构的情况下重写算法的特定步骤。 上层接口有默认实现的方法和子类需要自己实现的方法

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

迭代器模式iterator

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/iterator 不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合中所有的元素

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

springboot实战学习(1)(开发模式与环境)

目录 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 (3)前端 二、开发模式 一、实战学习的引言 (1)前后端的大致学习模块 (2)后端 Validation:做参数校验Mybatis:做数据库的操作Redis:做缓存Junit:单元测试项目部署:springboot项目部署相关的知识 (3)前端 Vite:Vue项目的脚手架Router:路由Pina:状态管理Eleme

状态模式state

学习笔记,原文链接 https://refactoringguru.cn/design-patterns/state 在一个对象的内部状态变化时改变其行为, 使其看上去就像改变了自身所属的类一样。 在状态模式中,player.getState()获取的是player的当前状态,通常是一个实现了状态接口的对象。 onPlay()是状态模式中定义的一个方法,不同状态下(例如“正在播放”、“暂停