第十七章《redis主从复制》

第十七章《redis主从复制》

redis主从复制:
1.配置:
master:修改:bind 0.0.0.0
想设置密码:requirepass
slave:
(1)修改配置文件:slaveof
(2)启动从节点server的时候:redis-server redis.conf –slaveof masterip masterport
(3)直接在客户端命令执行:slaveof masterip msterport
如果主节点设密码了:masterauth
2.主从复制原理:
主从第一-次连接进行全量复制,从节点发送复制请求给主节点,主节点受到请求进行rdb持久化
然后把rdb文件传送给从节点。从节点接收到rdb文件后清空旧数据,然后将rdb文件加载到内
存中。之后主节点数据的更新会同步到从节点。主从复制是异步的。

psync:当从节点由于故障断开和主节点的连接,如果每次恢复连接后对主节点进行全量复制会给主节点造成性能力和带宽浪费。使用psync可以实现部分复制:从节点在每次完成数据同步后都会保存一个数据的复制偏移量,然后从节点通过psync命令将定期将主节点的运行id和复制偏移量发送给主节点。主节点先验证运行id,根据复制偏移量来判断需要部分复制的数据,然后将这部分数据传送给从节点。
psync [runid] [offset]

runid:主节点每次启动都会生成一个16进制的id,从节点连接主节点后会保存这个runid
offset:当前从节点已复制的数据偏移量;

复制积压缓存区(环形队列)repl-backlog:主节点在内存当中维护的一个环形的队列,每次执行写命令后主节点都会将命令发送给他,从节点发送的offset在复制积压缓存区内,就把缓存区内的数据发送给从节点完成部分复制,复制积压缓存区的大小默认1M,我们通过设置repl-backlog-size可以调整他的大小,如果从节点的offset已经不在缓存区内,那就只能进行全量复制

master重启了,他的runid会发生变化,或发生从节点维护的runid和主节点不一致,所以此时也会进行全量复制

断开主从复制:slaveof命令不但可以建立复制,还可以在从节点执行slaveof no one 断开从节点的复制链接,断开后我们从节点上已经复制的数据不会丢失

slaveof命令还可以实现切换主节点。
slaveof 新主节点的ip 新主节点的port
实现流程:
1.断开与旧主的复制关系
2.与新主建立关系
3.删除从节点的所有数据
4.对新主节点进行复制

只读:建立主从复制关系后,从节点默认设置是只读:slave-read-only=yes,为了保证主从数据的一致性

传输延迟:repl-disable-tcp-nodelay 参数用来控制是否关闭tcp_nodelay,默认关闭;
(1)当关闭时,主节点产生的命令数据无论大小都会及时的发送给从节点,这样主从之间的延时会变小,但是增加了网络带宽的消耗,适用于主从主键的网络环境良好的场景,同机架或同机房
(2)开启时,主节点会合并较小的tcp数据包从而节省带宽,默认发送时间间隔取决于linux的内核,一般默认40毫秒,适用于主从网络环境复杂或带宽紧张的场景。

主从复制的结构:
(1)一主一从
(2)一主多从
(3)树状主从结构

心跳:
主从节点连接后,他们之间维护着长连接并彼此发送心跳命令;
client list:可以查看客户端信息
(1)主节点默认每10 秒给从发送ping命令,判断从节点的存活性和连接状态,可以通过
repl-ping-slave-period 10设置多少秒发送ping命令
(2)从节点在主线程每隔1秒发送replconf ack [offset]给主节点上报自身当前的复制偏移量

1.读写分离:
(1)复制数据延迟
(2)读到过期数据
(3)从节点故障
2.主从配置不一致:
maxmemory,hash-max-ziplist-entries等参数配置不一致
3.避免全量复制:配置自动故障转移方案;
4.避免复制风暴:
(1)大量的从节点连接一个主节点,容易出现复制风暴,对单节点的复制风暴
(2)单主机的复制风暴,多台主节点部署在同一服务器上。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101961.html原文链接:https://javaforall.net

(0)
上一篇 2021年5月29日 上午11:00
下一篇 2021年5月29日 下午12:00


相关推荐

  • linux(6)查看进程ps命令「建议收藏」

    linux(6)查看进程ps命令「建议收藏」ps命令Linuxps(英文全拼:processstatus)命令用于显示当前进程的状态,类似于windows的任务管理器查看所有进程ps-A显示所有进程信息,连同命令行ps-

    2022年7月28日
    12
  • dlsym用法_DLSS模式

    dlsym用法_DLSS模式dlsymdlsym,dlvsym-从一个动态链接库或者可执行文件中获取到符号地址。用法#include<dlfcn.h>void*dlsym(void*handle,constchar*symbol);#define_GNU_SOURCE#include<dlfcn.h>void*dlvsym(void*handle,char*symbol,char*version);Linkwith-ldl.详解函数dlsym()的第

    2025年8月9日
    6
  • 《Linux Device Drivers》第十章 中断处理——note

    《Linux Device Drivers》第十章 中断处理——note

    2022年2月2日
    38
  • C语言和JAVA的区别[通俗易懂]

    C语言和JAVA的区别[通俗易懂]java语言和c语言的区别:un公司推出的Java是面向对象程序设计语言,其适用于Internet应用的开发,称为网络时代重要的语言之一。Java可以用认为是C的衍生语言,与C在大量元以内成分保持相同,例如此法结构、表达式语句、运算符等与C基本一致:但Java更简洁,没有C中冗余以及容易引起异常的功能成分,并且增加了多线程、异常处理、网络编程等方面的支持功能。本文从多角度对Java与C进行对比分析,为C与Java语言的学习提高一些借鉴。1、调法结构C与Java的词法结构很相似,针对程

    2022年7月7日
    25
  • wince屏保时钟_下载机械时钟动态壁纸

    wince屏保时钟_下载机械时钟动态壁纸今天我们为大家分享一下最近某音非常火的电子时钟屏保,让你的电脑屏保动起来,而且随着时间流逝而变化(作为一个时间观念强的人,一定会看着屏保更加惜时如金),让你的电脑锁屏与众不同,瞬间黑科技感十足!今天的主角就是WordClock,Windows系统和Mac都有的!适用系统:Windows系统、Mac系统演示电脑:联想ThinkPadT440Windows10系统软件名称:W…

    2026年4月18日
    5
  • win10黑群晖安装教程_黑群晖7.0安装教程

    win10黑群晖安装教程_黑群晖7.0安装教程使用芯片无忧工具,查看U盘的和。使用,格式化U盘。使用镜像写入工具,把引导写入U盘。修改文件,可以使用工具把文件复制到桌面,通过修改好之后,拖进这个界面中。或者在电脑中,查看U盘,打开U盘中的文件直接修改。具体修改内容如下:,因为我的主板上有4个sata口,然后PCIE扩展了6个SATA口,所以这里写了46,分别对应主板的SATA数目和PCIE的SATA数目。,因为主板的4个SATA口分别为00、01、02、03,所以PCIE的SATA从04开始。也就是说,前面两个00代表主板上的SATA控制从00开始计数

    2025年6月14日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号