十三.redis主从复制

news2024/9/21 4:23:24
  1. 概念
    主从复制,指将一台redis服务器的数据,复制到其它的redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点。master以写为主,slave以读为主。

    默认情况下,每台redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

    主从复制的作用主要为:
    1)数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
    2)故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是服务的冗余
    3)负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写redis数据时应用连接主节点,读redis数据时应用·连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高redis服务器的并发;
    4)高可用基石:除了上述作用外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis高可用的基础。

    一般来说,要将redis运用于工程项目中,只使用一台redis服务器是不可取的:
    1)从结构上,单个redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
    2)从容量上,单个redis服务器内存容量有限,就算一台服务器内存容量为256G,也不能将所有内存用作redis存储内存,一般说,单台redis最大使用内存最好不超过20G。

    对于多读少写的场景,则可以使用一主对应多从的架构

  2. 配置主从关系
    1)配置从机配置文件
    在这里插入图片描述
    2)重启从机服务

    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11/bin# ps -ef|grep redis #查看reids服务进程
    root         817       1  0 21:43 ?        00:00:02 /usr/local/redis-6.2.11/bin/redis-server *:6379
    root        2452    2354  0 21:48 pts/0    00:00:00 vim redis6380.conf
    root        2518       1  0 21:56 ?        00:00:00 ./bin/redis-server *:6380
    root        2527    2258  0 21:57 pts/1    00:00:00 redis-cli
    root        2531    2354  0 22:02 pts/0    00:00:00 grep --color=auto redis
    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11/bin# kill -9 2518 #强制杀掉redis从节点进程
    
    
    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11/bin# vim /etc/redis/redis6381.conf 
    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11/bin# cd ../
    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11# ./bin/redis-server /etc/redis/redis6381.conf #重启从节点服务
    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11# cd ./bin/
    root@liumingyong-Lenovo-G40-70m:/usr/local/redis-6.2.11/bin# redis-cli -p 6381
    127.0.0.1:6381> info replication 
    NOAUTH Authentication required.
    127.0.0.1:6381> auth 123456
    OK
    127.0.0.1:6381> info replication #查看从节点服务信息
    # Replication
    role:slave
    master_host:192.168.31.666 #直接点ip
    master_port:6379 #主节点端口
    master_link_status:up
    master_last_io_seconds_ago:8
    master_sync_in_progress:0
    slave_read_repl_offset:378
    slave_repl_offset:378
    slave_priority:100
    slave_read_only:1
    replica_announced:1
    connected_slaves:0
    master_failover_state:no-failover
    master_replid:1d094a3ce3d13a8ca0960eeacf5429a91abb8d46
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:378
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:295
    repl_backlog_histlen:84
    

    3)查看主节点从节点间关系

    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2 #从节点数量为2
    slave0:ip=192.168.31.116,port=6380,state=online,offset=392,lag=1
    slave1:ip=192.168.31.116,port=6381,state=online,offset=392,lag=1
    master_failover_state:no-failover
    master_replid:1d094a3ce3d13a8ca0960eeacf5429a91abb8d46
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:392
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:392
    
    

    4)主从复制验证
    主节点可读可写,从节点只能读不可写。主节点中所有信息和数据,都会自动被从节点保存。
    主节点读写:
    在这里插入图片描述
    从节点读:
    在这里插入图片描述
    当主节点断开(宕机),从节点依旧是连接到主节点的,但此时无法进行写操作。当主节点恢复后,从节点仍然能够获取到主节点的信息。

    5)主从复制原理
    Slave启动成功连接到master后会发送一个sync同步命令,master接到命令,启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,并完成一次完全同步。

    全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。

    增量复制:master继续将新的所有收集到的修改命令依次传给slave,完成同步。

    但是只要是重新连接master,一次完全同步(全量复制)将被自动执行
    6)在主节点断掉前提下,用命令设置当前从节点为新主节点
    如果主节点断开了连接,可以使用slaveof no one让自己变成主节点,其它的节点就可以手动连接到最新的这个主节点。如果最开始的主节点恢复了,它默认是主节点但和当前的主从节点没有关系(仅单纯的一个默认主节点而已)

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

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

相关文章

小研究 - 面向 Spring 的热点代码在线部署方法研究(三)

随着Spring生态不断发展,越来越先进的部署方式降低了部署的复杂度,提高了不同环境下的部署效率,但是在预生产环境下,对频繁改动的热点代码,其部署效率不是很理想,一些简单的代码修改就会引发对所有依赖服务的重新编译部署,给项目部署、运维以及测试带来很多预期之外的影响。在线…

设计模式再探——代理模式

目录 一、背景介绍二、思路&方案三、过程1.代理模式简介2.代理模式的类图3.代理模式代码4.代理模式还可以优化的地方5.代理模式的项目实战,优化后(只加了泛型方式,使用CGLIB的代理) 四、总结五、升华 一、背景介绍 最近在做产品过程中对于日志的统一…

【Git】分支管理之创建、切换、合并、删除分支以及冲突处理

目录 一、理解分支 二、创建、切换、合并分支 三、删除分支 四、冲突处理 五、合并模式 六、合并策略 七、Bug分支处理 八、强制删除分支 一、理解分支 master其实就是一个指针 ,他指向的是主分支最近一次commit。我们可以创建新的分支,在新的分…

antv x6将节点拖动到两连线的节点中,自动插入

1、找到节点相交的边 /*** * 将节点拖入两节点之间自动插入【找相交的边】* date 2023-07-29*/export const findIntersectsEdge (graph, node) > {const edges graph.getEdges();const bbox node.getBBox();const lines [bbox.leftLine, bbox.rightLine, bbox.topLine…

《零基础入门学习Python》第073讲:GUI的终极选择:Tkinter10

我们不难发现,几乎每一个应用程序都有一些相同的地方,比如说:标题栏、状态栏、边框、滚动条、工作区。还有的就是 菜单。 传统的菜单有大家熟悉的 File,Edit,Help等,点开之后,是下拉菜单&#…

点云可视化工具2

文章目录 1. 序2. 开发环境2.1 QT PCL 3. 程序3.1 新建项目3.2 修改.pro文件3.2.1 添加头文件目录3.2.2 添加依赖的库文件 3.3 软件界面3.3.1 ui文件3.3.2 按钮图标3.3.3 其他界面设置 3.4 点云处理3.4.1 点云读取显示3.4.2 上/下一张显示点云3.4.3 状态栏显示点云信息3.4.5 线…

0基础五分钟学会使用shardingJDBC实现分表 及测试

1.引入相关依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>4.1.1</version> </dependency> 2.添加配置 不懂的地方自己看注释 主…

vue基础-虚拟dom

vue基础-虚拟dom 1、真实dom目标2、虚拟dom目标 1、真实dom目标 在真实的document对象上&#xff0c;渲染到浏览器上显示的标签。 2、虚拟dom目标 本质是保存节点信息、属性和内容的一个JS对象 更新会监听变化的部分 给真实的DOM打补丁

SpringBoot多环境开发-配置文件

在Spring Boot中进行多环境开发时&#xff0c;你可以使用配置文件来定义每个环境的属性。Spring Boot提供了一种方便的方式来管理和加载不同环境的配置文件。 以下是一些常见的配置文件命名约定&#xff1a; application.properties: 默认的配置文件&#xff0c;适用于所有环…

Unity 性能优化五:渲染模块压力

CPU压力 Batching 在GPU渲染前&#xff0c;CPU会把数据按batch发送给GPU&#xff0c;每发送一次&#xff0c;都是一个drawcall&#xff0c;GPU在渲染每个batch的时候&#xff0c;会切换渲染状态&#xff0c;这里的渲染状态指的是&#xff1a;影响对象在屏幕上的外观的渲染属性…

【公益】Q学友联合福田人力资源局开展“侨香社区促就业 技能培训强本领”

落实《“十四五”就业促进规划》文件精神&#xff0c;进一步提高就业劳动者就业技能水平&#xff0c;提高居民就业率&#xff0c;侨香社区党委坚持以党建为引领&#xff0c;整合多方资源&#xff0c;深入开展“我为群众办实事”&#xff0c;切合群众实际、满足群众需求&#xf…

Huggingface基本使用

目录 0.install 1.tokenizer 2.datasets 3.metrics 0.install !pip install transformers !pip install datasets 1.tokenizer from transformers import BertTokenizer#加载预训练字典和分词方法 tokenizer BertTokenizer.from_pretrained(pretrained_model_name_or…

力扣 509. 斐波那契数

题目来源&#xff1a;https://leetcode.cn/problems/fibonacci-number/description/ C题解1&#xff1a;根据题意&#xff0c;直接用递归函数。 class Solution { public:int fib(int n) {if(n 0) return 0;else if(n 1) return 1;else return(fib(n-1) fib(n-2));} }; C题…

【物联网无线通信技术】UWB定位从理论到实现(DW1000)

超宽带&#xff08;UWB&#xff09;是一种基于IEEE 802.15.4a和802.15.4z标准的无线电技术&#xff0c;可以非常精确地测量无线电信号的飞行时间&#xff0c;从而实现厘米级精度的距离/位置测量。UWB技术除了提供定位功能外&#xff0c;它本身是一种通信技术&#xff0c;其提供…

Java在线OJ项目(三)、前后端交互API模块

Java在线OJ项目&#xff08;三&#xff09;、前后端交互API模块 1. 客户端向服务器请求所有题目 或者 单个题目前端获取所有题目获取一个题目 后端 2. 后端读取前端提交的代码&#xff0c;进行编译运行&#xff0c;返回结果前端提交代码后端处理 1. 客户端向服务器请求所有题目…

【程序设计】一文讲解程序设计原则SOLDI

前言 设计原则&#xff0c;是指导我们如何设计出低耦合、高内聚的代码&#xff0c;让代码能够更好的应对变化&#xff0c;从而降本提效。 设计原则的关键&#xff0c;是从『使用方的角度』看『提供方』的设计&#xff0c;一句话概括就是&#xff1a;请不要要我知道太多&#…

VBA技术资料MF36:VBA_在Excel中排序

【分享成果&#xff0c;随喜正能量】一个人的气质&#xff0c;并不在容颜和身材&#xff0c;而是所经历过的往事&#xff0c;是内在留下的印迹&#xff0c;令人深沉而安谧。所以&#xff0c;优雅是一种阅历的凝聚&#xff1b;淡然是一段人生的沉淀。时间会让一颗灵魂&#xff0…

IO流(2)-缓冲流

1. 缓冲流的简单介绍 我们上贴说到了 FileInputStream&#xff0c;FileOutputStream&#xff0c;FileReader&#xff0c;FileWriter。 其实这四个流&#xff0c;我们通常把它叫做原始流&#xff0c;它们是比较偏底层的&#xff1b;而今天我们要说的四个缓冲流&#xff0c;如…

自己创建的类,其他类中使用错误

说明&#xff1a;自己创建的类&#xff0c;在其他类中创建&#xff0c;报下面的错误&#xff08;Cannot resolve sysmbol ‘Redishandler’&#xff09;&#xff1b; 解决&#xff1a;看下是不是漏掉了包名 加上包名&#xff0c;问题解决&#xff1b;

第9届Python编程挑战赛初中组初赛真题剖析-2023年全国青少年信息素养大赛

[导读]&#xff1a;超平老师计划推出《全国青少年信息素养大赛Python编程真题解析》50讲&#xff0c;这是超平老师解读Python编程挑战赛系列的第13讲。 全国青少年信息素养大赛&#xff08;原全国青少年电子信息智能创新大赛&#xff09;是“世界机器人大会青少年机器人设计与…