【redis】跟我一起动手玩玩redis主从复制和哨兵模式
文章目录
- 简单概念铺垫
- 什么是主从复制
- “主从复制” ,存在即合理
- 使用简明教程
- 不说了,来吧
- 问题来啦
- 哨兵模式
- 什么是主从复制
- “主从复制” ,存在即合理
- 使用简明教程
简单概念铺垫
在redis.conf中对主从复制有专门的长篇大论,不过是英文。 但是,我翻译好了:点此传送至:redis.conf翻译与配置(二)
啰嗦几句啊。如果看完redis.conf,可以直接跳过下面的,直接打开redis,开始探索之旅。
什么是主从复制
在Redis集群中,让若干个Redis服务器去复制另一个Redis服务器,我们定义被复制的服务器为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave),这种模式叫做主从复制模式。
数据流向是单向的,只能是从master到slave
一个slave只能有一个master
“主从复制” ,存在即合理
为数据提供多个副本,实现高可用(容灾备份) 实现读写分离(主机负责写数据,从机负责读数据,主机定期把数据同步到从机保证数据的一致性)
使用简明教程
1)配主不配从 2)配置命令:SLAVE 主机IP 主机Port 每次与主机断开之后,都要重新连接,除非修改配置文件。 3)详细操作
1.拷贝多个redis.conf文件
2.开启daemonize yes
3.pid文件名字
4.指定端口
5.log文件名字
6.dump.rdp名字
不说了,来吧
1)打开三个redis端口
2)配置三份conf文件
第一份6379:
用于复制出2、3
第二份6380:
第三份6381不再赘述。
3)打开三个redis服务器,并连接
另外两个客户端自行打开。
4)查看各机状态,此时还都是主机
5)配从(将6380、6381挂在主机6379上)
6381记得挂
再查看主机状态:
6)验证主从复制
问题来啦
1)切入点问题:slave1、slave2是从切入时开始复制还是从头开始复制 答:全量复制,大家可以做下测试。
2)从机是否可写?
3)主机挂了呢?从机是趁机上位还是原地待命?
哦,从机还是从机,它就算有“不臣之心”,它也不知道“主子”已经先走一步了。
4)立马扶持一个从机上位
注意看,它是没有从机的,原先旧主的老部下可是不会跟着它走的。
5)旧主回归,旧臣是否依旧追随?
当然,那个自立门户的是不会主动回来了。
6)从机挂了呢? 挂了就挂了呗,什么时候想回来就回来呗。
7)手动不嫌麻烦吗? 当然麻烦,那就往下看:
哨兵模式
这里的哨兵有两个作用:
通过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。
当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
然而一个哨兵进程对Redis服务器进行监控,可能会出现问题,为此,我们可以使用多个哨兵进行监控。各个哨兵之间还会进行监控,这样就形成了多哨兵模式。
这些都是后话,咱先把一个搞好吧。
1)打开一个新终端 2)哨兵文件:
3)创建一个哨兵专属配置文件
4)配置该文件
如果要监视多个主机,那就多写几行。 最后那个1是票数
5)哨兵站岗
6)主机挂掉之后
7)原主机回来了
还不错吧,不过这里面有什么弊端,下次再说咯。
先剧透一下:中心化与去中心化。
天色已晚咯,各位不点个赞加关注吗?跟着博主不迷路
- Codeforces Beta Round #1 A,B,C
- 线性分类器-中篇
- isupper()函数
- HDU 5882 Balanced Game
- 超级玛丽游戏
- POJ 3673 Cow Multiplication
- HDU 5144 NPY and shot(物理运动学+三分查找)
- 深度|Python股票数据分析
- HDU 2438 Turn the corner(三分查找)
- UVAlive 3708 Graveyard(最优化问题)
- HDU 1754 I Hate It(线段树之单点更新,区间最值)
- Selenium2+python自动化19-单选和复选框
- Uva 11300 Spreading the Wealth(递推,中位数)
- Uva 11729 Commando War (简单贪心)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP CRM One Order函数SAVE_EC的设计原理
- SAP CRM One Order函数CHANGE_OW的设计原理
- 关于checkpoint你可能不知道的事
- SAP CRM One Order函数CRM_Object_FILL_OW的设计原理
- SAP CRM One Order header extension的缓存机制设计原理
- SAP CRM数据库表CRMD_CUMULAT_H的设计原理
- Python从入门到大师一百篇教程 | 前言:Python的前世和发展
- Java和ABAP的垃圾回收机制(Garbage Collection)比较
- Java和SAP ABAP的异常处理
- Java的字节码和ABAP load的比较
- matplotlib | Python强大的作图工具,让你从此驾驭图表(一)
- 使用ES6的fetch API读取数据时要注意的一个和cookie相关的坑
- 跟牛老师一起学WEBGIS——WEBGIS基础(地图切片)
- Go语言 | 并发设计中的同步锁与waitgroup用法
- LeetCode 99 | 如何不用递归遍历二叉搜索树?MT方法给你答案