redis主从复制薪火相传

一.主从复制


        1、是什么                

                主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

        2、能干嘛                

                读写分离,性能扩展(主 写 从 读)

                容灾快速恢复

        3、 主从复制                

                一主二仆

                更改端口号

                6379

                6380 zh 6381 6382

                拷贝多个redis.conf文件include(写绝对路径)

                开启daemonize yes

                Pid文件名字pidfile

                指定端口port

                Log文件名字

                dump.rdb名字dbfilename

                Appendonly 改为no

                注意:不能设置密码

        创建文件

                移动到这个目录下

                

                修改这个文件

                

                redis6380.conf需要配置的东西

include /usr/gkf/redis-5.0.14/redis.conf
port 6380
daemonize yes
dir /usr/myredis
dbfilename dump6380.rdb
pidfile /var/run/redis_6380.pid
bind 0.0.0.0
protected-mode no

        
                启动命令 /usr/redis/bin/redis-server /usr/myredis/redis6380.conf

                链接成功  

                因为没有设置密码,可以直接链接

                

                其余里面的内容的信息是一样的,不过把6380替代对应的

                                

                启动三台redis服器

                /usr/java/redis/bin/redis-server /usr/java/myredis/redis6379.conf

                /usr/java/redis/bin/redis-server /usr/java/myredis/redis6380.conf

                /usr/java/redis/bin/redis-server /usr/java/myredis/redis6381.conf

                新开一个虚拟机连接6381和6382    

          

                redis_6381.conf

                include /usr/java/myredis/redis.conf

                pidfile /var/run/redis_6381.pid

                port 6381

                dbfilename dump6381.rdb

                查看三台服务器的运行情况

                连接客户端 :./redis-cli -p 6379

                查看运行 状态:info replication

                

                三台都是主机

                配置从机

                6379 主 80 81从

                slaveof

                成为某个实例的从服务器

                1.在6380和6381上执行: slaveof 127.0.0.1 6379

                 在80里面查看

                2.在主机上写,在从机上可以读取数据

                                                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

                3.主机挂掉,重启就行,一切如初

                从机宕机需要重新启动

                4.从机重启需重设:slaveof 127.0.0.1 6380

        ​​​​​​​        

        4、复制原理

                
                Slave启动成功连接到master后会发送一个sync命令
                Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
                全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
                增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
但是只要是重新连接master,一次完全同步(全量复制)将被自动执行


       5、 薪火相传        
                

                上一个Slave可以是下一个slave的Master,Slave同样可以接收其他 slaves的连接和同步请求,那么该slave作为了链条中下一个的master, 可以有效减轻master的写压力,去中心化降低风险。

                用 slaveof

                中途变更转向:会清除之前的数据,重新建立拷贝最新的

                风险是一旦某个slave宕机,后面的slave都没法备份

                主机挂了,从机还是从机,无法写数据了

                80 1

                81 2

                82 3

                反客为主
                

        当一个master宕机后,后面的slave可以立刻升为master,其后面的slave不用做任何修改。

                用 slaveof no one 将从机变为主机。

       6、 哨兵模式(sentinel)

                反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

                

                调整为一主二仆模式,6380带着6381、6382

                自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错

                80

                配置哨兵,填写内容

                sentinel monitor mymaster 192.168.81.33 6380 1

                其中mymaster为监控对象起的服务器名称, 1 为至少有多少个哨兵同意迁移的数量。

        ​​​​​​​        

                ​​​​​​​

                启动哨兵

                        /usr/local/bin/redis-sentinel /usr/myredis/sentinel.conf

                ​​​​​​​

                        宕机6380

                

                        当主机挂掉,从机选举中产生新的主机

                        (大概10秒左右可以看到哨兵窗口日志,切换了新的主机)

                        哪个从机会被选举为主机呢?根据优先级别:replica-priority

                        原主机重启后会变为从机。

                        宕机之后刚才写的sentinel.conf会自动生成一些东西

                        

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

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

相关文章

yolov5转onnx到ncnn

测试代码6.2 检测这一套都没啥说的主要在onnx转ncnn这步 python export.py --data data/xuehua.yaml --weights runs/train/exp4/weights/best.pt --trainpython -m onnxsim runs/train/exp4/weights/best.onnx runs\train\exp4\weights\best-sim.onnx(这步重要),如…

Python学习从0到1 day9 Python函数

苦难是花开的伏笔 ——24.1.25 函数 1.定义 函数:是组织好的,可重复使用的,用来实现特定功能的代码段 2.案例 在pycharm中完成一个案例需求:不使用内置函数len(),完成字符串长度的计算 #统计字…

伊恩·斯图尔特《改变世界的17个方程》薛定谔方程笔记

想法是等这学期学到薛定谔方程后再把整份完善下。 它告诉我们什么? 这个方程不是把物质作为粒子,而是作为波,并描述这样的波如何传播。 为什么重要? 薛定谔方程是量子力学的基础,它与广义相对论一起构成了当今最有效的…

NGINX如何实现rtmp推流服务

最近直播大火,直播推流软件遍地开花,那么用NGINX如何进行推流呢?下面我们就简单的介绍一下用NGINX的rtmp模块如何实现视频推流,我们主要从一下几点介绍: 推流拉流推流认证拉流认证 package mainimport ("fmt&qu…

Vue 3.0中Treeshaking特性(详细解析)

文章目录 一、是什么二、如何做Vue2 项目Vue3 项目 三、作用参考文献 一、是什么 Tree shaking 是一种通过清除多余代码方式来优化项目打包体积的技术,专业术语叫 Dead code elimination 简单来讲,就是在保持代码运行结果不变的前提下,去除…

day05-盒子模型

01-选择器 结构伪类选择器 基本使用 作用:根据元素的结构关系查找元素。 li:first-child {background-color: green; } :nth-child(公式) 提示:公式中的n取值从 0 开始。 伪元素选择器 作用:创建虚拟元素(伪元素)…

vue项目中如何使用SVG图标

IconFont使用的不足:图标添加、修改、删除以后在线链接需要更新离线资源需要重新下载项目代码需要同步更新。 在项目不断更新和迭代的过程中,图标的增减变化还没有稳定的情况下,开发人员的工作效率会明显下降。 那么有没有一个图标应用方式…

【C++】list讲解及模拟

目录 list的基本介绍 list模拟实现 一.创建节点 二.迭代器 1.模版参数 2.迭代器的实现: a. ! b. c. -- d. *指针 e.&引用 整体iterator (与const复用): 三.功能实现 1.模版参数 2.具体功能实现: 2.1 构造函数 2.2 begi…

【操作系统】实验九 写一个设备驱动程序

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…

6.【SpringBoot3】登录优化-redis

1. SpringBoot 集成 redis 示例 在之前实现的登录接口中,用户登录成功后会生成一个令牌响应给浏览器,之后浏览器访问其他接口时,都要携带该令牌,接受拦截器的检验,如果令牌有效就放行,允许访问后续接口&am…

uml时序图刻画多个线程的活动

使用box关键字圈入不同线程内的组件 使用loop关键字客刻画线程的定时活动 示例

SpringMVC-RESTFul

文章目录 RESTFul一、基础概念二、增删改查1.查询全部用户信息 (GET)2.根据id查询用户信息3.添加用户(POST)4.修改用户 (PUT)5.删除用户 (DELETE) RESTFul 一、基础概念 二、增删改…

GitHub 上传文件夹到远程仓库、再次上传修改文件、如何使用lfs上传大文件、github报错一些问题

按照大家的做法,把自己遇到的问题及解决方案写出来(注意:Error里面有些方法有时候我用可以成功,有时候我用也不能成功,写出来仅供参考,实在不行重头再clone,add,commit,p…

Qt程序设计-修改系统时间(Windows和Linux)

本文讲解Qt程序设计-修改系统时间(windows) 1、实例 创建项目,添加DateEdit和TimeEdit控件和按钮 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow>namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpubl…

C#,生成图片的指定尺寸缩略图的源代码

编程的时候经常用到图像的缩略图。 本文发布一个用于生成指定尺寸的缩略图的简单方法。 1 文本格式 private void button1_Click(object sender, EventArgs e) { CreateThumbnail("demo.jpg", "demo_thumb.jpg", 128, 128); } private void CreateTh…

社交媒体与新闻:Facebook在信息传播中的角色

社交媒体的崛起不仅改变了人们的日常交流方式&#xff0c;也对新闻传播产生了深远的影响。在众多社交媒体平台中&#xff0c;Facebook以其庞大的用户基础和强大的社交网络机制&#xff0c;成为信息传播的中流砥柱。本文将深入探讨Facebook在社交媒体与新闻传播的交汇点上扮演的…

xshell无法连接linux,查询本机ip时出现<NO-CARRIER,BROADCAST,MULTICAST,UP>

在用xshell连接虚拟机VMware中的linux时&#xff0c;发现昨天还能连通的&#xff0c;今天连接不了了 我寻思应该是网卡配置出问题了&#xff0c;就去终端ip addr试了一下&#xff0c;果然发现问题&#xff0c;ip 查看网卡ens33就发现出现ens33:<NO-CARRIER,BROADCAST,MULTI…

git安装步骤

安装环境&#xff1a;Windows10 64bit 下载 Git网址 &#xff1a;Git - Downloading Package 版本&#xff1a;Git-2.21.0-64-bit 第一步&#xff1a;双击下载后的Git-2.21.0-64-bit.exe&#xff0c;开始安装 安装开始 第二步&#xff1a;选择安装路径&#xff0c;点击[next]…

Linux基础指令大汇总

Linux的指令比较多&#xff0c;在学习的过程中要学会总结和归纳&#xff0c;同时结合实践多多使用&#xff0c;就像学数学一样&#xff0c;不是背过公式就等于掌握的&#xff0c;而是要知道在什么时候用&#xff0c;怎么用才是关键。 这篇文章会列举一系列常用的指令&#xff0…

基于Grafana+Prometheus搭建可视化监控系统实践

基本介绍 Grafana&#xff1a;一个监控仪表系统&#xff0c;可以根据提供的监控数据&#xff0c;生产可视化仪表盘&#xff0c;同时也具有告警通知功能。这里的监控数据来源&#xff0c;目前主要以Prometheus为主&#xff08;也支持其它数据源&#xff09;&#xff0c;每次展现…