| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Redis高级——主从复制 -> 正文阅读 |
|
[大数据]Redis高级——主从复制 |
什么是主从复制在分布式系统中,一台 Redis 服务器的数据自动复制(同步)到其它的 Redis 服务器上,称为主从复制,其中前者称为主节点(Master),后者称为从节点(Slave),主节点负责写入数据、从节点负责读取数据 一般来说,数据流动是单向的,只能从主节点流向从节点 一个主节点可以对应多个从节点,一个从节点只能对应一个主节点 主从复制的作用读写分离主节点提供写服务,从节点提供读服务,将读写分开,提高服务器的负载能力 负载均衡根据需求的变化,可以改变从节点的数量,多个从节点分担数据读取任务,大大提高 Redis 服务器的并发量和数据吞吐量 故障恢复当主节点出现故障时,可以由从节点提供服务,实现快速的故障恢复 数据备份实现了数据的热备份,是持久化之外的另一种数据备份方式 高可用基石主从复制是构建哨兵模式和集群的基础 主从复制的工作流程建立连接
从节点客户端指令连接从节点客户端发送 slaveof 指令,连接指定的主节点
从节点配置启动参数连接从节点启动时,设置启动参数进行连接
从节点配置文件设置连接在从节点的配置文件中,增加如下配置进行连接
数据同步服务器运行ID每一台服务器每一次运行的身份识别码称为服务器运行ID(runid),由 40 位随机的 16 进制字符组成 复制积压缓冲区(replication backlog buffer)复制积压缓冲区是一个先进先出的队列,每次 master 向 slave 传播命令时,命令也存储到复制积压缓冲区中,当 master 与某个 slave 的发生连接中断,再次连接后可从复制积压缓冲区中同步尚未复制的命令 复制积压缓冲区由两部分组成:复制偏移量(offset)和字节值(用于存储命令对应的编码字符) 当入队元素的数量大于队列长度时,最先入队的元素会被强制出队,所以当 master 和 slave 的连接中断时间过长,导致复制积压缓冲区丢失了一些数据时,只能进行全量复制 通常复制积压缓冲区简称为复制缓冲区 复制偏移量参与复制的主从节点都会维护自身的复制偏移量 主节点在处理完写入命令后,会把命令的字节长度进行累加,存储在 info relication 中的?master_repl_offset?中 从节点每秒向主节点上报自身的复制偏移量,因此主节点也会保存从节点的复制偏移量 从节点在接收到主节点发送的命令后,对自身的偏移量进行相应的累加,存储在 info relication?中的 slave_repl_offset 指标中 通过对比主从节点的复制偏移量,来判断主从节点数据是否一致,以及根据复制偏移量的差异,来判断主从节点数据同步延迟大小 同步过程全量复制
增量复制(部分复制)
从 slave 发送 psync2 ? -1 指令开始,到 slave 收到 RDB 文件执行恢复数据任务,并保存传来的?runid 和 offset 的过程,称为全量复制 从 slave 发送 psync2 runid offset 指令开始,进行 runid 和 offset 的比对,并将复制缓冲区的数据从 master 发送到 slave ,slave 保存新的 offset 的过程,称为增量复制(部分复制) 命令传播在数据同步完成后,如果主节点再次收到写命令,该命令会自动传到各个从节点,保证各个从节点的数据同步,这个过程称作命令传播 心跳机制在命令传播阶段,master 和 slave 之间需要进行信息交换,使用心跳机制进行维护 master 心跳
slave 心跳
同步过程与数据同步阶段的增量复制类似,但无需比对 runid ,slave 向 master 发送?replconf ack offset
断开连接从节点客户端发送指令,断开与主节点的连接
授权访问
数据同步注意事项
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:23:59- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |