首页 > 数据库 >redis主从复制、哨兵模式、集群

redis主从复制、哨兵模式、集群

时间:2024-07-31 17:00:51浏览次数:13  
标签:--- 主从复制 redis 192.168 哨兵 ---- 6379 sentinel

redis集群 高可用
redis集群的三种模式:
1.主从复制(奇书 3台 一主两从)
2.哨兵模式 (3台 一主两从)
3.cluster (集群 6 333)

主从复制:喝MySQL的主从复制类似,主可以写,写入主的数据通过RDB方式把数据同步到从服务器。从不能更新到主。也是哨兵模式的基础。
缺点:没有办法进行故障自动化恢复,只有主能够写。

哨兵:故障自动化恢复,主从复制完成之后,从服务器变成只读模式
故障切换时,主故障,变成从服务器,主变成从之后,也会进入只读模式。
缺点:从节点一旦故障,读会受到影响。

集群:把每两台服务器作为主从模式,形成一个大的主从的集群
优点:解决了写操作的负载均衡。较为完善的高可用方案
缺点:保证高可用,对数据的完整性要求不高。

主从复制:
主节点和从节点
数据的复制是单向的,由主复制到从
主从复制的流程:

在这里插入图片描述

部署主从复制
192.168.233.11 主
192.168.233.12 从1
192.168.233.13 从2

三台同步操作
#关闭防火墙
systemctl stop firewalld
setenforce 0
#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
date

vim /etc/redis/6379.conf
----70行---
bind 0.0.0.0
----137行---
daemonize yes
----700行---
appendonly yes
#重启服务
/etc/init.d/redis_6379 restart
#查看端口
netstat -anpt | grep 6379

从1

vim /etc/redis/6379.conf
----70行---
bind 0.0.0.0
----287行---
replicaof 192.168.122.11 6379
----700行---
appendonly yes
#重启服务
/etc/init.d/redis_6379 restart
#查看端口
netstat -anpt | grep 6379

从2

vim /etc/redis/6379.conf
----70行---
bind 0.0.0.0
----287行---
replicaof 192.168.122.11 6379
----700行---
appendonly yes
#重启服务
/etc/init.d/redis_6379 restart
#查看端口
netstat -anpt | grep 6379

哨兵模式:
切换方式:不是按照权重来进行切换。
主宕机,其他服务器投票选举Raft算法。选一个离当前时间点更新最快的从变成主

在这里插入图片描述

192.168.233.11 主
192.168.233.12 从1
192.168.233.13 从2

三台同步操作
cd /opt/redis-5.0.7/
vim sentinel.conf
----21行---
#默认端口
port 26379
----17行---
#关闭保护模式
protected-mode no
----26行---
#开启后台运行
deamoniza yes
----37行---
#记录日志
logfile "/var/log/sentinel.log"
----65行---
#数据库的工作目录
dir "/var/lib/redis/6379"
----84行---
#初始化监听都是监听主。监听主服务器的状态
#2就是对应的从服务器的数量以及投票的参与者,参与者要和从服务器的数量一致
#2台服务器投票通过,主才能举行故障转移
sentinel monitor mymaster 192.168.233.11 6379 2
----113行---
#判断服务器宕机的时间周期 30秒  每30秒检测一次
sentinel down-after-milliseconds mymaster 3000
----146行---
#判断故障节点的超时最大时间 180秒
sentinel failover-timeout mymaster 180000

先启动主再启动从

#启动哨兵模式
redis-sentinel sentinel.conf &
#查看哨兵状态
redis-cli -p 26379 info Sentinel
#查看日志文件
tail -f /var/log/sentinel.log
#关闭redis
/etc/init.d/redis_6379 stop
#主故障后会切换到从,从变成主拥有读写权限,主恢复后变成从,变成只读模式
#主恢复,会立刻从RDB文件中获取数据,实现同步
/etc/init.d/redis_6379 start

从1

#启动哨兵模式
redis-sentinel sentinel.conf &
#查看哨兵状态
redis-cli -p 26379 info Sentinel
#查看日志文件
tail -f /var/log/sentinel.log

从2

#启动哨兵模式
redis-sentinel sentinel.conf &
#查看哨兵状态
redis-cli -p 26379 info Sentinel
#查看日志文件
tail -f /var/log/sentinel.log

在这里插入图片描述

集群:
redis3.0之后的分布式存储方案
集群由多个节点组成,redis数据保存在这些节点
集群中的节点分为主和从。
主负责读写已经维护集群的信息
从节点字节进行主节点数据的复制(也可以查)

redis集群的数据分片
在集群概念中,引用的是hash槽的概念
创建了集就有16384个哈希槽
0-16384
3个节点:
主1 0-5460
主2 5461-10922
主3 10923-16383
节点当中,如果主和从全部失败,整个集群都将不可用。

192.168.233.11 主 1
192.168.233.12 主2
192.168.233.13 主3
192.168.233.14 从1
192.168.233.15 从2
192.168.233.16 从3

6台机器同时操作
#关闭防火墙
systemctl stop firewalld
setenforce 0
#时间同步
yum -y install ntpdate
ntpdate ntp.aliyun.com
#验证
date
#进入配置文件
vim /etc/redis/6379.conf
----70行----
#注释掉
#bind 127.0.0.1
----89行----
#关闭保护模式
protecter-mode no
----833行----
#是否允许集群模式开启
cluster-enabled yes
---841---
#取消注释,集群配置文件
cluster-config-file nodes-6379.conf
---847----
#集群超时时间,取消注释
cluster-node-timeout 15000
-----700----
#启用持久化
appendonly yes

#重启
/etc/init.d/redis_6379 restart

redis-cli -h 192.168.233.11 --cluster create 192.168.233.11:6379 192.168.233.14:6379 192.168.233.12:6379 192.168.233.15:6379 192.168.233.13:6379 192.168.233.16:6379 --cluster-replicas 1

192.168.233.11集群的主连接节点 配置节点

–cluster create 192.168.233.11:6379 192.168.233.14:6379 192.168.233.12:6379 192.168.233.15:6379 192.168.233.13:6379 192.168.233.16:6379 前面的是主,后面的是从

–cluster-replicas 1 表示每个主只有一个节点

在这里插入图片描述

在这里插入图片描述

集群:moved不是报错,注释系统提示客户端到指定位置的哈希槽进行读或者写,系统提示啥,就去哪个节点操作即可,这个节点是该节点的主

集群的功能只是满足了高可用和写的负载均衡,不能保证数据的完整性。

#看槽位
cluster slots
#看各个节点的信息
CLUSTER NODES

在这里插入图片描述

在这里插入图片描述

标签:---,主从复制,redis,192.168,哨兵,----,6379,sentinel
From: https://blog.csdn.net/gjw01/article/details/140827274

相关文章

  • redis
    redis缓存中间件缓存数据库nginxweb服务php转发动态请求tomcatweb页面,也可以转发动态请求。springboot自带tomcat。redis也是一个数据库,不单单是一个缓存工具。redis非关系型数据库nosqlnotonlysql不仅仅是sql键值对形式keyvaluetest1=test2数据的......
  • Flask框架内容基础3 -- 使用redis实现异步任务队列
    前面所了解的所有请求都是同步的,那么当面临异步请求时,应该怎么做?调用者:携带参数发送请求API:接收请求并生成一个任务ID,接下来:返回给调用者+放到任务队列中worker:等待redis队列(List),一旦接收到任务,就执行并将结果返回到结果队列(Hash)调用者:等待n秒后,携带任务ID再次发送请求,获......
  • Redis 缓存中间件 缓存数据库
    Redis缓存中间件缓存数据库nginxweb服务PHP转发动态请求tomcatweb页面也可以转发动态请求springboot自带tomcat所有的数据库不支持高并发,一旦访问量激增,数据库很快就会崩溃。Redis非关系型数据库nosqlnotonlysql不仅仅是sql键值对形式:keyvalue数据的......
  • 实现一个简单的redis分布式锁
    分布式锁一般有三种实现方式:1.数据库乐观锁;2.基于Redis的分布式锁;3.基于ZooKeeper的分布式锁。 为了确保分布式锁可用,至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解......
  • redis基础
    下面资料来自黑马程序员-整理课程内容Redis入门Redis数据类型Redis常用命令在Java中操作Redis1.Redis入门1.1Redis简介Redis是一个基于内存的key-value结构数据库。Redis是互联网技术领域使用最为广泛的存储中间件。官网:https://redis.io中文网:https://www.redis.n......
  • [Redis]哨兵
    这次聊聊,Redis的哨兵机制。为什么要有哨兵机制?在Redis的主从架构中,由于主从模式是读写分离的,如果主节点(master)挂了,那么将没有主节点来服务客户端的写操作请求,也没有主节点给从节点(slave)进行数据同步了。这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节......
  • java @Cacheable生成的redisKey,出现两个连续的冒号::
    1、参考基于redis2.1.6实现springcache生成的key多出一个冒号2、解决需要对key进行处理,【重点】是computePrefixWith方法config=config.computePrefixWith(cacheName->{returncacheName+StrUtil.COLON;});以下是完整代码实现CacheK......
  • Docker中使用自定义网络方式实现Redis集群部署与测试流程
    场景Docker中Docker网络-理解Docker0与自定义网络的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140788458参考上面的流程实现自定义网络的实现。下面记录其应用实例,使用Docker的自定义网络实现redis集群部署。注:博客:https://blog.csdn.net/badao_......
  • Linux安装redis(超级详细)
    持续关注我,我将分享一个网站完整的搭建过程!序号内容链接1linux安装jdk1.8https://blog.csdn.net/weixin_43836859/article/details/1404782392linux安装mysql5.7https://blog.csdn.net/weixin_43836859/article/details/1406272333linux安装redishttps://blog.csdn.net/we......
  • redis持久化
    除了正常服务以外,数据量的扩容,数据安全也属于高可用的范畴之内。实现redis高可用的方式1.持久化 最简单的高可用方法,主要功能就是备份数据。即把内存当中的数据保存到硬盘当中。2.主从复制3.哨兵模式4.redis的集群持久化概念是把内存当中的数据保存到硬盘当中。开启持......