Redis主从复制

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介:

1、什么是主从复制

  Redis持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:


fd36c6cfc40adf5907b9d5016c3354b3d8c0e2c1


  说明:

  主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。

  主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。

  只有一个主redis,可以有多个从redis。

  主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求。

  一个redis可以即是主又是从,如下图:


b86a4678a82aa06a6c0d3880ecdb3a28a7552a60


2、主从配置

  redis配置

    无需特殊配置。

  从redis配置:

  修改从redis服务器上的redis.conf文件,添加slaveof 主redisip  主redis端口


6bd944248a3cf34f17441d0576c01d89f31d9eed


  上边的配置说明当前该从redis服务器所对应的主redis是192.168.101.3,端口是6379


3、主从复制过程

(1)完整复制

在redis2.8版本之前主从复制过程如下图:


f81d92e3754314cbbebb948f535cf878edfdcd49


  复制过程说明:

  1、  slave 服务启动,slave 会建立和master 的连接,发送sync 命令。

  2、master启动一个后台进程将数据库快照保存到RDB文件中

  注意:此时如果生成RDB文件过程中存在写数据操作会导致RDB文件和当前主redis数据不一致,所以此时master 主进程会开始收集写命令并缓存起来。

  3、master 就发送RDB文件给slave

  4、slave 将文件保存到磁盘上,然后加载到内存恢复

  5、master把缓存的命令转发给slave

  注意:后续master 收到的写命令都会通过开始建立的连接发送给slave

  当master slave 的连接断开时slave 可以自动重新建立连接。如果master 同时收到多个slave 发来的同步连接命令,只会启动一个进程来写数据库镜像,然后发送给所有slave

 

  完整复制的问题:

  在redis2.8之前从redis每次同步都会从主redis中复制全部的数据,如果从redis是新创建的从主redis中复制全部的数据这是没有问题的,但是,如果当从redis停止运行,再启动时可能只有少部分数据和主redis不同步,此时启动redis仍然会从主redis复制全部数据,这样的性能肯定没有只复制那一小部分不同步的数据高。


(2)部分复制


ef3e61258d5a2bb3c42c768d5305e57590c34d0a

  部分复制说明:

  从机连接主机后,会主动发起 PSYNC(部分同步)命令,从机会提供 master的runid(机器标识,随机生成的一个串) 和 offset(数据偏移量,如果offset主从不一致则说明数据不同步),主机验证 runid 和 offset 是否有效, runid 相当于主机身份验证码,用来验证从机上一次连接的主机,如果runid验证未通过则,则进行全同步,如果验证通过则说明曾经同步过,根据offset同步部分数据。



85bc9a06ff590e31caf90c218979a787a497bcc6

相关实践学习
基于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
目录
相关文章
|
3月前
|
存储 负载均衡 NoSQL
Redis之主从复制
【1月更文挑战第8天】主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(masterleader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave以读为主。 默认情况下,每台Redis服务器都是主节点; 且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。
179 3
|
3月前
|
NoSQL 关系型数据库 MySQL
Redis高可用之主从复制架构(第一部分)
Redis高可用之主从复制架构(第一部分)
|
4月前
|
监控 NoSQL 容灾
【Redis】主从复制
【Redis】主从复制
|
5月前
|
负载均衡 NoSQL Redis
【Redis 系列】redis 学习十,Redis 集群搭建和主从复制
【Redis 系列】redis 学习十,Redis 集群搭建和主从复制
|
18天前
|
监控 NoSQL Redis
redis主从复制
redis主从复制
|
4月前
|
监控 NoSQL Redis
Redis - 主从复制那些事与高可用sentinel
Redis - 主从复制那些事与高可用sentinel
38 0
|
1月前
|
存储 监控 NoSQL
Redis 架构深入:主从复制、哨兵到集群
大家好,我是小康,今天我们来聊下 Redis 的几种架构模式,包括主从复制、哨兵和集群模式。
Redis 架构深入:主从复制、哨兵到集群
|
1月前
|
负载均衡 NoSQL 容灾
|
3月前
|
NoSQL Linux 网络安全
解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~
解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~
|
3月前
|
NoSQL Java Redis
Redis的主从复制是什么?它的作用是什么?
Redis的主从复制是什么?它的作用是什么?
34 0

热门文章

最新文章