一、官网解释

redis支持简单且易用的主从复制 ( master-slave replication )功能,改功能可以让服务器 ( slave server ) 成为主服务器 ( master server )的精准复制品。

二、好处

读写分离
容灾恢复

三、配置文件的修改

1. 拷贝多个redis.conf
2. 开启 daemonize yes
3. pid文件的名字
4. 指定端口
5. log文件的名字
6. dump.rdb名字

四、用法

a.一主二仆

假设有三台机器redis6379,redis6380,redis6381,连接三台客户端,起始状态,三台机器用过info replication命令可知都是master
1.配从不配主
从库配置(redis6380,redis6380):slaveof 主库IP 主库端口从机器
slaveof 127.0.0.1 6379 问题:
1 切入点问题?slave1、slave2是从头开始复制还是从切入点开始复制?比如从k4进来,那之前的123是否也可以复制 答:是,主库有的数据,从库都有 2 从机是否可以写?set可否? 答:否(读写分离) 3 主机shutdown后情况如何?从机是上位还是原地待命 答:从机依然会slave ,原地等待主机复原 4 主机又回来了后,主机新增记录,从机还能否顺利复制? 答:可以 5 其中一台从机down后情况如何?依照原有它能跟上大部队吗? 答:不能(从机器down后,重启状态是master)

b.薪火相传

上一个slave可以是下一个slave的master,slave 同样可以接受其他slaves的连接和同步请求,那么该slave作为链条中下一个的master,可以有效的减轻master的写压力
1.redis6380机器执行命令:slaveof 127.0.0.1 6379
2.redis6381机器执行命令:slaveof 127.0.0.1 6380

c.反客为主

通过手工执行命令:
slaveof no one
是从机器停止与其他主机器同步,转变成master

五、复制原理

①slave启动后成功的连接到master后会发送一个sync命令
②master接到命令启动后台的存盘进程,同时收集所有的接收到的用于需改数据的命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次同步
③全量复制:slave服务在接收到数据后,将其存盘并加载到内存中。
④增量复制:master继续将新的所有收集到的修改命令一次传给slave,完成同步

六、哨兵模式 ( sentinel ) 

a.解释

反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库

b.用法

1.调整结构,redis6379(主)带着 redis6380(从)、redis6381(从)
2.自定义的/myredis目录下建立sentinel.conf文件,名字绝对不能错
3.在sentinel.conf下写入一下内容:
sentinel monitor 被监控数据库名字 (自己起名字) 127.0.0.1 6379
示例: snetinel monitor host6379 127.0.0.1 6379 1
上面的最后一个数字 1 ,表示主机挂掉后salve投票看让谁接替成为主机,得票数多的成为主机 主机
4.启动哨兵:redis-sentinel /myredis/sentinel.conf

c.缺点

由于所有的写操作都是先在master上操作的,然后同步更新到slave上,所以从master同步到slave机器有一定的延迟,当系统很繁忙时,坚持问题就会更加严重,slave机器数量的增加会使这个问题更加严重

 

关注我的公众号,精彩内容不能错过

 

redis复制的更多相关文章

  1. Redis 复制、Sentinel的搭建和原理说明

    背景: Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端) ...

  2. Redis复制与可扩展集群搭建

    抄自:http://www.infoq.com/cn/articles/tq-redis-copy-build-scalable-cluster 讨论了Redis的常用数据类型与存储机制,本文会讨论一 ...

  3. (转)Redis复制与可扩展集群搭建

    讨论了Redis的常用数据类型与存储机制,本文会讨论一下Redis的复制功能以及Redis复制机制本身的优缺点以及集群搭建问题. Redis复制流程概述 Redis的复制功能是完全建立在之前我们讨论过 ...

  4. redis复制原理和应用

    1.前言 说到分布式高可用,必然少不了复制,一来是为了做个冗余备份防止数据丢失,二来还可以达到分流来提高性能的目的.基本架构: 下面用M表示Master(主服务器),S表示Slave(从服务器),话不 ...

  5. 6. Redis复制

    6. Redis复制6.1 配置6.1.1 建立复制6.1.2 断开复制6.1.3 安全性6.1.4 只读6.1.5 传输延迟6.2 拓扑6.3 原理6.3.1 复制过程6.3.2 数据同步6.3.3 ...

  6. redis系列--主从复制以及redis复制演进

    一.前言 在之前的文章已经详细介绍了redis入门基础已经持久化相关内容包括redis4.0所提供的混合持久化. 通过持久化功能,Redis保证了即使在服务器宕机情况下数据的丢失非常少.但是如果这台服 ...

  7. Redis复制与可扩展集群搭建【转】

    本文会讨论一下Redis的复制功能以及Redis复制机制本身的优缺点以及集群搭建问题. Redis复制流程概述 Redis的复制功能是完全建立在之前我们讨论过的基于内存快照的持久化策略基础上的,也就是 ...

  8. 深入理解redis复制原理

    原文:深入理解redis复制原理 1.复制过程 2.数据间的同步 3.全量复制 4.部分复制 5.心跳 6.异步复制 1.复制过程 从节点执行 slaveof 命令. 从节点只是保存了 slaveof ...

  9. 搞懂Redis复制原理

    前言 与大多数db一样,Redis也提供了复制机制,以满足故障恢复和负载均衡等需求.复制也是Redis高可用的基础,哨兵和集群都是建立在复制基础上实现高可用的.复制不仅提高了整个系统的容错能力,还可以 ...

  10. Redis复制实现原理

    摘要 我的前一篇文章<Redis 复制原理及特性>已经介绍了Redis复制相关特性,这篇文章主要在理解Redis复制相关源码的基础之上介绍Redis复制的实现原理. Redis复制实现原理 ...

随机推荐

  1. Redis-02.数据类型

    Redis中所有数据都是以key-value存储的,value支持的数据类型包括string.hash.list.set.sorted_set 数据类型 string 是redis最基本的类型,一个k ...

  2. Spark机器学习解析下集

    上次我们讲过<Spark机器学习(上)>,本文是Spark机器学习的下部分,请点击回顾上部分,再更好地理解本文. 1.机器学习的常见算法 常见的机器学习算法有:l   构造条件概率:回归分 ...

  3. 吴恩达机器学习笔记46-K-均值算法(K-Means Algorithm)

    K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据聚类成不同的组. K-均值是一个迭代算法,假设我们想要将数据聚类成n 个组,其方法为: 首先选择

  4. C++ Opencv createTrackbar()创建滑动条实现对比度、亮度调节及注意事项

    一.对比度.亮度概念普及 1.1对比度 对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,差异范围越大代表对比越大,差异范围越小代表对比越小.对比度对视觉效果的影响非常关键,一般 ...

  5. Day8:html和css

    Day8:html和css 显示和隐藏: display: none 为 无,隐藏元素 display: block 为 显示元素 转换为块级元素 visibility: visible 显示 vis ...

  6. 嘿!我用python帮我干这些事

    python 无疑是当下火上天的语言,但是我们又不拿来工作,那么能拿来干啥呢?我是这么干的. 1. 平时工作开发用不上,就当个计算器吧! python # 加减乘除 >>> (3 + ...

  7. Oracle SQL优化器简介

    目录 一.Oracle的优化器 1.1 优化器简介 1.2 SQL执行过程 二.优化器优化方式 2.1 优化器的优化方式 2.2 基于规则的优化器 2.3 基于成本的优化器 三.优化器优化模式 3.1 ...

  8. 基于阿里云 DNS API 实现的 DDNS 工具

    0.简要介绍 0.1 思路说明 AliDDNSNet 是基于 .NET Core 开发的动态 DNS 解析工具,借助于阿里云的 DNS API 来实现域名与动态 IP 的绑定功能.工具核心就是调用了阿 ...

  9. 解决ionic3 android 运行出现Application Error - The connection to the server was unsuccessful

    在真机上启动ionic3打包成的android APK,启动了很久结果弹出这个问题: Application Error - The connection to the server was unsu ...

  10. 【Java提高】---通过UUID、SHA-1、Base64组合加密

    通过UUID.SHA-1.Base64组合加密 该篇文章实现的最终效果是: 1)加密是不可逆的. 2)相同字符串加密产生后的字符串都不一样 3)所以要想比较两个字符串是否相等,需要用已经加过密的字符串 ...