redis主从复制

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: redis主从复制

概述

Redis有三种集群模式,分别是:主从模式、哨兵模式、Cluster模式

主从模式是三种模式中最简单的,在主从复制中分为主数据库(master)和从数据库(slave),若master出现宕机,需要手动配置slave转为master。

后来为了高可用提出来哨兵模式,可以选择出slave转为master,提升可用性,但不能动态扩充。

后来又有了cluster集群模式。

本文介绍主从模式,以及如何数据同步

主从复制

主从复制是数据同步方式,解决了单点故障的问题,但不能保证高可用(是高可用的基础)。主要用来实现 redis 数据的可靠性,防止主 redis 所在磁盘损坏,造成数据永久丢失。

主从之间采用异步复制的方式,以及采用读写分离的方式,主节点(master)可以进行读写操作,从节点(replica)一般是只读。也就是说,所有的数据修改只在主节点上进行,然后将最新的数据同步给节点,这样就使得主从服务器的数据是一致的。

命令redis-server --replicaof 127.0.0.1 7001

执行该命令后,当前服务器得redis-server就会成为127.0.0.1 7001的从数据库了,使用从数据库可以使得数据更加安全。从数据库具有只读属性,不能写。

注意:

1)主从复制无法提供高可用和数据保护能力,因为主节点发生故障时,需要手动进行故障转移。

2)从节点主动向主节点建立连接,从节点主动同步主节点的数据。

数据同步方式

全量数据同步
  1. 从数据库连接到主数据库
  2. 从数据库发送ping命令,主数据库回复pong命令
    发送ping主要是为了(相当于tcp的 keepalive 心跳包)检测主数据库是否有响应
  3. 从数据库发送一个同步命令,主数据库进行异步发送数据
    无论主数据采用aof还是rdb的持久化方式,在主从复制的时候都以rdb的数据格式进行复制
  4. 从数据库根据rdb调整内存后,发送给主数据库完成同步命令

增量数据同步

在从数据库连接着主数据库情况下,由于网络原因,某些数据出现主从不一致的情况,这时候可以容忍数据不一致的情况,通过设置环形缓冲区,将网络抖动时候的数据先写入环形缓冲区,从数据库会记录一个偏移值,在主数据库发送数据前,从数据库先把偏移值发送给主数据库,看偏移值是否在环形缓冲区中,然后再将环形缓冲区中偏移值往后的数据发送到从数据库中。

主从复制的实现

服务器runid

RUNID用于构建主从的关系。无论主库还是从库都有自己的 RUN ID , RUN ID 启动时自动产生, RUN ID 由 40 个随机的十六进制字符组成。

当从库对主库初次复制时,主库将自身的 RUN ID 传送给从库,从库会将 RUN ID 保存。 当从库断线重连主库时,从库将向主库发送之前保存的 RUN ID :

  • 从库 RUN ID 和主库 RUN ID 一致,说明从库断线前复制的就是当前的主库;主库尝试执行增量同步操作;
  • 若不一致,说明从库断线前复制的主库并不时当前的主库,则主库将对从库执行全量同步操作。
复制偏移量

主从都会维护一个复制偏移量:

  • 主库向从库发送 N 个字节的数据时,将自己的复制偏移量上加 N;
  • 从库接收到主库发送的 N 个字节数据时,将自己的复制偏移量加上 N。

通过比较主从偏移量得知主从之间数据是否一致;偏移量相同,则数据一致;偏移量不同,则数据不一致。

环形缓冲区

本质:固定长度先进先出队列;

存储内容:如下图;

当因某些原因(网络抖动或从库宕机)从库与主库断开连接,避免重新连接后开始全量同步,在主库设置了一个环形缓冲区;该缓冲区会在从库失联期间累计主库的写操作;当从库重连,会发送自身的复制偏移量到主库,主库会比较主从的复制偏移量

  • 若从库 offset 还在复制积压缓冲区中,则进行增量同步;
  • 否则,主库将对从库执行全量同步。

配置
# redis.conf
# 环形缓冲区的大小 为1mb
repl-backlog-size 1mb
# 如果所有从库断开连接 3600 秒后没有从库连接,则释放环形缓冲区
repl-backlog-ttl 3600

大小确定: disconnect_time * write_size_per_second

disconnect_time :从库断线后重连主库所需的平均时间(以秒为单位);

write_size_per_second :主库平均每秒产生的写命令数据量;

偏移量会出现环绕回去,变成0的情况吗?

  偏移量最大为2^64,就算一天增加1个亿,也要好几千年,不会存在这种问题。

相关实践学习
基于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服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
214 10
|
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测试
35 3
|
6月前
|
存储 监控 负载均衡
redis 集群 (主从复制 哨兵模式 cluster)
redis 集群 (主从复制 哨兵模式 cluster)
|
2月前
|
NoSQL 网络协议 Redis
Redis的主从复制和哨兵模式
本文详细介绍了Redis的主从复制配置、原理(包括全量复制和增量复制)以及如何搭建一主二从的Redis集群,同时还探讨了Redis哨兵模式的概念、配置文件、以及如何配置一主二从三哨兵的Redis哨兵模式,以实现高可用性。
|
3月前
|
消息中间件 存储 缓存
深入理解Redis集群主从复制原理
该文章主要探讨了Redis集群中的主从复制原理,包括为何需要主从复制、配置方法、复制流程以及一些高级特性。
深入理解Redis集群主从复制原理
|
4月前
|
NoSQL Redis
Redis 主从复制架构配置及原理
Redis 主从复制架构配置及原理
67 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.主从模式如何指
下一篇
无影云桌面