Redis主从复制

1、什么是主从复制

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

  说明:

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

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

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

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

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

2、主从配置

  主redis配置

    无需特殊配置。

  从redis配置:

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




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

3、主从复制过程

(1)完整复制

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

  复制过程说明:

  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)部分复制

  部分复制说明:

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

时间: 2024-09-12 04:13:31

Redis主从复制的相关文章

【Redis】Redis 主从复制之一

前言   和关系型数据库一样,Redis也有自己的高可用属性,主从复制,相比而言 redis的主从复制的搭建过程更为简单.一 redis 主从复制的特点 1 同一个master可以拥有多个slaves. 2 master下的Slave还可以接受同一架构中其它slave的链接与同步请求,实现数据的级联复制,即master->slave->Sslave模式: 3 master以非阻塞的方式同步数据至slave,这将意味着master会继续处理一个或多个slave的读写请求: 4 slave端同步数

Redis主从复制问题和扩容问题的解决思路_Redis

一.解决主从复制问题 当使用Redis作为存储引擎的时候,并且使用Redis读写分离,从机作为读的情况,从机宕机或者和主机断开连接都需要重新连接主机,重新连接主机都会触发全量的主从复制,这时候主机会生成内存快照,主机依然可以对外提供服务,但是作为读的从机,就无法提供对外服务了,如果数据量大,恢复的时间会相当的长.为了解决Redis主从Copy的问题,有如下两个解决方案: 主动复制所谓主动复制,就是业务层双写多个Redis,避开Redis自带的主从复制.但是自己干同步,就会产生一致性问题,为了保证

Redis主从复制简单配置教程详解

主从复制 192.168.1.106 master机器 mkdir -p /data/redis cp /etc/redis/redis.conf /etc/redis/redis-6379.conf vim /etc/redis/redis-6379.conf daemonize yes pidfile /var/run/redis-6379.pid port 6379 logfile "6379.log" dbfilename "dump-6379.rdb" d

浅谈Redis主从复制工商资讯

作者:京东云平台资深研发工程师-张成远Redis是一个开源的,遵守BSD许可协议的key/value缓存系统,并由其高效的响应速度以及丰富的数据结构而闻名.Redis在京东的使用也是非常普遍的,包括很多关键业务上的使用,由于Redis官方集群还未发布,在使用Redis的过程中需要面对Redis的单点问题,京东采用的是一种比较通用的解决方案即由主从备份再加相应的主从切换(在一些场景下可能进行读写分离),使主Redis出现失效的时候可以快速的切换到从Redis上.但Redis目前存在的一个问题是主从

Redis主从复制和集群配置

1.Redis的复制功能是支持多个数据库之间的数据同步.一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库.2.通过redis的复制功能可以很好的实现数据库的读写分离,提高服务器的负载能力.主数据库主要进行写操作,而从数据库负责读操作.

06_NoSQL数据库之Redis数据库:Redis的高级应用之登录授权和主从复制

 Redis高级实用特征 安全性(登录授权和登录后使用auth授权) 设置客户端连接后进行任何其他指定前需要使用的密码. 警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒中进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解.   修改密码只需要在我们的配置文件中修改下面参数: #requirepass foobared Requirepassbeijing     (红色的就是指定的要配置的密码)   上面的一句表示的是设置连接的

《Redis官方文档》主从复制

原文链接       译文连接  译者:adeline   校对:方腾飞(重点地方标成了粗体,方便大家阅读) Redis主从复制的配置十分简单,它可以使从服务器是主服务器的完全拷贝.下面是关于Redis主从复制的几点重要内容: Redis使用异步复制.但从Redis 2.8开始,从服务器会周期性的应答从复制流中处理的数据量. 一个主服务器可以有多个从服务器. 从服务器也可以接受其他从服务器的连接.除了多个从服务器连接到一个主服务器之外,多个从服务器也可以连接到一个从服务器上,形成一个图状结构 R

《架构之路Redis系列》如何搭建Redis的主从复制

一.环境准备 1.redis-3.2.9 2.服务器三台(VMware下的unbutu)都装redis Master:192.168.247.133 Slave1:192.168.247.134 Slave2:192.168.247.135 二.环境搭建 配置主从复制的两种方式: (1).在redis.conf中设置slaveof,这种设置属于永久性的 slaveof <masterip> <masterport> (2).在redis-cli客户端中设置redis服务,这种属于暂

redis之(十四)redis的主从复制的原理

一:redis主从复制的原理,步骤.   第一步:复制初始化 --->从redis启动后,会根据配置,向主redis发送SYNC命令.2.8版本以后,发送PSYNC命令. --->主redis收到SYNC命令后,开始在后台保存快照文件(即RDB持久化的过程),并将保存快照期间接收到的命令缓存起来. --->当主redis完成快照后,主redis会将快照文件和缓存命令发送给从redis.复制初始化结束. --->当主redis的复制初始化结束后,主redis每当收到写命令就会异步将写