Redis(主从复制搭建)

文章目录

    • 1.主从复制示意图
    • 2.搭建一主多从
        • 1.搭建规划三台机器(一主二从)
        • 2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)
          • 1.安装Redis
            • 1.yum安装gcc
            • 2.查看gcc版本
            • 3.将redis6.2.6上传到/opt目录下
            • 4.进入/opt目录下然后解压
            • 5.进入 redis-6.2.6目录
            • 6.编译并安装
            • 7.进入 /usr/local/bin 查看是否有redis的命令
          • 2.启动并使用Redis
            • 1.进入 /opt/redis-6.2.6/
            • 2.将里面的redis.conf复制一份到/etc下
            • 3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
            • 4.启动redis,指定刚才的配置文件
            • 5.查看redis进程
          • 3.Redis基本配置
            • 1.修改端口为7489 port
            • 2.设置redis密码 requirepass
            • 3.使redis支持远程访问 bind
            • 4.登录redis的命令行,关闭redis
            • 5.重新启动redis,使配置生效
          • 4.开启7489端口
            • 1.宝塔开启端口
            • 2.腾讯云开启端口(只允许本机ip访问)
          • 5.Redis持久化配置
            • 1.进入redis配置文件
            • 2.dbfilename为redis持久化的文件名(一般不用改)
            • 3.dir修改为/root/则每次持久化的dump.rdb都会在/root/下,恢复时无论在哪里启动,都会读取这个文件进行恢复
            • 4.开启AOF持久化配置,编辑配置文件找到appendonly,设置成yes
            • 5.进入命令行关闭redis,需要指定端口登录
            • 6.重新启动redis,使配置生效
            • 7.发现/root/下面有两个配置文件,如果没有dump.rdb是因为没有对redis进行操作
          • 6.测试Java连接redis
            • 1.引入jedis的jar包
            • 2.编写测试程序
        • 3.配置Redis的一主二仆
          • 1.在配置之前,将三台的Redis的7489端口完全放开
          • 2.三台机器都进入redis的客户端,将数据全部清除
          • 3.输入 info replication 可以看到目前三台机器都为master
          • 4.在两台从服务上输入 slaveof 主服务ip 主服务端口 来设置主服务
          • 5.输入 info replication 来查看角色
            • 1.从服务
            • 2.主服务
            • 3.没连接成功,后来询问GPT4发现如果主服务器配置了密码,则需要在从服务器的masterauth 中设置一下密码
          • 6.为两台从服务器的 masterauth 配置主服务器的密码,然后测试连接
            • 1.分别设置密码
            • 2.分别重启
            • 3.从服务器重新配置
            • 4.再查看一下主服务器的状态,也是成功连接两台从服务器
          • 7.注意事项和细节
            • 1.如果想要持久化,需要在从服务的配置文件中配置 slaveof ...... 否则重启主从关系就会消失
            • 2.主服务器可读可写,从服务器只可读
    • 3.主从复制原理分析
        • 1.原理示意图
        • 2.解读
        • 3.细节
          • 1.主服务down掉了的情况
          • 2.当从服务down掉了的情况
        • 4.薪火相传
        • 5.反客为主(是在薪火相传的基础上的)
    • 4.哨兵模式(sentinel)
        • 1.配置哨兵
          • 1.**保持一主二仆的环境即可**
          • 2.随便找一台服务器启动哨兵,这里选择在master服务器启动
            • 1.在/etc下面创建一个sentinel.conf的配置文件
            • 2.编辑文件,设置master的名字,ip+端口以及哨兵的个数,这里是1,还有master的密码
            • 3.再开启一个连接,启动哨兵,指定配置文件
        • 2.测试
          • 1.关闭master
          • 2.等待一会,查看哨兵,可以看到切换了master
          • 3.查看子节点的情况,注意:此时需要重新进行密码验证
          • 4.重启原来的master,会自动降级为子节点
        • 3.注意事项和细节
          • 1.主机down后的执行流程
          • 2.哨兵挑选新master的依据
          • 3.重启原来的master,会自动降级为子节点
          • 4.如果原来的主节点有密码,则需要在sentinel.conf 配置auth-pass参数设置密码
          • 5.关于密码配置方案

1.主从复制示意图

image-20240502113422879

2.搭建一主多从

1.搭建规划三台机器(一主二从)
2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)
1.安装Redis
1.yum安装gcc
yum install gcc
2.查看gcc版本
gcc --version

image-20240502134411561

3.将redis6.2.6上传到/opt目录下

image-20240502134559769

4.进入/opt目录下然后解压
cd /opt && tar -zxvf redis-6.2.6.tar.gz

image-20240502134704827

5.进入 redis-6.2.6目录
cd redis-6.2.6

image-20240502134745310

6.编译并安装
make && make install

image-20240502134932117

7.进入 /usr/local/bin 查看是否有redis的命令
cd /usr/local/bin && ll

image-20240502135006749

2.启动并使用Redis
1.进入 /opt/redis-6.2.6/
cd /opt/redis-6.2.6/

image-20240502135103511

2.将里面的redis.conf复制一份到/etc下
cp redis.conf /etc/redis.conf

image-20240502135237138

3.编辑 /etc/redis.conf,将daemonize no修改成daemonize yes即以守护进程的方式启动(后台启动)
vim /etc/redis.conf

image-20240502135330240

4.启动redis,指定刚才的配置文件
/usr/local/bin/redis-server /etc/redis.conf
5.查看redis进程
ps -aux | grep redis

image-20240502135537103

3.Redis基本配置
1.修改端口为7489 port

image-20240502135741587

2.设置redis密码 requirepass

image-20240502135842050

3.使redis支持远程访问 bind

image-20240502140044483

image-20240502140108290

4.登录redis的命令行,关闭redis
/usr/local/bin/redis-cli

image-20240502140407662

5.重新启动redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240502140612286

4.开启7489端口
1.宝塔开启端口
systemctl start firewalld && firewall-cmd --permanent --add-port=7489/tcp && firewall-cmd --reload && firewall-cmd --query-port=7489/tcp

image-20240502140719020

2.腾讯云开启端口(只允许本机ip访问)

image-20240502143052618

5.Redis持久化配置
1.进入redis配置文件
vim /etc/redis.conf
2.dbfilename为redis持久化的文件名(一般不用改)

image-20240502141741998

3.dir修改为/root/则每次持久化的dump.rdb都会在/root/下,恢复时无论在哪里启动,都会读取这个文件进行恢复

image-20240502141833925

4.开启AOF持久化配置,编辑配置文件找到appendonly,设置成yes

image-20240502142032064

5.进入命令行关闭redis,需要指定端口登录
/usr/local/bin/redis-cli -p 7489

image-20240502142252827

6.重新启动redis,使配置生效
/usr/local/bin/redis-server /etc/redis.conf && ps -aux | grep redis

image-20240502142304676

7.发现/root/下面有两个配置文件,如果没有dump.rdb是因为没有对redis进行操作

image-20240502142608205

6.测试Java连接redis
1.引入jedis的jar包

image-20240502143134966

2.编写测试程序
    public static void main(String[] args) {// 连接服务器的redis命令行Jedis jedis = new Jedis("xxx", xx);// 如果redis设置了密码要先进行验证jedis.auth("******");String ping = jedis.ping();System.out.println(ping);}
3.配置Redis的一主二仆
1.在配置之前,将三台的Redis的7489端口完全放开

image-20240502151305582

2.三台机器都进入redis的客户端,将数据全部清除

image-20240502152257185

3.输入 info replication 可以看到目前三台机器都为master

image-20240502152339936

4.在两台从服务上输入 slaveof 主服务ip 主服务端口 来设置主服务
slaveof xxxx  xxx
5.输入 info replication 来查看角色
1.从服务

在这里插入图片描述

2.主服务

image-20240502160014051

3.没连接成功,后来询问GPT4发现如果主服务器配置了密码,则需要在从服务器的masterauth 中设置一下密码

image-20240502160216284

6.为两台从服务器的 masterauth 配置主服务器的密码,然后测试连接
1.分别设置密码

image-20240502160347989

2.分别重启

image-20240502160945545

3.从服务器重新配置
slaveof 。。。。。。

在这里插入图片描述

4.再查看一下主服务器的状态,也是成功连接两台从服务器
info replication

在这里插入图片描述

7.注意事项和细节
1.如果想要持久化,需要在从服务的配置文件中配置 slaveof … 否则重启主从关系就会消失
2.主服务器可读可写,从服务器只可读

3.主从复制原理分析

1.原理示意图

image-20240502162041121

2.解读

image-20240502162022135

3.细节
1.主服务down掉了的情况
  • 从服务并不会抢占主服务的位置
  • 当主服务重新启动之后,从服务又会指向主服务
2.当从服务down掉了的情况
  • 当再次连接主服务时还是会进行一次全量备份
4.薪火相传
  • 简单来说就是让b是a的slave,c是b的slave
  • 这样c的数据就从b来获取,而写入操作还是从a进行

image-20240502163548532

5.反客为主(是在薪火相传的基础上的)

image-20240502164007948

4.哨兵模式(sentinel)

1.配置哨兵
1.保持一主二仆的环境即可
2.随便找一台服务器启动哨兵,这里选择在master服务器启动
1.在/etc下面创建一个sentinel.conf的配置文件
touch /etc/sentinel.conf
2.编辑文件,设置master的名字,ip+端口以及哨兵的个数,这里是1,还有master的密码
vim /etc/sentinel.conf
sentinel monitor redis_master ........
3.再开启一个连接,启动哨兵,指定配置文件
/usr/local/bin/redis-sentinel /etc/sentinel.conf 

image-20240502165851224

2.测试
1.关闭master

image-20240502183659278

2.等待一会,查看哨兵,可以看到切换了master
3.查看子节点的情况,注意:此时需要重新进行密码验证

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

4.重启原来的master,会自动降级为子节点

在这里插入图片描述

3.注意事项和细节
1.主机down后的执行流程

image-20240502184700413

2.哨兵挑选新master的依据

image-20240502184725028

3.重启原来的master,会自动降级为子节点
4.如果原来的主节点有密码,则需要在sentinel.conf 配置auth-pass参数设置密码
5.关于密码配置方案
  • 在redis.conf中配置requirepass 以及masterauth 都为相同的密码,这样各个节点就可以正常连接了
  • 如果是哨兵模式还要在sentinel.conf 配置master的密码,格式为 sentinel auth-pass master名字yourStrongPassword

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

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

相关文章

iptables---防火墙

防火墙介绍 防火墙的作用可以理解为是一堵墙,是一个门,用于保护服务器安全的。 防火墙可以保护服务器的安全,还可以定义各种流量匹配的规则。 防火墙的作用 防火墙具有对服务器很好的保护作用,入侵者必须穿透防火墙的安全防护…

Leetcode—1991. 找到数组的中间位置【简单】

2024每日刷题&#xff08;129&#xff09; Leetcode—1991. 找到数组的中间位置 实现代码 class Solution { public:int findMiddleIndex(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);int prefix 0;for(int i 0; i < nums.size();…

考情分析 | 2025年西北工业大学计算机考研考情分析!

西北工业简称西工大&#xff08;英文缩写NPU&#xff09;&#xff0c;大学坐落于古都西安&#xff0c;是我国唯一一所以同时发展航空、航天、航海工程教育和科学研究为特色&#xff0c;以工理为主&#xff0c;管、文、经、法协调发展的研究型、多科性和开放式的科学技术大学。十…

怎么制作好玩的gif?试试这个工具轻松制作

视频之所以受大众的喜爱是因为有声音、画面的搭配&#xff0c;让观者深入其中体验感会更强。但是视频的体积较大、时长也比较长&#xff0c;给我们的传播和保存造成了一定的影响。那么&#xff0c;我们可以将视频制作成gif图片来使用&#xff0c;不需要下载软件&#xff0c;使用…

最大数字——蓝桥杯十三届2022国赛大学B组真题

问题分析 这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位&#xff0c;因为对高位的影响永远大于对低位的影响。然后我们再来分析一下&#xff0c;如何使用这两种操作&#xff1f;对于加操作&#xff0c;如果能使这一位的数字加到9则变成9&#xff0…

UE5自动生成地形一:地形制作

UE5自动生成地形一&#xff1a;地形制作 常规地形制作地形编辑器地形管理添加植被手动修改部分地形的植被 置换贴图全局一致纹理制作地貌裸露岩石地形实例 常规地形制作 地形制作入门 地形导入部分 选择模式&#xff1a;地形模式。选择地形子菜单&#xff1a;管理->导入 …

STC8增强型单片机开发——C51版本Keil环境搭建

一、目标 了解C51版本Keil开发环境的概念和用途掌握C51版本Keil环境的安装和配置方法熟悉C51版本Keil开发环境的使用 二、准备工作 Windows 操作系统Keil C51 安装包&#xff08;可以从Keil官网下载&#xff09;一款8051单片机开发板 三、搭建流程 环境搭建的基本流程&#xf…

思维导图网页版哪个好?2024年值得推荐的8个在线思维导图软件!

思维导图如今已成为一种常用的工具&#xff0c;帮助我们清晰地组织和整理信息。随着科技的发展&#xff0c;思维导图的产品形态也经过多轮迭代&#xff0c;从最初的本地客户端过渡到基于云的 Web 端&#xff0c;各类网页版思维导图软件应运而生&#xff0c;它们方便快捷&#x…

【Linux】gcc/g++的使用

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解Linux中gcc/g使用的相关内容。 如果看到最后您觉得这篇文章写得不错…

【Linux】CAN根据时钟频率、波特率计算采样点详解

1、采样点知识回顾 参考博客:【CAN】知识点:帧类型、数据帧结构、传输速率、位时间、采样点 CAN 采样点是指在一个数据位的传输周期内,接收器实际采样数据的时间点。这个时间点是以百分比来表示的,它决定了在数据位的传输周期中,何时读取数据位的值。 正确设置采样点对…

js api part3

环境对象 环境对象&#xff1a; 指的是函数内部特殊的 变量 this &#xff0c; 它代表着当前函数运行时所处的环境 作用&#xff1a; 弄清楚this的指向&#xff0c;可以让我们代码更简洁 函数的调用方式不同&#xff0c;this 指代的对象也不同 【谁调用&#xff0c; this 就是…

Qt | QLineEdit 类(行编辑器)

01、上节回顾 Qt | QComboBox(组合框)02、QLineEdit 1、QLineEdit 类是 QWidget 类的直接子类,该类实现了一个单行的 输入部件,即行编辑器,见右图 2、验证器(QValidator 类)和输入掩码简介:主要作用是验证用户输入的字符是否符合验证器 的要求,即限制对用户的输入,比…

论文阅读_使用有向无环图实现流程工程_AgentKit

英文名称: AgentKit: Flow Engineering with Graphs, not Coding 中文名称: AgentKit&#xff1a;使用图而非编码进行流程工程 链接: https://arxiv.org/pdf/2404.11483.pdf 代码: https://github.com/holmeswww/AgentKit 作者: Yue Wu, Yewen Fan, So Yeon Min, Shrimai Prabh…

Julia 语言环境安装与使用

1、Julia 语言环境安装 安装教程&#xff1a;https://www.runoob.com/julia/julia-environment.html Julia 安装包下载地址为&#xff1a;https://julialang.org/downloads/。 安装步骤&#xff1a;注意&#xff08;勾选 Add Julia To PATH 自动将 Julia 添加到环境变量&…

C语言 函数的嵌套与递归 调用

本文 我们来说函数的嵌套调用和递归调用 在很多大型项目中 我们肯定不可能将所有逻辑都写在一个函数中 肯定要按功能拆解成多个特定的功能函数 函数并不允许嵌套调用&#xff0c;但是 允许在逻辑代码中嵌套调用 所谓函数嵌套调用 就是在一个函数中调用另一个函数&#xff0c;而…

【计算机毕业设计】基于SSM++jsp的菜匣子优选系统【源码+lw+部署文档+讲解】

目录 第一章 绪 论 第二章 关键技术的研究 2.1 JSP技术介绍 2.2 JAVA简介 2.3 ECLIPSE 开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第三章 系统分析 3.1 系统设计目标 3.2 系统可行性分析 3.3 系统功能分析和描述 3.4系统UML用例分析 3.4.1管理员用例 3.4.2用户用例 3.5系统流…

C语言 计数控制循环

今天 我们来说 计数控制的循环 对于循环次数 我们已知的循环 我们称之为 计数控制的循环 这种情况 我们一般选择 for来实现 更为方便 先看一个案例 求 1 到 N 的累加合 我们代码可以这样写 #define _CRT_SECURE_NO_WARNINGS//禁用安全函数警告 #pragma warning(disable:6031…

信创基础硬件之芯片

信创基础硬件之芯片 文章目录 信创基础硬件之芯片服务器服务器的定义服务器的功能服务器的构成服务器的性能 处理器&#xff08;CPU&#xff09;CPUGPUDPU CPU的分类按CPU指令集架构分类按CPU体系架构分类 CPU产业链六大国产CPU公司详解海光飞腾鲲鹏兆芯龙芯申威 国产CPU对比从…

Linux网络编程:TCP编程实现

目录 1、前言 2、函数介绍 2.1 socket函数 与 通信域 2.2 bind函数 与 通信结构体 2.2.1 domain通信地址族 与 通信结构体 2.2.2 IPv4地址族结构体 2.2.3 通用地址族结构体 2.2.4 示例&#xff1a;为套接字fd绑定通信结构体addr 2.3 listen函数 与 accept函数 …

了解外汇询价和锁价,全球交易中的关键概念

外汇市场是全球交易量最大的金融市场之一&#xff0c;每天都有大量的货币买卖活动。在外汇交易中&#xff0c;询价和锁价是两个关键概念&#xff0c;它们不仅影响交易者的决策&#xff0c;还关系到交易的成本和风险控制。为了帮助交易者更好地理解和应用这两个概念&#xff0c;…