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.rhkb.cn/news/322279.html

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

相关文章

论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition

motivation :现有方法方法无法准确定位身体部位,不同的身体部位可以出现在同一个条纹(如手臂和躯干),一个部分可以出现在不同帧(如手)的不同条纹上。其次,不同的身体部位具有不同的尺度,即使是不同帧中的同一部分也可以出现在不同…

Web前端三大主流框架是什么?

Web前端开发领域的三大主流框架分别是Angular、React和Vue.js。它们在Web开发领域中占据着重要的地位,各自拥有独特的特点和优势。 Angular Angular是一个由Google开发的前端框架,最初版本称为AngularJS,后来升级为Angular。它是一个完整的…

Apple强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片潜力

Apple 的最新强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片的潜力 概述 Apple 推出配备强大 M4 芯片的最新 iPad Pro 和 iPad Air 型号,再次突破创新界限。新一代 iPad 有望彻底改变我们的工作、创造和娱乐方式。凭借无与伦比的处理能力、令人惊…

【Kolmogorov-Arnold网络 替代多层感知机MLPs】KAN: Kolmogorov-Arnold Networks

KAN: Kolmogorov-Arnold Networks 论文地址 代码地址 知乎上的讨论(看一下评论区更正) Abstract Inspired by the Kolmogorov-Arnold representation theorem, we propose Kolmogorov-Arnold Networks (KANs) as promising alternatives to Multi-Layer…

区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(三)

🐶原文: Preventing Content Cloning in NFT Collections 🐶写在前面: 这是一篇 2023 年的 CCF-C 类,本博客只记录其中提出的方法。 F C o l l N F T \mathbf{F_{CollNFT}} FCollNFT​ and Blockchains with Native S…

损失函数详解

1.损失函数 是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越接近真实值。对每个单独的观测(数据点)计算损失函数。将所有损失函数(loss function&#xf…

树莓派4b测量PM2.5

1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…

神经网络案例实战

🔎我们通过一个案例详细使用PyTorch实战 ,案例背景:你创办了一家手机公司,不知道如何估算手机产品的价格。为了解决这个问题,收集了多家公司的手机销售数据:这些数据维度可以包括RAM、存储容量、屏幕尺寸、…

在Mars3d实现cesium的ImageryLayer自定义瓦片的层级与原点

需要自定义瓦片层级和原点,所以需要自己写第三方图层,但是之前写的很多方法,图层控制和显隐以及透明度,需要跟之前的交互一直,改动量太大的话不划算,所以直接看Mars3d的layer基类,把重写的image…

字符串函数、内存函数——补充

目录 前言 1、strchr函数 1-1 函数介绍 1-1-1 函数功能 1-1-2 函数原型 1-1-3 函数参数 1-1-4 所属库 1-1-5 函数返回值 1-2 函数简单使用 1-3 函数使用场景 1-4 函数的使用总结 1-4-1 注意事项 2、strrchr函数 2-1 函数介绍 2-1-1 函数功能 2-1-2 函数原型 2…

BACnet到OPC UA的楼宇自动化系统与生产执行系统(MES)整合

在智能制造的浪潮下,一家位于深圳的精密电子制造企业面临着前所未有的挑战:如何高效地将楼宇自动化系统与生产执行系统(MES)整合,实现能源管理与生产流程的精细化控制。这家企业的楼宇控制系统使用的是BACnet协议&…

.OpenNJet应用引擎实践——从 0-1 体验感受

目录 一. 🦁 写在前面二. 🦁 安装使用2.1 安装环境2.2 配置yum源2.3 安装软件包2.4 编译代码2.5 启动 三. 🦁 使用效果3.1 编辑配置文件3.2 编辑 HTML 代码 四. 🦁 使用感受 一. 🦁 写在前面 现在互联网体系越来越往云…

【Docker学习】docker run的端口映射-p和-P选项

docker run的端口映射选项分为-p(小写,全称--publish),-P(大写,全称--publish-all),之前认为只有改变容器发布给宿主机的默认端口号才会进行-p的设置,而不改变默认端口号…

MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65)

MATLAB 基于规则格网的点云抽稀方法(自定义实现)(65) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 海量点云的处理,需要提前进行抽稀预处理,相比MATLAB预先给出的抽稀方法,这里提供一种基于规则格网的自定义抽稀方法,步骤清晰,便于理解抽稀内涵, 主要涉及到使…

为什么你创业总是失败?2024普通人如何创业?2024创业赛道!2024创业新风口!2024创业方向!2024普通人的机会!

为什么你做项目老是不赚钱,是你不够努力吗?是你运气不好吗? 如果都不是!那一定是你的思维逻辑出了问题! 先想一想你以前做的项目,有没有哪个符合以下条件:对客户有价值、寻找客源成本在可接受…

华为eNSP综合实验-网络地址转换

实验完成之后,在AR1的g0/0/1接口抓包,查看地址转换 实现私网pc访问公网pc 实验命令展示 SW1: vlan batch 12 #创建vlan interface e0/0/1 #进入接口配置vlan端口 port link-type access port default vlan 12 q interface e0/0/2 #进入接口配置vlan端口 port link-type ac…

Linux高级学习(前置 在vmware安装centos7.4)

【小白入门 通俗易懂】2021韩顺平 一周学会Linux 此文章包含第006p-第p007的内容 操作 在安装好的vmware下进行安装 这里使用的是vmware15(win10下),win11可能无法使用15(有几率蓝屏),换成16就行了 用迅雷…

(二刷)代码随想录第1天|704. 二分查找 27. 移除元素

704. 二分查找 704. 二分查找 - 力扣(LeetCode) 代码随想录 (programmercarl.com) 手把手带你撕出正确的二分法 | 二分查找法 | 二分搜索法 | LeetCode:704. 二分查找_哔哩哔哩_bilibili 给定一个 n 个元素有序的(升序&#xff09…

微信小程序个人中心、我的界面(示例四)

微信小程序个人中心、我的界面,九宫格简单布局(示例四) 微信小程序个人中心、我的界面,超简洁的九宫格界面布局,代码粘贴即用。更多微信小程序界面示例,请进入我的主页哦! 1、js代码 Page({…

无意的一次学习,竟让我摆脱了Android控制?

由于鸿蒙的爆火,为了赶上时代先锋。到目前为止也研究过很长一段时间。作为一名Android的研发人员,免不了对其评头论足,指导文档如何写才算专业?页面如何绘制?页面如何跳转?有没有四大组件等等。 而Harmony…