Redis实战(三)CentOS 7上Redis主从复制
一主二从架构
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主从复制的更多相关文章
- C# Redis实战(三)
三.程序配置 在C# Redis实战(二)中我们安装好了Redis的系统服务,此时Redis服务已经运行. 现在我们需要让我们的程序能正确读取到Redis服务地址等一系列的配置信息,首先,需要在Web ...
- Redis Desktop Manager 连接不上redis的问题
1.需要启动redis,进入后测试,ping,回应pong,说明redis可用 启动redis的代码: redis-server /myredis/redis.conf redis-cli 如果还是连 ...
- 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 显示系统版 ...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍
笔记 1.分布式缓存Redis介绍 简介:讲解为什么要用缓存和介绍什么是Redis,新手练习工具 1.redis官网 https://redis.io/download ...
- Redis实战(二)CentOS 7上Redis两种方式持久化
Redis的持久化之RDB RDB方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并且存储到硬盘上. 进行快照的条件在配置文件中指定,有2个参数构成:时间和改动的键的个 ...
- Redis实战(四)CentOS 7上Redis哨兵
什么是哨兵 顾名思义,哨兵的作用就是对Redis的系统的运行情况的监控,它是一个独立进程.它的功能有2个: 1. 监控主数据库和从数据库是否运行正常: 2. 主数据出现故障后自动将从数据库转化为主数据 ...
- Linux+Redis实战教程_day01_Linux系统上安装tomcat
Linux系统上安装tomcat 安装tomcat 上传tomcat的安装文件 Alt+p 拖拽上传 创建tomcat的安装路径 mkdir -p /usr/local/tomcat 解压tomcat ...
- Linux+Redis实战教程_day02_Linux系统上安装MySQL
Linux系统上安装MySQL 安装MySQL 卸载自带mysql 查询mysql的安装情况,可以直接使用了 rpm -qa | grep -i mysql –-color 卸载原生的MySQL rp ...
- Redis学习笔记:windows上redis的安装运行
Redis的windows版本地址https://github.com/MicrosoftArchive/redis 下载之后解压之 在当前解压目录下可以看到如下文件 在当前目录下打开命令行窗口,输入 ...
随机推荐
- 由RS-232串口到PROFIBUS-DP总线的转换接口设计
转自:http://gongkong.ofweek.com/2013-08/ART-310007-11001-28716256_2.html 1.PROFIBUS-DP网络协议 PROFIBUS的网络 ...
- TCP/IP Illustrated Vol1 Second Edition即英文版第二版,TCP部分个人勘误
目前已经有了英文版第二版的TCPIP详解,中文版暂时还没有,但是英文版还是有好几处错误,作者和官方竟然没有维护一个勘误表. 个人阅读过程中针对TCP部分可能有问题的地方简单勘误一下 P596:示意图中 ...
- vue 中使用better-scroll 遇到的问题
以下是遇到问题以及解决方法 1.使用v-for 循环循环出来的列表,不能滚动. 原因是没有给wrapper 父层 加高度,当子层的高度大于父层的高度,才能滚动 打印scroll 对象,显示如此 竟然相 ...
- startActivityForResult()的用法(超好用啊)
最近做的一个小东西遇到这样的情况,我从一个页面MainActivity修改一些内容,需要跳转到一个新的EditActivity去做修改操作,修改完成后就回到之前的MainActivity,因为信息被修 ...
- DBGridEH序号的自动生成
序号的自动生成1.定义变量 private maxno:integer; public bmodified:boolean;2.写函数 function max(c ...
- MySQL的间隙锁
什么是间隙锁当我们用范围条件而不是相等条件检索数据,并请求共享或排他锁时,InnoDB会给符合条件的已有数据记录的索引项加锁:对于键值在条件范围内但不存在的记录,叫做“间隙(GAP)”,InnoDB也 ...
- linux下安装java jdk
第一步:查看java对应版本 yum search java 我自己装的是1.8版本的java包 第二步:装java包 yum install java-1.8.0-ope ...
- 你好,OI
高二了才开通真正意义上的博客...以前一直比较懒没写过什么,现在为了给自己留下一点回忆还是过来了. 上半年的那次失败还是历历在目啊...几个月来一直在我心中挥之不去.虽说也是自己的能力不足造成的,但是 ...
- MT【136】一道三次函数的最佳逼近问题
已知函数\(f(x)=-x^3-3x^2+(1+a)x+b(a<0,b\in R)\), 若\(|f(x)|\)在\([-2,0]\)上的最大值为\(M(a,b)\),求\(M(a,b)\)的最 ...
- 【刷题】BZOJ 2301 [HAOI2011]Problem b
Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...