Redis 复制(replica)

1. 是什么

1.1 官网地址  https://redis.io/docs/management/replication/ 

1.2 一句话

1. 就是主从复制,master以写为主,slave以读为主

2. 当master数据变化的时候,自动将新的数据异步同步到其它slave数据库

2. 能干嘛

1. 读写分离

2. 容灾恢复

3. 数据备份

4. 水平扩容支撑高并发

3. 怎么玩

3.1 配从(库)不配主(库)

3.2 权限细节

1. master如果配置了requirepass参数,:需要密码登陆

2. 那么slave就要配置masterauth来设置校验密码否则的话master会拒绝slave的访问请求

3.3 基本操作命令

1. info replication

可以查看复制节点的主从关系和配置信息

2 replicaof 主库IP 主库端口

一般写入进redis.conf配置文件内
 

3. slaveof 主库IP 主库端

每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件

在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数据库那么会停止和原主数据库的同步关系转而和新的主数据库同步,重新拜码头

4. slaveof no one

使当前数据库停止与其他数据库的同步,转成主数据库,自立为王

4. 案例演示

4.1 架构说明

4.1.1 一个master两个slave

4.1.2 拷贝多个redis.conf文件

redis6379.conf

redis6380.conf

redis6381.conf

4.2 小口诀

4.2.1 三边网络相互ping通且注意防火墙配置

4.2.2 三大命令

1. 主从复制

replicaof 主库IP 主库端
配从(库)不配主(库)


2. 改换门庭
slaveof 新主库IP 新主库端门


3. 自立为王
slaveof no one

4.3 修改配置文件细节操作,以 redis6379.conf为例

1.开启daemonize yes

2.注释掉bind 127.0.0.1 

3.protected-mode no 

4.指定端口 

5.指定当前工作目录,dir

6.pid文件名字,pidfile

7.log文件名字,logfile 

8.requirepass

9.dump.rdb名字

10.aof文件,appendfilename

11.从机访问主机的通行密码masterauth,必须 ,  从机需要配置,主机不用

4.4 常用3招

4.4.1 一主二仆

方案1: 配置文件固定写死

1. 配置文件执行

replicaof 主库IP 主库端口
2. 配从(库)不配主(库)

配置从机6380

配置从机6381


3. 先master后两台slave依次启动 

4. 主从关系查看
~ 日志

主机日志


备机日志


~ 命令
info replication命令查看

主从问题演示

1.从机可以执行写命令吗? 


2.从机切入点问题 

slave是从头开始复制还是从切入点开始复制?

master启动,写到k3

slave1跟着master同时启动,跟着写到k3

slave2写到k3后才启动,那之前的是否也可以复制?

Y,首次一锅端,后续跟随,master写,slave跟

3.主机shutdown后,从机会上位吗? 

主机shutdown后情况如何?从机是上位还是原地待命   

从机不动,原地待命,从机数据可以正常使用;等待主机重启动归来

4.主机shutdown后,重启后主从关系还在吗? 从机还能否顺利复制?


5.某台从机down后,master继续,从机重启后它能跟上大部队吗?

方案2: 命令操作手动指定

1. 从机停机去掉配置文件中的配置项3台目前都是主机状态,各不从属


2. 3台master 目


3. 预设的从机上执行命令
~ slaveof 主库IP 主库端
~ 效果 


4. 用命令使用的话,2台从机重启后,关系还在吗?

配置 VS 命令的区别,当堂试验讲解

配置,持久稳定

命令,当次生效

4.4.2 薪火相传

1. Aslave可以是下个slave的master,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master可以有效减轻主master的写压力

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

3. slaveof 新主库IP 新主库端口

4.4.3 反客为主

SLAVEOF no one 使当前数据库停止与其他数据库的同步,转成主数据库

5. 复制原理和工作流程

5.1 slave启动,同步初请

5.1.1 slave启动成功连接到master后会发送一个sync命令

5.1.2 slave首次全新连接master,一次完全同步 (全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除

5.2 首次连接,全量复制

5.2.1 master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后master将rdb快照文件和所有缓存的命令发送到所有slave,以完成一次完全同步

5.2.2 而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化

5.3 心跳持续,保持通信  

repl-ping-replica-period 10

master发出PING包的周期,默认是10

 

5.4 进入平稳,增量复制

Master继续将新的所有收集到的修改命令自动依次传给slave,完成同步

5.5 从机下线,重连续传

master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有-个masterIdoffset是保存在backlog中的。Master只会把已经复制的offset后面的数据复制给Slave,类似断点续传

6. 复制的缺点

6.1 复制延时,信号衰减 

由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。

6.2 master挂了如何办?

默认情况下,不会在slave节点中自动重选一个master

那每次都要人工干预?

无人值守安装变成刚需

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

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

相关文章

Ubuntu系统下配置 Qt Creator 输入中文、配置软件源的服务器地址、修改Ubuntu系统时间

上篇介绍了Ubuntu系统下搭建QtCreator开发环境。我们可以发现安装好的QtCreator不能输入中文,也没有中文输入法供选择,这里需要进行设置。 文章目录 1. 配置软件源的服务器地址2. 先配置Ubuntu系统语言,设置为中文3. 安装Fcitx插件&#xff…

学习笔记-ThreadLocal

ThreadLocal 什么是ThreadLocal? ThreadLocal 是线程本地变量类,在多线程并行执行过程中,将变量存储在ThreadLocal中,每个线程中都有独立的变量,因此不会出现线程安全问题。 应用举例 解决线程安全问题:例…

Maven的profiles多环境配置

一个项目通常都会有多个不同的运行环境,例如开发环境,测试环境、生产环境等。而不同环境的构建过程很可能是不同的,例如数据源配置、插件、以及依赖的版本等。每次将项目部署到不同的环境时,都需要修改相应的配置,这样…

<Linux>《SHELL脚本在crontab环境下执行失败问题处理》>> 探索SHELL运行模式和加载环境变量【实践+实验】

《SHELL脚本在crontab环境下执行失败问题处理》>> 探索SHELL运行模式和加载环境变量【实践实验】 1 现象描述2 分析3 解决方法4 深层研究4.1 shell4.2 shell脚本的环境变量4.3 shell脚本四种执行方法4.4 source 、.、./、bash 的区别4.5 shell常用的一些参数4.6 shell常见…

【Git】在idea中多分支开发如何——合并分支、处理冲突

博主简介:22级计算机科学与技术本科生一枚🌸博主主页:是瑶瑶子啦每日一言🌼: “人间总有一两风,填我十万八千梦” 目录 一、背景二、具体操作 一、背景 我当前开发的分支——hfy我想将subject分支的最新代码拉取&…

PID 算法

1.1 概述 比例(Proportion)积分(Integral)微分(Differential)控制器(PID控制器或三项控制器)是一种采用反馈的控制回路机制,广泛应用于工业控制系统和需要连续调制控制的…

说说Flink on yarn的启动流程

分析&回答 核心流程 FlinkYarnSessionCli 启动的过程中首先会检查Yarn上有没有足够的资源去启动所需要的container,如果有,则上传一些flink的jar和配置文件到HDFS,这里主要是启动AM进程和TaskManager进程的相关依赖jar包和配置文件。接着…

基于JAVAEE技术的ssm校园车辆管理系统源码和论文

基于JAVAEE技术的ssm校园车辆管理系统源码和论文105 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 1.选题背景和意义 背景: 随着第二次工业革命后,内燃机的发明与完善,解…

有时间窗车辆路径问题(vehicle routing problems with time windows,VRPTW)学习实践与base案例代码开发

有时间窗车辆路径问题(Vehicle Routing Problems with Time Windows,VRPTW)是一类著名的组合优化问题,涉及在有限时间窗口约束下,有效地安排多个车辆的路径,以满足客户需求。 在VRPTW中,假设有…

Flink CDC学习笔记

第一章 CDC简介 1.1 什么是CDC ​ CDC (Change Data Capture 变更数据获取)的简称。核心思想就是,检测并获取数据库的变动(增删查改),将这些变更按发生的顺序记录下来,写入到消息中间件以供其它服务进行订…

WordPress主题Zing V2.2.1/模块化WordPress响应式通用企业商城主题

WordPress主题Zing V2.2.1,模块化WordPress响应式通用企业商城主题。 功能介绍 百度熊掌号文章实时推送、原创保护 多设备支持自适应布局,支持电脑、Pad、手机以及各种浏览器 SEO优化首页、文章、页面、分类均支持自定义标题、关键字和描述 速度优化…

【跟小嘉学 Rust 编程】二十三、Cargo 使用指南

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…