Redis复制 (replica)

news2024/9/25 11:11:45

是什么

官网地址:Redis replication | Redis

其实就是主从复制,Master以写为主,Slave以读为主,当master数据变化的时候,自动将新的数据异步同步到其它slave数据库。

能干嘛

  • 读写分离
  • 容灾恢复
  • 数据备份
  • 水平扩容支撑高并发

如何使用

采用配置方式:配从(库)不配主(库)

权限细节:

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

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

基本操作命令

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

replicaof 主库IP 主库端口:一般写入进redis..conf配置文件内

slaveof 主库IP 主库端口:每次与masterl断开之后,都需要重新连接,除非你配置进redis.conf文件;在运行期间修改slave节点的信息,如果该数据库已经是某个主数据库的从数据库,那么会停止和原主数据库的同步关系转而和新的主数据库同步,重新拜码头

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

案例

架构说明

一个Master两个Slave:3台虚机,每台都安装redis

拷贝多个redis.conf文件:redis6379.conf、redis6380.conf、redis6381.conf

小口诀

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

三大命令:

        主从复制:replicaof  主库IP  主库端口、配从(库)不配主(库)

        改换门庭:slaveof  新主库IP  新主库端

        自立为王:slaveof no one

修改配置文件步骤

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,必须(从机需要配置,主机不用

完整配置:

主节点:redis6379.conf
        309 daemonize yes
        87  # bind127.0.0.1 -::1
        111 protected-mode no
        138 port 6379
        506 dir /myredis
        341 pidfile /var/run/redis_6379.pid
        354 logfile "/myredis/6379.log"
        1008 requirepass 111111
        482 dbfilename dump6379.rdb
启动:redis-server /myredis/redis6379.conf
连接:redis-cli -a 111111 -p 6379

从节点1:redis6380.conf
        309 daemonize yes
        87  # bind127.0.0.1 -::1
        111 protected-mode no
        138 port 6380
        506 dir /myredis
        341 pidfile /var/run/redis_6380.pid
        354 logfile "/myredis/6380.log"
        1008 requirepass 111111
        482 dbfilename dump6380.rdb
        528 replicaof 192.168.241.3 6379
        536 masterauth "111111"
启动:redis-server /myredis/redis6380.conf
连接:redis-cli -a 111111 -p 6380

从节点2:redis6381.conf
        309 daemonize yes
        87  # bind127.0.0.1 -::1
        111 protected-mode no
        138 port 6381
        506 dir /myredis
        341 pidfile /var/run/redis_6381.pid
        354 logfile "/myredis/6381.log"
        1008 requirepass 111111
        482 dbfilename dump6381.rdb
        528 replicaof 192.168.241.3 6379
        536 masterauth "111111"
启动:redis-server /myredis/redis6381.conf
连接:redis-cli -a 111111 -p 6381

常用三招

一主二仆

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

a、配置文件执行replicaof  主库IP  主库端口

b、配从(库)不配主(库)

配置从机6380

配置从机6381

c、先master后两台slave依次启动

d、主从关系查看

日志查看:

主机日志如下

备机日志如下

命令查看:info replication

 

 

问题演示:

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

2.从机切入点问题

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

master启动,写到k3,slave1跟着master同时启动,跟着写到k3,slave2写到k3后才启动,那之前的是否也可以复制?是的,首次一锅端,后续跟随,master写,slave跟

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

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

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

 

 

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

可以复制的。

 

 

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

结果:能。

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

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

b、3台master

 

c、预设的从机上执行命令:slaveof 主库IP 主库端口

 

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

结果:不在。

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

  • 命令,当次生效
  • 配置,持久稳定

薪火相传

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

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

命令:slaveof  新主库IP  新主库端口

反客为主

命令:slaveof no one

使当前数据库停止与其他数据库的同步,转成注数据库

复制原理和工作流程

slave启动,同步初请

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

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

首次连接,全量复制

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

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

心跳持续,保持通信

配置文件:repl-ping-replica-period 10

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

进入平稳,增量复制

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

从机下线,重连续传

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

复制的缺点

复制延时,信号衰减

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

master挂了如何办?

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

那每次都要人工干预?

是的,解决方案是加入哨兵。

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

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

相关文章

无涯教程-jQuery - load( url, data, callback)方法函数

load(url,data,callback)方法从服务器加载数据,并将返回的HTML放入匹配的元素中。 load( url, [data], [callback] ) - 语法 [selector].load( url, [data], [callback] ) 这是此方法使用的所有参数的描述- url - 包含请求发送到…

不需要PS也能生成淘宝我的订单页面截图

不知道大家有没有遇到这样的情况:在发微博、发朋友圈或者写博客的时候,想要分享购物心得,但却苦恼于找不到虚拟淘宝订单截图?别担心,今天我就来教大家一个轻松又快捷的方法——使用淘宝订单生成器。 无需PS&#xff0c…

uni-app踩坑记

打包h5如何配置域名: 在manifest.json中配置域名 配置完成后无论是测试环境还是正式环境都带上/mobile/,否则会报错404 如何引入调试工具erada: 在默认的index.html中直接引入erada,页面样式会整个错乱,解决方案就是引入官方…

Ueditor 百度强大富文本Springboot 项目集成使用(包含上传文件和上传图片的功能使用)简单易懂,举一反三

Ueditor 百度强大富文本Springboot 项目集成使用 首先如果大家的富文本中不考虑图片或者附件的情况下,只考虑纯文本且排版的情况下我们可以直接让前端的vue来继承UEditor就可以啦。但是要让前端将那几个上传图片和附件的哪些功能给阉割掉! 然后就是说如…

安装python需要多大内存,python下载安装包多大

大家好,小编来为大家解答以下问题,安装python需要多大内存,python安装占多大空间,现在让我们一起来看看吧! 1、pytorch包有多大 938.79MB。pytorch包有938.79MB,pytorch离线安装包是一个不错的学习资源&am…

【CMake保姆级教程】CMake图文安装教程

文章目录 一、CMake概况二、安装Ubuntu CMake三、简单的CMake实验如何使用CMake测试代码执行CMake 总结 一、CMake概况 CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建)&…

【Docker consul的容器服务更新与发现】

文章目录 一、Consul 的简介(1)什么是服务注册与发现(2)什么是consul 二、consul 部署1、consul服务器1. 建立 Consul 服务2. 查看集群信息3. 通过 http api 获取集群信息 2、registrator服务器1. 安装 Gliderlabs/Registrator2. …

AcWing 算法基础课二 数据结构 链表 栈 队列 并查集 哈希表

单链表. AcWing. 826.单链表 import java.util.Scanner; public class Main{static int[] e new int[100010];//结点i的值static int[] ne new int[100010];//结点i的next指针static int idx,head;//head是头结点,idx存当前已经用到了哪个点public static void i…

Cpp02 — 内联函数、auto关键字、范围for、nullptr

前言:本文章主要用于个人复习,追求简洁,感谢大家的参考、交流和搬运,后续可能会继续修改和完善。 因为是个人复习,会有部分压缩和省略。 一、内联函数 C语言为了减少小函数的栈帧开销,提供了宏函数&#x…

SpingBoot整合Swagger和Hibernate-Validate练习

需求:用SpingBootSwaggerHibernate-Validate集成一个demo,用Swagger查看Controller的接口文档。Swagger接口包括Controller的请求和返回,用Hibernate-Validate校验Controller的请求参数的合法性。目前只需要校验非空即可。 1.新建一个Springb…

python 将pdf文件转图片

有小伙伴问了怎么将 pdf文件转图片的问题,我百度了一波儿,搞了以下python代码给他封装成exe工具了。 中途打包踩了个坑,python进程池的问题,本地运行没啥问题,打包好的exe文件双击就会使电脑内存爆破卡死,…

IT行业有哪些工资高、又有前景的岗位?

“IT行业涵盖了广泛的职位和领域,其中一些职位包括软件工程师、系统管理员、数据库管理员、网络工程师、UI/UX设计师、移动应用开发者、项目经理、IT顾问和技术支持工程师等” ——高薪岗位 那么,岗位如此之多,如何选择学习方向呢&#xff1…

蓝牙耳机啥牌子好?经销商盘点线下热销蓝牙耳机排行榜

经营蓝牙耳机已经三年了,随着蓝牙耳机的普及,蓝牙耳机已成为人手必备,很多朋友在挑选时会咨询我的意见,不知道蓝牙耳机啥牌子好,为此我整理了店铺内热销蓝牙耳机排行榜,想知道实体店铺哪些蓝牙耳机品牌最受…

面向对象编程:深入理解内部类与抽象类的使用

文章目录 一、内部类使用:1.1 成员内部类:1.1.1 成员内部类的主要特点是: 1.2 局部内部类:1.2.1 局部内部类的主要特点是:1.2.2 局部内部类通常用于以下情况: 1.3 静态内部类:1.3.1 静态内部类的…

微服务01,初始,拥抱他,最后爱上他,mmm

俗话说乱花渐欲迷人眼,学习微服务应该从哪开始学呢 从这张表去学微服务 微服务全家桶:走进 Spring Cloud 的世界 了解 Spring Cloud 框架的功能定位,以及它和 Spring Boot 之 间的关系。除此之外,我还会详细讲解 Spring Cloud 的…

KMP算法的及其原理

KMP算法 首先 我们先了解一下 KMP算法的作用 str1 和str2 字符串 如果str1中包含str2 那么返回头位置 如果不包含返回-1 首先 我们先加入一个概念: 有一个next数组 next[i]的值为 str2 中 以i-1位置为结尾的字符串中 最长相同前缀后缀为多长(相同前缀后缀 不是对称 aba 中相…

数字化转型与百数低代码平台:创新商业模式的商机突破口

随着科技的不断进步和全球经济的快速发展,企业数字化转型已经成为当今商业领域的热门话题。 根据Gartner的《2023年度董事会调查》显示,数字化转型已然是当今企业商业战略的一大基石,中国有36%的企业将数字化转型作为企业最优先的业务。 这表…

windows环境下,安装elasticsearch

jdk ElasticSearch是基于lucence开发的,也就是运行需要java jdk支持。 我下载了 elasticsearch-8.9.0-windows-x86_64.zip,带了OpenJDK。 ElasticSearch下载 https://www.elastic.co/downloads/elasticsearch 安装ElasticSearch 下载安装包后解压 修…

WMS仓储管理系统的建设理念包括哪些内容

WMS仓储管理系统是物流供应链管理领域中的重要组成部分,主要用于仓储过程的计划、控制和管理。WMS仓储管理系统解决方案可以有效协调人、设备和仓库资源,提高仓储效率、降低成本、确保准确性,为企业的物流运输及整个生产活动提供有力保障。那…

综合案例(面向对象)

使用面向对象思想完成数据读取和处理基于面向对象思想重新认知第三方库使用(PyEcharts) 数据分析案例 某公司,有2份数据文件,现需要对其进行分析处理,计算每日的销售额并以柱状图表的形式进行展示。 数据内容 综合案…