1、主从复制原理

主从复制工作流程

  1. 从服务器连接主服务器,发送SYNC命令。
  2. 主服务器接收到SYNC命令后,开始执行bgsave命令生成RDB文件并使用缓冲区记录此后执行的所有命令
  3. 主服务器bgsave执行完成后,向所有服务器发送快照文件,并在发送期间继续记录被执行的写命令
  4. 从服务器接收到快照数据后丢弃所的有旧数据,载入收到以的快照
  5. 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令
  6. 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令(从服务器初始化完成)
  7. 主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令(从服务器初始化完成后的操作)

主从复制优缺点:

优点:

  1. 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
  2. 为了负载master的读操作压力,slave服务器可以为客户端提供只读操作的服务,写服务仍然必须由master来完成
  3. slave 同样可以接受其它slave的连接和同步请求,这样可以有效的分载master 的同步压力
  4. master是以非阻塞的方式为slave提供服务,所以master-slave同步期间,客户端仍然可以提交查询和修改请求。
  5. slave server同样是以非阻塞的方式未完成数据同步,在同步期间,如果有客服端提交查询请求,redis则返回同步之前的数据。

缺点:

  1. redis 不具备自动容错和恢复功能,主机和从机的宕机都会导致客户端部分读写请求的失败,需要等待机器重启或手动切换前端的IP才能恢复
  2. 主机宕机,宕机前有部分数据未能同步到从机,切换IP后还会引起数据不一致的问题降低了系统的可用性。
  3. redis较难支持在线扩容,在集群容量达到上限时在线扩容变得复杂。

2、主从搭建

主从复制的常用的几种方式

  1. 一主二仆 A(B、C) 一个Master两个Slave
  2. 薪火相传(去中心化)A - B - C ,B既是主节点(C的主节点),又是从节点(A的从节点)
  3. 反客为主(主节点down掉后,手动操作升级从节点为主节点)

1)一主二仆 A(B、C) 一个Master两个Slave

1、节点redis不需要修改配置

主节点服务器IP:192.168.244.128

2、改从节点配置

添加配置:slaveof 192.168.244.128 6379

从节点IP:192.168.244.130   192.168.244.131

3、分别重启主从服务器,验证

主服务器info replication:

显示有两个从节点,主节点set值 ,从节点可以get 得到

从服务器info replication:

2)薪火相传(去中心化)A - B – C

如上配置: 192.168.244.130 添加配置: slaveof 192.168.244.128 6379

192.168.244.131 添加配置: slaveof 192.168.244.130 6379

3)反客为主(一仆二主模式)

1、关闭主节点后从节点info replication:

此时从节点还是只读的

2、执行命令slaveof no one 升为主节点:

升为主节点后可读可写。

参照:https://www.cnblogs.com/51life/p/10233340.html

https://www.cnblogs.com/aflyun/p/8495561.html

redis(集群一)主从复制的更多相关文章

  1. 【Redis学习之八】Redis集群:主从复制

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 redis-2.8.18 Redis集群分类: 主从复制 R ...

  2. Redis 集群_主从复制_哨兵模型

    1 redis集群简介 1.1 集群的概念 所谓的集群,就是通过添加服务器的数量,提供相同的服务,从而让服务器达到一个稳定.高效的状态. 1.1.1 使用redis集群的必要性 问题:我们已经部署好了 ...

  3. redis(4)--redis集群之主从复制

    集群 先来简单了解下redis中提供的集群策略, 虽然redis有持久化功能能够保障redis服务器宕机也能恢复并且只有少量的数据损失,但是由于所有数据在一台服务器上,如果这台服务器出现硬盘故障,那就 ...

  4. Redis 集群的主从复制模型是怎样的?

    为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所 以集群使用了主从复制模型,每个节点都会有 N-1 个复制品.

  5. Redis集群搭建方案(Linux)

    Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合)和zset(有序 ...

  6. Redis集群教程(Redis cluster tutorial)

    本博文翻译自Redis官网:http://redis.io/topics/cluster-tutorial        本文档以温和的方式介绍Redis集群,不使用复杂的方式来理解分布式系统的概念. ...

  7. Redis集群管理

    1.简介 Redis在生产环境中一般是通过集群的方式进行运行,Redis集群包括主从复制集群和数据分片集群两种类型. *主从复制集群提供高可用性,而数据分片集群提供负载均衡. *数据分片集群中能实现主 ...

  8. Redis Cluster(Redis集群)的搭建和使用

    Reids集群准备知识: (1)Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据 ...

  9. 分布式缓存 Redis 集群搭建

    Redis 集群简介 Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户端 ...

  10. redis集群配置及python操作

    之前我们分析过喜马拉雅的爬取信息,使用分布式爬取,而且需要修改scrapy-redis的过滤算法为布隆过滤来减少redis内存占用,最后考虑这样还是不一定够,那么redis集群就是更好的一种选择方式了 ...

随机推荐

  1. 最小,独立,可分发的跨平台Web服务器

    最近,我一直在编写大量较小的wsgi应用程序,并希望找到一个可以分布式,预先配置为运行特定应用程序的Web服务器.我知道有些东西可以用于wsgi应用程序,例如twisted和cherrypy,但它们似 ...

  2. SpringBoot-技术专区-实战方案-应用监控线程池

    背景 废话不多说,做这个监控的背景很简单,我们的项目都是以spring boot框架为基础开发的,代码里所有的异步线程都是通过@Async标签标注的,并且标注的时候都是指定对应线程池的,如果不知@As ...

  3. java 自适应响应式 网站 源码 SSM 生成 静态化 手机 平板 PC 企业站源码

    前台: 支持四套模版, 可以在后台切换 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的html,所以访问 ...

  4. ng2-file-upload插件在ionic3中的使用方法

    本文主要说明在ionic3中使用ng2-file-upload插件,上传多种类型文件(图片.word.excel.ppt.mp4等)的使用方法. 1.html代码: <button ion-bu ...

  5. go语言从例子开始之Example26.通道选择器

    Go 的通道选择器 让你可以同时等待多个通道操作.Go 协程和通道以及选择器的结合是 Go 的一个强大特性. Example: package main import "time" ...

  6. Yum与RPM

    Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定的服务器自动下载 ...

  7. plt.imshow()

    import matplotlib.pyplot as plt plt.imshow(digits.images[-1], cmap = plt.cm.gray_r) .imshow() Plotti ...

  8. read(),readline() 和 readlines() 比较

    read(),readline() 和 readlines() 比较 共同点:均可接受一个变量用以限制每次读取的数据量,但通常不使用 区别: read() [即 fileObject().read( ...

  9. 【LeetCode 33】搜索旋转排序数组

    题目链接 [题解] 会发现旋转之后,假设旋转点是i 则0..i-1是递增有序的.然后i..len-1也是递增有序的. 且nums[i..len-1]<nums[0]. 而nums[1..i-1] ...

  10. idea 使用github

    [Toc] #一.首先下载github for window 客户端,或者git客户端 这里只演示gitHub客户端,安装git客户端的话,git.exe很容易找得到. 附上网址:https://de ...