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---防火墙

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

第V章-Ⅰ Vue3路由vue-router初识

第V章-Ⅰ Vue3路由vue-router初识 安装Vue路由基础router-link 组件导航router-view 路由出口单独导入关于路由的库文件定义路由组件定义路由规则对象创建router实例将路由对象挂载Vue实例上redirect 路由重定向嵌套路由 路由传参params形式传参query形式传参params方式与query…

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;管、文、经、法协调发展的研究型、多科性和开放式的科学技术大学。十…

代码随想录-算法训练营day33【贪心算法03:K次取反后最大化的数组和、加油站、分发糖果】

代码随想录-035期-算法训练营【博客笔记汇总表】-CSDN博客 第八章 贪心算法 part03● 1005.K次取反后最大化的数组和 ● 134. 加油站 ● 135. 分发糖果 详细布置 1005.K次取反后最大化的数组和 本题简单一些&#xff0c;估计大家不用想着贪心 &#xff0c;用自己直觉也会有…

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

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

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

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

LeetCode-hot100题解—Day6

原题链接&#xff1a;力扣热题-HOT100 我把刷题的顺序调整了一下&#xff0c;所以可以根据题号进行参考&#xff0c;题号和力扣上时对应的&#xff0c;那么接下来就开始刷题之旅吧~ 1-8题见LeetCode-hot100题解—Day1 9-16题见LeetCode-hot100题解—Day2 17-24题见LeetCode-hot…

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 类)和输入掩码简介:主要作用是验证用户输入的字符是否符合验证器 的要求,即限制对用户的输入,比…

【C#_变量_格式化输出_If语句_微信猜拳_第一篇】

C#&#xff08;编程入门&#xff09; 练习来自腾讯课堂免费课程1.1.基本输出语句基本输出语句——知识点总结Console.Clear();清屏字符串和数字区分Console.ReadLine(); 1.2.变量的基本使用&#xff1a;变量的基本使用——知识点总结 1.3.格式化输出格式化输出——知识点总结 1…

01 设计模式--单例模式

1. 单例模式 单例模式有两种实现方式&#xff1a; 1.1 饿汉模式&#xff08;Eager Initialization&#xff09;&#xff1a;在类加载时就创建单例实例&#xff0c;无论是否需要使用该实例。 饿汉模式在类加载时就创建单例实例&#xff0c;无论是否需要使用该实例。 饿汉模式…

C++ Primer 中文版(第 5 版)-第二单元

第二单元 练习 2.1 通过读下面程序&#xff0c;写出程序运行结果。 #include <iostream>int main() {unsigned u 10, u2 42;std::cout << u2 - u << std::endl;std::cout << u - u2 << std::endl;int i 10, i2 42;std::cout << i2 …

论文阅读_使用有向无环图实现流程工程_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 添加到环境变量&…