文章目录
- Redis基本概念
- 主从复制
- 哨兵模式
- 故障切换
- 集群
Redis基本概念
Redis集群三种模式
主从复制:奇数台 3: 一主两从
哨兵模式:3: 1主两从
cluster:6
主从复制:和mysql的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器,从不能更新到主,也是哨兵模式的基础
缺点:没有办法实现故障自动化恢复,只有主能够写。
哨兵:故障自动化恢复,主从复制完成之后,从服务器会变成只读模式
故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式
缺点:从节点一旦故障,读会受到影响
集群:把每两台服务器作为主从模式,形成一个大的主从的集群
解决了写操作的负载均衡。较为完善的高可用方案
缺点:保证高可用,对数据的完整性要求不高。
主从复制
主节点和从节点
数据的复制是单向的,由主复制到从
主从复制的流程
部署主从复制
20.0.0.50 主
20.0.0.51 从
20.0.0.25 从
yum -y install ntpdatentpdate ntp.aliyun.com
做时间同步
修改主的配置文件
vim /etc/redis/6379.conf
两台从服务器
重启服务
查看端口
查看日志
哨兵模式
主从配置方法
修改这个配置文件 主从一起
日志文件所在位置
初始化监听。都是监听主。监听主服务器的状态 2 对应的就是从服务器的数量以及投票的参与者,参与者要和从服务器的数量是一致的
2台服务器投票通过 主才能进行故障转移
判断服务器宕机的时间周期 30秒 每30秒检测一次
判断故障节点180000毫秒(即3分钟)后开始执行故障转移操作,选择一个新的主节点。
先启动主 在启动从
redis-sentinel sentinel.conf &
查看状态
redis-cli -p 26379 info sentinel
故障切换
将主关掉 然后查看日志
/etc/init.d/redis_6379 restart/etc/init.d/redis_6379 start
Starting Redis server...
[root@redis1 redis-5.0.7]# /etc/init.d/redis_6379 stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
tail -f /var/log/sentinel.log
集群
Redis3.0之后的分布式存储方案
集群由多个节点组成,Redis数据保存在这些节点
集群中的节点分为主和从
主负责读写以及维护集群的信息
从节点进行主节点数据的复制(也可以查)
Redis集群的数据分片
在集群概念中,引用的是哈水槽的概念
创建了集群就有16384个哈希槽
0-16383
主1:0-5460
主2:5461-10922
主3:10923-16383
如果节点当中,如果主和从全部失败,整个集群都将不可用
部署集群
20.0.0.50 20.0.0.53
20.0.0.51 20.0.0.54
20.0.0.52 20.0.0.55
部署时间同步
六个节点全都做时间同步
yum -y install ntpdatentpdate ntp.aliyun.comvim /etc/redis/6379.conf
六个节点 做一样配置
注释掉
集群的文件
超时时时间
然后重启服务
/etc/init.d/redis_6379 restartredis-cli -h 20.0.0.50 --cluster create 20.0.0.50:6379 20.0.0.51:6379 20.0.0.52:6379 20.0.0.53:6379 20.0.0.54:6379 20.0.0.55:6379 --cluster-replicas 1
redis-cli -h 20.0.0.50 集群的主连接节点 配置节点--cluster create 20.0.0.50:6379 20.0.0.51:6379 20.0.0.52:6379 20.0.0.53:6379 20.0.0.54:6379 20.0.0.55:6379
前面是是主后面是从--cluster-replicas 1
表示每个主只有一个节点
进入库内查看
20.0.0.50:6379> CLUSTER SLOTS
20.0.0.50:6379> CLUSTER NODES
测试同步
在主库创建 从库查看
然后 主库挂点测试从库是否可以转为主库
集群
moved不是报错,是系统提示客户端去指定位置的哈希槽进行读或者写,系统提示啥,就去那操作即可,这个节点是该节点的主
集群的功能只是满足了高可用和负载均衡,不能保证数据的完整性