定义:主机数据更新后根据配置策略,自动同步到备的Master/slave机制,Master以写为主,Slave以读为主。

Tip:配从(从库)不配主(主库)

1.从库配置:

  slave of 主库IP 主库端口

  每次与master断开连接后,都需要重新连接,除非配置到redis.conf文件中

2.修改配置文件的操作细节:

  一.修改进程管道文件:pidfile

  二.修改端口:port

  三.修改log文件名称

  四.修改dump.rdb名称

  五.开启daemonize yes

3.常用3招(三个窗口端口分别为:6379、6380、6381,后面内容均已此三个端口描述):

  一. 一主二仆(6379为主,6380、6381为仆) :

    

     分别启动三个redis配置,在6380、6381上执行:slaveof 主机的IP 主机端口(例:slaveof 127.0.0.7 6379),使用命令 info replication 查看主备详情

    

    笔记:1.从机不能进行写操作(只能读)

       2.主机(6379)存储数据后,从机(6380、6381)执行slaveof命令,会将主机所有数据备份到从机上来

         3.主机宕掉,从机还是slave角色,并不会上位成为master,链接状态变为down

       4.主机从新启动后,还是master角色,从机的连接状态变为up

       5.从机宕了,恢复后不再与之前的主机有关联,角色变为master,想要变为从机,需要再次执行命令slaveof

  这种一主二仆的模式过于中心化,全部围绕一个主机来做数据备份,下面介绍薪火相传(一个节点接一个节点)的模式

  二. 薪火相传 :

     

      在6381上执行slaveof 127.0.0.1 6380,我们发现,6380既是6379的从机又是6381的主机

      在6379上执行写的命令,在6381上同样能拿到

      

  三. 反客为主 (主机宕掉,从 从机重新选举一个作为新的主机):

     

   命令:slaveof no one (使当前数据库停止与其他数据库同步,转成主数据库)

    操作步骤:

       1. 将三台redis还原回一主二仆的环境(6379为主机,6380与6381作为6379的从机)

       2. 将6379关掉(模拟线上宕机情况),

       3. 在6380中执行命令slaveof no one

       4. 将6381改成6380的从机

       5. 重新将6379启动

      我们发现,6380变成了主机,底下连了一台6381从机,当6379重新连接后,底下没有挂任何从机(区别于一主二仆)

   

4.复制原理:

   1. Slave连接到Master后发送一个sync命令,Master接到命令启动后台的存盘进程(同时收集所有接收到的修改数据的命令集[主库写操作]),后台进程完成后,Master将传送整个数据文件到slave来完成一次同步

   2. 全量复制:第一次slaveof到主库的时候(接收到数据文件后,将其存盘并加载到内存中)

   3. 增量复制:除第一次slaveof外,从库以后都是增量存储数据(接收主库传来的修改命令)

5.哨兵模式(类似反客为主的自动版):

  举例:生产环境,如果凌晨主机宕了,从机通过投票自动选举新的主机

   操作步骤:

    1. 调整环境现在主机是6379,从机为6380与6381

    2. # cd /usr/local/bin (redis的启动目录)

    3. # touch sentinel.conf (配置哨兵监控哪台主机,如果主机挂了,从机如何进行投票选举新的主机,名字绝对不能错)

    4. # vim sentinel.conf,在sentinel.conf加入如下内容: sentinel monitor host6379 127.0.0.1 6380 1

               host6379:被监控的主机名称(自己取)

        1代表主机宕掉后,剩余的从机如果谁的票数多余1票,就将作为新的主机

    5. 启动哨兵模式,执行命令:redis-sentinel sentinel.conf,你会看到如下图案:

      

     从图中发现,哨兵开始巡逻6380与6381,只要6379挂掉,那么这两台从机就开始投票,谁票数多谁上位。

    5. 将主机6379 shutdown,我们看到terminal窗口中出现如下信息:

      

        结论:

        6381变成了新的主机,

          6380变成了6381的从机

        重新将关闭后的6379启动,6379变成了6381的slave

6.复制的缺点:

  由于所有的写操作都在Master上,然后同步到Slave,所以Master同步到Slave上有一定的延迟,当系统繁忙的时候,延迟问题会加重,Slave机器数量的增加也会导致问题更加严重

总结:

  工作中一般都是哨兵模式  

Redis之主从复制的更多相关文章

  1. redis的主从复制配置

    redis的主从复制配置 一.     原理 Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架 ...

  2. Redis总结(三)Redis 的主从复制

    接着上一篇,前面两篇我总结了<Redis总结(一)Redis安装>和<Redis总结(二)C#中如何使用redis> 所以这一篇,会讲讲Redis 的主从复制以及C#中如何调用 ...

  3. 实现Redis的主从复制配置

    实现Redis的主从复制配置比较简单,而且容易明白. 下图是要配置的主从复制结构图: 1.说明 Redis主从复制中一个主服务可以有多个从服务,一个从服务可以有多个从服务. 配置比较简单,只需要更改r ...

  4. redis的主从复制部署和使用

    reids一种key-value的缓存数据库目前非常流行的被使用在很多场景,比如在数据库读写遇到瓶颈时缓存且读写分离会大大提升这块的性能,下面我就说说redis的主从复制 首先需要启动多个redis实 ...

  5. redis实现主从复制-单机测试

    一.redis实现主从复制-单机测试1.安装redis tar -zxvf redis-2.8.4.tar.gzcd redis-2.8.4make && make install2. ...

  6. 8. redis的主从复制和sentinal

    一. redis主从复制(读写分离) redis的主从复制分为两类节点:1个master和多个slave,master进行读写操作,slav进行只读操作 启动步骤: 主节点照常启动,slave节点启动 ...

  7. Redis基础学习(五)—Redis的主从复制

    一.概述     Redis的主从复制策略是通过其持久化的rdb文件来实现的,其过程是先dump出rdb文件,将rdb文件全量传输给slave,然后再将dump后的操作实时同步到slave中.让从服务 ...

  8. Redis配置主从复制

    Redis配置主从复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作环境介绍 1>.操作系统环境 [root@node101.yinzhengjie.org.cn ...

  9. Redis的主从复制(十一)

    1>什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后(在使用aof和rdb方式时,如果redis重启,则数据从aof文件加载)会将硬盘上持久化的数据恢复 ...

  10. 基于配置文件的redis的主从复制

    redis中主从复制有很多种配置方法: 1. 使用配置文件即为redis.conf来配置 在随从redis中配置 # slaveof {masterHost} {MastePort} slaveof ...

随机推荐

  1. 【XSY2760】nonintersect 计算几何

    题目描述 平面上有\(n\)条线段,你要擦掉所有线段但保留原有的\(2n\)个端点,然后连接这些端点形成\(n\)条不相交的线段,每个端点只能在一条线段中. 假设你画的线段总长为\(Y\),原有线段的 ...

  2. MT【307】周期数列

    (2017浙江省数学竞赛) 设数列$\{a_n\}$满足:$|a_{n+1}-2a_n|=2,|a_n|\le2,n\in N^+$证明:如果$a_1$为有理数,则从某项后$\{a_n\}$为周期数列 ...

  3. 【刷题】LOJ 556 「Antileaf's Round」咱们去烧菜吧

    题目描述 你有 \(m\) 种物品,第 \(i\) 种物品的大小为 \(a_i\) ​,数量为 \(b_i\)​( \(b_i=0\) 表示有无限个). 你还有 \(n\) 个背包,体积分别为 \(1 ...

  4. SCOI2016 Day1 简要题解

    目录 「SCOI2016」背单词 题意 题解 代码 「SCOI2016」幸运数字 题意 题解 总结 代码 「SCOI2016」萌萌哒 题意 题解 总结 代码 「SCOI2016」背单词 题意 这出题人 ...

  5. 【BZOJ5324】[JXOI2018]守卫(动态规划)

    [BZOJ5324][JXOI2018]守卫(动态规划) 题面 BZOJ 洛谷 题解 既然只能看到横坐标在左侧的点,那么对于任意一个区间\([l,r]\)而言,\(r\)必须被选. 假设\(r\)看不 ...

  6. bzoj1014 火星人 (hash+splay+二分答案)

    求公共前缀的问题可以用hash+二分来解决,但这个是动态的,所以我们用平衡树来维护区间的hash值 复杂度$O(mlog^2n)$ #include<bits/stdc++.h> #def ...

  7. [FJOI2016]神秘数(脑洞+可持久化)

    题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13}, 1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...

  8. Composer 安装时要求输入授权用户名密码?

    D:\work\dreamland-yii>composer require "saviorlv/yii2-dysms:dev-master" Authentication ...

  9. 简明的Python教程当中的几个疑惑点分析#1

    #1简明的Python教程中的第11章面向对象编程学习中的类与对象的方法里面 有这么一个案例:使用类与对象的变量 #coding:utf-8 #类与对象的变量学习 class Person: popu ...

  10. js jquery数组去重

    数组去重建议直接使用jquery的 $.unique(arr);方法,此外比较好的方法是本文中的unique3方法比较快用了一个hash表,就是所谓的空间换时间.本文还提供了很多其他写法,都是大同小异 ...