一主二从架构

1.一主二从架构图

2.通过命令 mkdir redisCluster创建redis集群文件夹

3.通过命令mkdir 6380   mkdir 6381   mkdir 6382在redisCluster文件夹下创建三个文件夹

4.通过以下命令将redis.conf分别拷贝到6380、6381、 6382文件夹下

cp /usr/local/redis/redis-3.0.2/redis.conf  ./6380

cp /usr/local/redis/redis-3.0.2/redis.conf  ./6381

cp /usr/local/redis/redis-3.0.2/redis.conf  ./6382

5. 分别进入这三个目录,分别修改配置文件

将端口分别设置为:6380(Master)、6381(Slave)、6382(Slave)。同时要设置pidfile文件为不同的路径。

6.在redis中设置主从有2种方式

1)在redis.conf中设置slaveof

slaveof <masterip> <masterport>

将6381的redis.conf中增加配置 slaveof 192.168.176.130 6380

    将6382的redis.conf中增加配置 slaveof 192.168.176.130 6380

2)使用redis-cli客户端连接到redis服务,执行slaveof命令

slaveof <masterip> <masterport>    此种方式重启redis后会失效

7.分别输入命令redis-server  redis.conf启动redis

8.测试主从

6380主

6381从   6382从

9.默认情况下redis数据库充当slave角色时是只读的不能进行写操作

可以在配置文件中开启非只读:slave-read-only no

主从从从架构

1.主从架构图

复制的过程原理

1、 当从库和主库建立MS关系后,会向主数据库发送SYNC命令;

2、 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来;

3、 当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis;

4、 从Redis接收到后,会载入快照文件并且执行收到的缓存的命令;

5、 之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致;

无磁盘复制

通过前面的复制过程我们了解到,主库接收到SYNC的命令时会执行RDB过程,即使在配置文件中禁用RDB持久化也会生成,那么如果主库所在的服务器磁盘IO性能较差,那么这个复制过程就会出现瓶颈,庆幸的是,Redis在2.8.18版本开始实现了无磁盘复制功能。

原理:

Redis在与从数据库进行复制初始化时将不会将快照存储到磁盘,而是直接通过网络发送给从数据库,避免了IO性能差问题。

开启无磁盘复制:repl-diskless-sync yes

复制架构中出现宕机情况,怎么办

如果在主从复制架构中出现宕机的情况,需要分情况看:

1.从Redis宕机

a)这个相对而言比较简单,在Redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据;

b)如果从库在断开期间,主库的变化不大,从库再次启动后,主库依然会将所有的数据做RDB操作吗?还是增量更新?(从库有做持久化的前提下)

不会的,因为在Redis2.8版本后就实现了,主从断线后恢复的情况下实现增量复制。

2.主Redis宕机

a)这个相对而言就会复杂一些,需要以下2步才能完成

第一步,在从数据库中执行SLAVEOF NO ONE命令,断开主从关系并且提升为主库继续服务;

第二步,将主库重新启动后,执行SLAVEOF命令,将其设置为其他库的从库,这时数据就能更新回来;

b)这个手动完成恢复的过程其实是比较麻烦的并且容易出错,有没有好办法解决呢?当前有的,Redis提供的哨兵(sentinel)的功能。

Redis实战(三)CentOS 7上Redis主从复制的更多相关文章

  1. C# Redis实战(三)

    三.程序配置 在C# Redis实战(二)中我们安装好了Redis的系统服务,此时Redis服务已经运行. 现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web ...

  2. Redis Desktop Manager 连接不上redis的问题

    1.需要启动redis,进入后测试,ping,回应pong,说明redis可用 启动redis的代码: redis-server /myredis/redis.conf redis-cli 如果还是连 ...

  3. CentOS 编译安装 Redis (实测 笔记 Centos 7.3 + redis 3.2.8)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...

  4. 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍

    笔记 1.分布式缓存Redis介绍      简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具          1.redis官网 https://redis.io/download   ...

  5. Redis实战(二)CentOS 7上Redis两种方式持久化

    Redis的持久化之RDB RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上. 进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个 ...

  6. Redis实战(四)CentOS 7上Redis哨兵

    什么是哨兵 顾名思义,哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程.它的功能有2个: 1. 监控主数据库和从数据库是否运行正常: 2. 主数据出现故障后自动将从数据库转化为主数据 ...

  7. Linux+Redis实战教程_day01_Linux系统上安装tomcat

    Linux系统上安装tomcat 安装tomcat 上传tomcat的安装文件 Alt+p 拖拽上传 创建tomcat的安装路径 mkdir -p /usr/local/tomcat 解压tomcat ...

  8. Linux+Redis实战教程_day02_Linux系统上安装MySQL

    Linux系统上安装MySQL 安装MySQL 卸载自带mysql 查询mysql的安装情况,可以直接使用了 rpm -qa | grep -i mysql –-color 卸载原生的MySQL rp ...

  9. Redis学习笔记:windows上redis的安装运行

    Redis的windows版本地址https://github.com/MicrosoftArchive/redis 下载之后解压之 在当前解压目录下可以看到如下文件 在当前目录下打开命令行窗口,输入 ...

随机推荐

  1. iOS-UICollectionViewLayout方法介绍

    注意:UICollectionView的自定义功能就是自己去实现UICollectionViewLayout的子类,然后重写相应的方法来实现Cell的布局 1.当布局首次被加载时会调用prepareL ...

  2. Beta阶段团队项目开发篇章2

    例会时间: 2016.12.4 例会照片 个人工作 上阶段任务验收: 组员任务都已完成. 任务分配 组员 任务内容 韩慧敏 对调查问卷的结果进行分析和总结,确定Beta阶段各任务的优先级,撰写相关博客 ...

  3. Alpha阶段敏捷冲刺②

    1.提供当天站立式会议照片一张 每个人的工作 (有work item 的ID),并将其记录在码云项目管理中: 昨天已完成的工作. 购买云服务器 注册账号 界面布局初步规划 今天计划完成的工作. 界面雏 ...

  4. Delphi中BCD和Currency类型

    用了这些年的Delphi,竟然对Currency及TBCDField一知半解,下文给了很好的讲解,值得一读. 一.       BCD类型 BCD即Binary-Coded Decimal?,在Del ...

  5. windows下python3.6安装pycryto or crypto or pycryptodome与使用

    pycrypto,pycrytodome和crypto是一个东西,在很久以前,crypto在python上面的名字是pycrypto它是一个第三方库,但是已经停止更新三年了,所以不建议安装这个库: w ...

  6. net user 修改密码的坑

    不多说 直接上图 自己偷懒修改 admin的密码.. 结果没注意 这个地方 能够输入全角字符. 造成密码 实质上是全角的 标点符号 ... 以后一定注意一些. 里面的坑..说多了 都是浪费时间 另外 ...

  7. Python 变量(下)

    列表 列表是可修改的序列类型.所以列表不可以作为字典的键. >>> a = [1] >>> hash(a) Traceback (most recent call ...

  8. eclispe 出现超内存错误

    刚开始以为只要修改tomcat的最大最小内存就可以,结果还是报错,后来才懂需要在eclipse.ini文件中修改 -Xms256m-Xmx512m的值改大些,增加虚拟机运行的内存空间 刚开始最小值只有 ...

  9. jQuery map和each用法

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  10. digitalworld.local: MERCY靶机入侵

    0x01 前言 MERCY是一个致力于PWK课程安全的靶机系统.MERCY是一款游戏名称,与易受攻击的靶机名称无关.本次实验是攻击目标靶机获取root权限并读系统目录中的proof.txt信息 靶机的 ...