第十七章《redis主从复制》

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 第十七章《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)单主机的复制风暴,多台主节点部署在同一服务器上。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
6月前
|
存储 负载均衡 NoSQL
Redis之主从复制
【1月更文挑战第8天】主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(masterleader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
210 12
|
6月前
|
NoSQL 关系型数据库 MySQL
Redis高可用之主从复制架构(第一部分)
Redis高可用之主从复制架构(第一部分)
|
6月前
|
监控 NoSQL 容灾
【Redis】主从复制
【Redis】主从复制
|
4月前
|
存储 缓存 NoSQL
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
redis分布式锁、redisson、可重入、主从一致性、WatchDog、Redlock红锁、zookeeper;Redis集群、主从复制,全量同步、增量同步;哨兵,分片集群,Redis为什么这么快,I/O多路复用模型——用户空间和内核空间、阻塞IO、非阻塞IO、IO多路复用,Redis网络模型
Redis常见面试题(二):redis分布式锁、redisson、主从一致性、Redlock红锁;Redis集群、主从复制,哨兵模式,分片集群;Redis为什么这么快,I/O多路复用模型
|
1月前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
32 3
|
6月前
|
存储 监控 负载均衡
redis 集群 (主从复制 哨兵模式 cluster)
redis 集群 (主从复制 哨兵模式 cluster)
|
2月前
|
NoSQL 网络协议 Redis
Redis的主从复制和哨兵模式
本文详细介绍了Redis的主从复制配置、原理(包括全量复制和增量复制)以及如何搭建一主二从的Redis集群,同时还探讨了Redis哨兵模式的概念、配置文件、以及如何配置一主二从三哨兵的Redis哨兵模式,以实现高可用性。
|
3月前
|
消息中间件 存储 缓存
深入理解Redis集群主从复制原理
该文章主要探讨了Redis集群中的主从复制原理,包括为何需要主从复制、配置方法、复制流程以及一些高级特性。
深入理解Redis集群主从复制原理
|
4月前
|
NoSQL Redis
Redis 主从复制架构配置及原理
Redis 主从复制架构配置及原理
62 5
|
5月前
|
存储 NoSQL 网络协议
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指
主从复制,Could not connect to Redis at 127.0.0.1:6380: Connection refusednot connected> exit,1.主从模式如何指