Redis系列七 主从复制(Master/Slave)
主从复制(Master/Slave)
1、是什么
也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。
2、能干什么
读写分离,容灾恢复。
3、如何使用
1、从库配置:slaveof 主库IP 主库端口
2、修改配置文件
拷贝多个redis.conf文件,文件名和每个Redis的序号一致,方便区分。
开启daemonize yes。
修改pid文件名字。文件名字用于区分是哪个Redis主机的进程。
修改端口号。每个redis主机使用不同的端口号
log文件名字。区分每个Redis主机的日志。
dump.rdb名字。区分每个Redis主机的数据库文件。
4、常用的三种方式
一主二仆(一个主机 两个从机)
一个Master两个Slave。查看当前主机是主机还是从机使用命令 info replication
薪火相传(依次排开,既做下一个的主机也做上一个的从机,三台主机的话 中间的为上一台的从机下一台的主机)
上一个Slave可以是下一个slave的Master,Slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻master的写压力。
中途变更转向:会清除之前的数据,重新建立拷贝最新的数据。
配置从机的命令为 slaveof 新主库IP 新主库端口
反客为主(主机down掉后,从机升级为主机)
在从机上配置 SLAVEOF no one 之后,从机就会变为主机 使当前数据库停止与其他数据库的同步,转成主数据库。
4、复制原理
Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。slave第一次同步为全量复制。
增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
但是只要是重新连接master,第一次完全同步(全量复制)将被自动执行。
5、哨兵模式(sentinel)
- 哨兵模式为反客为主的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。
- 自定义的/myredis目录下新建sentinel.conf文件,名字绝不能错。
- 配置哨兵,填写内容在sentinel.conf文件中配置
sentinel monitor 被监控数据库名字(自己起名字) 127.0.0.1 6379 1
上面最后一个数字1,表示主机挂掉后salve投票看让谁接替成为主机,得票数多少后成为主机
- 启动哨兵
redis-sentinel /myredis/sentinel.conf (目录依照各自的实际情况配置,可能目录不同)
- 问题:如果之前的master重启回来,会不会双master冲突?
不会造成双冲突,之前的master会成为slave.
- 一组sentinel能同时监控多个Master。
6、复制的缺点
由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。
8、主要命令
info replication 查看主从机状态
slaveof 127.0.0.1 6379 在从机上配置,将6379作为主机
主从复制的具体配置
说明 例子使用6379、6380、6381三台Redis服务
一、为每个Redis创建一个配置文件
    
二、修改配置文件以6380为例
1、配置pid、log文件、后台运行
    
2、配置端口号
    
3、配置数据库文件名
    
4、配置aof(如果开启了aof则需要配置)
    
三、启动三台Redis之后所产生的文件如下
  
产生各自的rdb和aof文件
四、主从模式配置
1、一主二仆模式:一个主机两个从机,只在从机上配置即可,将6379作为主机,6380和6381作为从机。从机开启后第一次会从主机全量更新,以后每一次主机的写操作都会增量更新到从机。主机负责写,从机负责读,在从机上执行set key value 命令会失败。
各个机器上执行info replication命令后都会显示如下
     默认情况下每台redis都是master角色。
默认情况下每台redis都是master角色。
配置将6380和6379配置为从机
    
    
查看6379状态:
     连接两个slaves 一个是6381 一个是6380
连接两个slaves 一个是6381 一个是6380
查看6380状态
     看到6380的角色为slave,主机是127.0.0.1 端口是6379 主机连接状态是up。
看到6380的角色为slave,主机是127.0.0.1 端口是6379 主机连接状态是up。
在6379上执行写操作 在6380和6381上执行读操作
    
    
    
可以发现在master上执行写操作后,在slave上可以读到数据。
2、薪火相传模式,将6379作为6380的主机,将6380作为6381的主机。
查看6381
     可以看到6381是6380的从机
可以看到6381是6380的从机
查看6380
     可以看到6380的角色还是作为从机,不过可以到到它连接了一个salve 6381。
可以看到6380的角色还是作为从机,不过可以到到它连接了一个salve 6381。
在6379上写数据,在6380和6381上读数据
    
    
     可以看到两个slave上都可以读到master上的数据
 可以看到两个slave上都可以读到master上的数据
3、哨兵模式(sentinel)
当master关闭后,会在salve中会自动选出一个master做为主机。
编写sentinel.conf文件
内容如下:
sentinel monitor redis6379 127.0.0.1 6379 1
监控redis6379主机
现在redis配置文件目录为:
    
启动配置文件
    
停掉6379,看是否会自动在6380和6381中选出master
    
    
可以看到6380成为了master
      
可以看到日志输出,master从6379切换到了6380
2017-06-10 00:40:38
Redis系列七 主从复制(Master/Slave)的更多相关文章
- Redis主从复制(Master/Slave)
		Redis主从复制(Master/Slave) 修改配置文件 拷贝多个redis.conf文件分别配置如下参数: 开启daemonize yes pidfile port logfile dbfile ... 
- Redis(八):Redis的复制(Master/Slave)
		Redis的复制(Master/Slave)目录导航: 是什么 能干嘛 怎么玩 复制原理 哨兵模式(sentinel) 复制的缺点 是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置 ... 
- 8.Redis的复制(Master/Slave)
		Redis的复制(Master/Slave) a)是什么 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave ... 
- Redis主从复制(Master/Slave) 与哨兵模式
		Redis主从复制是什么? 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis主从复制 ... 
- Redis的复制(Master/Slave)、主从复制、读写分离
		1.什么是Redis的复制 行话:也就是我们所说的主从复制,主数据更新后根据配置和策略自动同步到备用机的master/slave机制,Mater以写为主,slave以读为主. 2.能干什么 2.1.读 ... 
- Redis 的主从复制(Master/Slave)
		目录 1. 是什么 2. 能干嘛 3. Redis主从复制讲解 (1). info replication:查看 目标redis 主从情况 (2) . 配从库不配主库 (3). 常用策略 (4). 复 ... 
- redis的主从机制  master&slave
		转载自:https://www.cnblogs.com/qwangxiao/p/9733480.html 一:master&slave的解释? master&slave就是主从复制,主 ... 
- redis系列:主从复制
		1 简介 这篇文章主要讲述Redis的主从复制功能.会依次从环境搭建.功能测试和原理分析几个方面进行介绍. 2 准备工作 服务器架构图如下 启动主服务器101,使用info replication命令 ... 
- redis 学习笔记(3)-master/slave(主/从模式)
		类似mysql的master-slave模式一样,redis的master-slave可以提升系统的可用性,master节点写入cache后,会自动同步到slave上. 环境: master node ... 
随机推荐
- chromedriver链接
			http://npm.taobao.org/mirrors/chromedriver/ 
- 使用Composer管理PHP依赖关系
			Composer 是PHP中用来管理依赖(dependency)关系的工具.你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer会帮你安装这些依赖的库文件. 系统需求: ... 
- 2019.1.9   Mac安装Iterm2 终端(oh my zsh的安装与配置)
			Mac安装Iterm2 终端(oh my zsh的安装与配置) 安装 curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tool ... 
- 十二、IntelliJ IDEA 中的版本控制介绍(中)
			由于 IntelliJ IDEA 支持的版本控制工具非常的多,但咱们真正能够用到的也就两三个而已,因此在本篇博文中,咱们主要介绍 SVN.Git 和 GitHub 的配置方法. SVN 如果想要在 I ... 
- OC和C语言比较
			说明:比较记忆相对来说更容易熟练记得牢固,理解了C语言相对来说OC也不太难,OC是C语言的扩展,向下兼容C语言. 源文件后缀名比较 1.C语言源文件 .h:头文件 .c:源文件 .o:目标文件 .ou ... 
- Lua库-bit32库
			Global = Global or {}; local bits = {}; function bits.bxor(num1,num2) local ret=bit32.bxor(num1,num2 ... 
- iOS:URL Scheme(完结)(18-1-3更)
			1.APP跳转 2.APP功能跳转 3.系统功能跳转 1.APP跳转 1.被打开方 设置APP的URL Types(设置位置在 “项目 - TARGETS - APP icon - info - (拉 ... 
- 关于chrome浏览器不能更新js的问题
			今天写程序时,突然发现无论我怎么改本地js,用chrome打开时,均是改动之前的效果,F12查看Sources时发现js文件并没有被改动.由此引发的问题,经查询解决方法如下: F12后按F1,出现Se ... 
- 『ACM C++』 PTA 天梯赛练习集L1 | 007-011
			真的是忙头晕了,学业.ACM打题.班级活动.自学新东西,哇这充实的大学~ ------------------------------------------------L1-007--------- ... 
- 关于css属性calc对于ie的态度
			做的一个项目,布局的时候用到了max-height:calc(100% - 15px);在谷歌.火狐浏览器,进行下拉的时候,它的父元素会出现垂直滚动条,但是在IE就不可以. 然后在网上找了找,说在它的 ... 
