Redis ~ 数据库的几种常见用法(主从复制、高可用、集群)
Table of Contents
1. Redis简介
2. Redis配置
3. Redis主从复制
3.1 配置node2为node1的slave
3.2 测试
4. Redis高可用(哨兵)
4.1 Redis简介
4.2 Redis配置
4.3 测试
5. Redis集群
5.1 集群的配置
5.2 测试
1. Redis简介
Redis是一个开源的内存中数据结构存储,它可以用作数据库、缓存和消息代理。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)复制。
Redis支持主从复制。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。
2. Redis配置
下载地址:http://www.redis.cn/download.html
- 解压安装包
- make
- make install
- 安装redis服务,使用默认6379端口以及默认文件名称
- 查看端口
netstat -antulpe | grep redis
默认绑定的本地的6379端口,这样就违背了我们想使用它的初衷了。
- 修改配置文件,更改绑定接口
vim /etc/redis/6379.conf
打开所有接口的6379端口
- 重启redis服务,并查看端口信息
/etc/init.d/redis_6379 restart # 重启服务
netstat -antulpe | grep redis # 查看端口信息
可以看到,我们刚才修改的接口信息已经生效。接下来我们将node2也配置一下,如上步骤,不赘余。
3. Redis主从复制
3.1 配置node2为node1的slave
- 更改node2的配置文件
- 重启服务,查看redis端口信息
3.2 测试
- 在node1用redis-cli工具写入数据
- 在node2用redis-cli读取数据
通过测试可以看到,我们在node1中写入的数据,node2已经复制。但是要注意的是node2为slave节点,即只读节点,无法写入。
4. Redis高可用(哨兵)
在做该实验之前,我们先做好准备工作。之前我们创建了两个节点,一个master节点,一个slave节点。但是在搭建高可用时,我们会用到三个节点,因此我们再创建一个slave节点。步骤如上node2,不赘余。
4.1 Redis简介
Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance)该系统执行以下三个任务:
监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
通知(Notification):当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
自动故障迁移(Automatic failover):当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
4.2 Redis配置
- 修改哨兵配置文件
vim sentinel.conf
指示 Sentinel 去监视一个名为 mymaster 的主服务器, 这个主服务器的 IP 地址为 192.168.1.11 , 端口号为 6379 , 而将这个主服务器判断为失效至少需要 2 个 Sentinel 同意 (只要同意 Sentinel 的数量不达标,自动故障迁移就不会执行)。
down-after-milliseconds 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数。
接下来就是把三个节点都配置上,可以一个节点接一个节点的配置,也可以直接复制。但是要注意:必须在开启哨兵前复制,因为当开启哨兵后,配置文件中会生成一个session-id,而每个哨兵的id都必须唯一,所以必须在未开启哨兵时复制。
- 开启哨兵
redis-server /usr/local/redis-5.0.5/sentinel.conf --sentinel
4.3 测试
- 查看node1的redis状态
- 关闭node1的redis
- 查看三个节点的哨兵信息
通过哨兵信息,我们可以看到,master节点已经由node1转换为node2。
- 查看node2的redis状态
恢复node1的redis,node3查看哨兵状态可以看到,node1恢复,成为node2的从节点
5. Redis集群
5.1 集群的配置
搭建集群的我们需要一些运行在集群模式的Redis实例. 这意味这集群并不是由一些普通的Redis实例组成的,集群模式需要通过配置启用,开启集群模式后的Redis实例便可以使用集群特有的命令和特性了。
mkdir /usr/local/cluster-test
cd /usr/local/cluster-test/
mkdir 7000 7001 7002 7003 7004 7005
- 文件夹7000至7005中,创建redis.conf文件
配置中的端口号(日志,pid文件目录)从 7000 改为与文件夹名字相同的号码
- 所有集群节点配置完成后开启
redis-server redis.conf
- 创建集群
redis-cli --cluster create --cluster-replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
其中--cluster-replicas 1表示,一个master配一个slave
5.2 测试
在7000写入test时,重定向到了7001,在7002读取test时,也重定向到7001。也就是说我们实际存储的位置就是在7001上。
- down掉7001
- down掉7005
- 开启关闭的7001
发现开启7001后还是获取不到数据
- 开启关闭的7005
数据获取成功~没错,我们的master已经重定向到7005,因此7005开启数据复制恢复正常~~
Redis ~ 数据库的几种常见用法(主从复制、高可用、集群)相关推荐
- 部署Redis高可用集群
目录 部署Redis高可用集群 Redis集群环境 拓扑结构 IP地址 环境准备 工作原理 创建Redis集群 部署管理主机 redis-trib.rb脚本 redis服务器开启集群功能 管理主机创建 ...
- redis 04:Redis高可用集群
文章目录 一.Redis集群方案比较 二.Redis高可用集群搭建 三.Java操作redis集群 四.Redis集群原理分析 五.集群伸缩 5.1 集群扩展 5.1 缩容集群 六.总结 以下参考了图 ...
- Redis深入理解五 :Redis主从架构、哨兵架构、高可用集群模式
redis主从架构 redis主从架构搭建,配置从节点步骤: 复制一份redis.conf文件 将相关配置修改为如下值: port 6380 pidfile /var/run/redis_6380.p ...
- mysql架构 视频_企业常见MySQL架构应用实战(高可用集群系统+调优经验)视频课程...
第一章 MySQL企业常用架构应用实战(主从复制+性能调优) 1.企业级MySQL发行版Percona Server.MariaDB选型 2.常用MYSQL性能调优策略之系统级别调优(1) 3.常用M ...
- Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群
Redis 集群搭建(三):Docker 部署 Redis + Sentinel 高可用集群 前言 建议 官方译文 什么是 Sentinel? Sentinel 优点 Redis 配置文件 maste ...
- Redis缓存高可用集群
Redis缓存高可用集群 一.Redis集群方案比较 1.哨兵模式 2.高可用集群模式 二.Redis高可用集群搭建 1.在第一台服务器建立两个节点 2.第一个节点的redis.conf配置 3.启动 ...
- RKE部署Rancher v2.5.8 HA高可用集群 以及常见错误解决
此博客,是根据Rancher官网文档,使用RKE测试部署最新发布版 Rancher v2.5.8 高可用集群的总结文档.Rancher文档 | K8S文档 | Rancher | Rancher文档 ...
- Redis 如何使用 Twemproxy 和 Sentinel 构建高可用集群架构?
文章目录 Redis 如何使用 Twemproxy 和 Sentinel 构建高可用集群架构? 配置环境 构建 RedisSharding1 安装 Redis 配置 RedisSharding1 构建 ...
- Redis创建高可用集群教程【Windows环境】
模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...
最新文章
- 1.JSONObject与JSONArray的使用
- JS获取DOM元素的八种方法
- FormShortCut MainForm 和 二级FORM
- bzoj 1579: [Usaco2009 Feb]Revamping Trails 道路升级【分层图+spfa】
- 微软虚拟化技术——构建高效开发与测试环境
- 【NLP】目前有比Topic Model更先进的聚类方式么?比如针对短文本的、加入情感分析的?...
- 爬虫实例十 爬取百度贴吧小姐姐照片
- 招聘工作总结(精选多篇)
- iOS 截屏 长图 拼图
- Case when的用法
- STM32L051低功耗STOP模式下RTC唤醒
- 恢复chrome浏览器书签
- lzg_ad:XPE镜像文件部署详解
- 开启Windows7快速启动栏
- 【三】多线程 —— 设计模式
- EFM32 LG232系列单片机干货之LEUART
- 浅谈Ambarella 的BOSS架构
- 1000句英语经典口语(9)
- 模电:晶振与匹配电容的总结
- Xgboost实践 | 第一名天池o2o优惠券的使用预测思路完整版