Redis主从复制

1.Master可以拥有多个slave
2.多个slave可以连接同一个Master外,还可以连接到其他的slave
3.主从复制不会阻塞Master在主从复制时,Master可以处理client请求。
4.提供系统的伸缩性。

主从复制的过程

1.slave与Master建立连接,发送sync同步命令。
也就是说当用户在Master写入一条命令后,他们之间会通过一些算法把数据同步到每一个slave上。
2.Msater会开启一个后台进程,将数据库快照保存到文件中。同时Master主进程会开始收集新的写命令并缓存。
3.后台完成保存后,就将文件发送给slave
4.slave将此文件保存在硬盘上。

主从复制的配置

我们创建三台linux服务器,一台作为主服务器Master,ip为192.168.1.10另外两台作为slave,ip分别为192.168.1.11和192.168.1.12.
三台服务器分别安装redis,当然这里我们要确保三台服务器之间是能进行互相通信的,即互相可以ping通。然后Master服务器不需要做什么配置,将11和12两台服务器的redis.conf配置文件进行修改之后,redis就会自动的为我们实现主从复制。
 
修改两台slave的redis.conf这个配置文件。
如果主服务器没有设置密码,那么我们只要找到slaveof <masterip> <masterport>,这里我们的主服务器ip是192.168.1.10,redis端口是6379,那么我们只需要在redis.conf配置文件中加入slaveof 192.168.1.10 6379,然后保存即可。
如果主服务器设置了密码,我们还需要修改masterauth <master-password>(主服务器的密码)这个配置项。
 
然后同时启动三台服务器 进入到redis-cli客户端用info命令进行查看状态(此处我的Master的ip是192.168.1.231,slave的ip分别为229和230)
我们看到上面的role显示此台机器是master,有两个slave,还可以看到对应的ip和端口。
 
此时我们在slave只能进行读操作,只能通过master进行写操作。并且我们每次的写操作会发现在每一台服务器上面都是同步的。
 
简单的说Redis主从复制,假设我们有三台Redis服务器,一台主服务器Master,两台从服务器slave,slave中只能做读操作。Master可做读写操作,每次对Master进行写操作之后,首先Master会将数据存储在硬盘中,然后通过sync同步命令将每一个slave的数据进行更新,然后每一个slave都将更新的数据写在自己的硬盘中,这样就保证了数据的一致性。

Redis哨兵模式

如果我们在使用主从复制的情况下,Master服务器进行了down机的情况,我们的系统就不能再进行写的操作,所以此时redis在2.6版本引入了哨兵模式,但是并不稳定,2.8版本之后哨兵模式才稳定了起来。
顾名思义Redis的哨兵模式就是对redis系统进行实时的监控,其主要功能有下面两点
1.监测主数据库和从数据库是否正常运行。
2.当我们的主数据库出现故障的时候,可以自动将从数据库转换为主数据库,实现自动的切换。

实现步骤

这里我们还是使用上面的redis服务器的ip,Master的ip为192.168.1.229,slave1为:192.168.1.230,slave2为:192.168.1.231
在其中一台服务器配置sentinel.conf(比如192.168.1.230)
1.进入解压的redis文件夹中使用cp命令将sentinel.conf文件copy到你的redis中的etc文件夹。
2.修改sentinel.conf这个配置文件
打开这个文件 我们注意到哨兵使用的端口号是26379.
 
dir "/usr/local/redis/etc"这个dir相当于哨兵的一些日志,我们修改他的路径,让他存放在我们想要保存的目录中。
 
sentinel monitor mymaster 192.168.1.229 6379 1 对应的分别是 名称,ip,端口,投票选举的次数(那么我们哨兵监听的肯定是master的ip然后端口是6379,1说明当master主服务器down机之后,剩下的服务器要进行一个投票选举出一个主服务器)
 
sentinel down-after-milliseconds mymaster 5000 这个配置代表哨兵0.5ms进行一次检查这个集群。
 
sentinel parallel-syncs mymaster 2这个配置代表你的几个从节点将支持转换为主服务器的这个事情。
 
需要修改的几乎就这几个配置。
然后 我们分别启动三台redis服务器
输入bin/redis-server etc/sentinel.conf --sentinel &这个命令启动哨兵
/usr/local/redis/bin/redis-cli -h 192.168.1.230 -p 26379 info sentinel这个命令是查看哨兵的状态
我们看到我的主服务器现在是229现在有两个slave
 
这样我们的哨兵模式就已经开启了,此时我们可以试图关闭229的redis,然后看哨兵会不会去从两个从服务器中选举一台充当主服务器。
 

redis学习三,Redis主从复制和哨兵模式的更多相关文章

  1. redis学习三 redis持久化

      1,快照持久化 1简介      redis可以通过创建快照来获得某个时间点上的内存内容的数据副本,有了副本之后,就可以将副本发送到其他redis服务器上从而创建相同数据的从服务器,同时快照留在原 ...

  2. redis的主从复制和哨兵模式

    Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ...

  3. Linux基于Docker的Redis主从复制、哨兵模式搭建

    本教程基于CentOS7,开始本教程前,请确保您的Linux系统已安装Docker. 1.使用docker下载redis镜像 docker pull redis 安装完成后,使用docker imag ...

  4. Redis——(主从复制、哨兵模式、集群)的部署及搭建

    Redis--(主从复制.哨兵模式.集群)的部署及搭建 重点: 主从复制:主从复制是高可用redis的基础,主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复. 哨兵和集群都是 ...

  5. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  6. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  7. Redis三种模式——主从复制,哨兵模式,集群

    一.Redis主从复制作用 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复:实际上是一种服务的冗余. 负 ...

  8. Redis学习三:Redis高可用之哨兵模式

    申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis 的 Sentinel 系统用于管理多个 Redi ...

  9. redis: 主从复制和哨兵模式(十三)

    redis 主从复制 最低要求是一主二从(一个主机和两个从机) 主机才能写 从机只能读 只要从机连接到主机 数据就会全量复制到从机 环境配置(同一台机器) 1:配置文件 redis.conf配置如下: ...

随机推荐

  1. Android之仿今日头条顶部导航栏效果

    随着时间的推移现在的软件要求显示的内容越来越多,所以要在小的屏幕上能够更好的显示更多的内容,首先我们会想到底部菜单栏,但是有时候像今日头条新闻客户端要显示的内容太多,而且又想在主界面全部显示出来,所以 ...

  2. influx测试——单条读性能很差,大约400条/s,批量写性能很高,7万条/s,总体说来适合IOT数据批量存,根据tag查和过滤场景,按照时间顺序返回

    测试准备 需要将InfluxDB的源码放入 go/src/github.com/influxdata 目录 单写测试代码(write1.go): package main import ( " ...

  3. [LibreOJ NOIP Round #1] 旅游路线

    [题目链接] https://loj.ac/problem/539 [算法] 首先 , 我们用f[u][k]表示现在在景点u ,还有k元钱 , 最多能够走多少路 不难发现f[u][k] = max{ ...

  4. UVALive 4671 K-neighbor substrings 巧用FFT

    UVALive4671   K-neighbor substrings   给定一个两个字符串A和B B为模式串.问A中有多少不同子串与B的距离小于k 所谓距离就是不同位的个数. 由于字符串只包含a和 ...

  5. hibernate基础学习---hierbnate2级缓存

    1:开启二级缓存sessionFactory需要安装jar包 2:在实体类配置文件添加(配置二级缓存).我的配置文件是Account.hbm.xml <?xml version="1. ...

  6. Paratroopers(最小割模型)

    http://poj.org/problem?id=3308 题意:一个m*n的网格,有L位火星空降兵降落在网格中,地球卫士为了能同时消灭他们,在网格的行或列安装了一个枪支,每行或每列的枪支都能消灭这 ...

  7. php settype()和gettype()

    gettype()是获得变量的类型,settype()函数用来配置或转换变量类型.成功返回 true 值,其它情形返回 false 值.参数 var 为原来的变量名,参数 type 为下列的类型之一: ...

  8. 互斥的数(hash)

    1553 互斥的数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold     题目描述 Description 有这样的一个集合,集合中的元素个数由给定的N决定, ...

  9. 关于postman软件的安装与使用

    1.这个软件是一个模拟发请求的软件 2.这个软件和这个网站的 json 格式数据有着很好的关系  https://www.json.cn/ 他能帮助我们分解代码, 3.在使用(修改的)过程中发现了一个 ...

  10. 在vue项目npm run build后,index.html中引入css和js 报MIME type问题

    问题: 1.在vue项目中,build打包后,index页面打开会报错, MIME type ('text/html') ;报错内容:because its MIME type ('text/html ...