【数据库】redis主从复制、哨兵模式、集群高可用

简介: 文章目录前言一、工作原理二、主从复制的作用

一、工作原理

  • slave服务器向master服务器发送请求连接命令
  • master节点进行rdb持久化,同时of将新的修改命令缓存到数据文件中
  • master给slave服务器发送数据文件,slave将数据保存到磁盘,加载到内存执行
  • 注:slave节点故障后,只需要重新连接即可

二、主从复制的作用

  • 数据冗余:实现数据热备份、提供数据冗余功能
  • 故障切换:主节点故障,从节点变为主节点提供服务(缺点需要手动切换,哨兵/集群可解决该缺点)
  • 哨兵模式:实现故障自动切换
  • 集群高可用:实现读写分离,分摊服务器压力,且故障自动切换

三、主从安装流程

3.0 架构

作用 IP地址 安装服务
主服务器 192.168.13.10 redis
从服务器 192.168.13.20 redis

3.1 主服务器

systemctl stop firewalld.service
setenforce 0
yum install gcc gcc-c++ make -y
tar zxvf redis-5.0.7.tar.gz
cd redis-5.0.7/
make -j 2 && make PREFIX=/usr/local/redis install
cd utils/
./install_server.sh
  四次回车后。输入:/usr/local/redis/bin/redis-server回车
ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
  70行:bind 192.168.13.10
  137行:daemonize yes
  172行:logfile /var/log/redis_6379.log
  264行:dir /var/lib/redis/6379
  700行:appendonly yes
/etc/init.d/redis_6379 restart

3.2 从服务器

systemctl stop firewalld.service
setenforce 0
yum install gcc gcc-c++ make -y
tar zxvf redis-5.0.7.tar.gz
cd redis-5.0.7/
make -j 2 && make PREFIX=/usr/local/redis install
cd utils/
./install_server.sh
  四次回车后。输入:/usr/local/redis/bin/redis-server回车
ln -s /usr/local/redis/bin/* /usr/local/bin/
vim /etc/redis/6379.conf
  70行:bind 192.168.13.10
  137行:daemonize yes
  172行:logfile /var/log/redis_6379.log
  264行:dir /var/lib/redis/6379
  700行:appendonly yes
  287行:replicaof 192.168.13.10 6379
/etc/init.d/redis_6379 restart
#另外一台从服务器重复此操作即可

四、哨兵模式

4.1 构成

  • 哨兵节点:端口号:26379;作用:监控、故障转移、通知用户故障转移
  • 数据节点:端口号:6379;为客户端提供服务

4.2 优劣

  • 优势:主故障时会自动进行故障切换
  • 劣势:①写操作无法进行负载均衡;②存储能力受单机性能影响;③从节点故障无法自动故障切换

4.3 原理

  • 哨兵节点定期监控主/从/其他哨兵节点(每秒发送心跳ping命令向其他主/从/哨兵进行心跳检查)
  • 根据心跳命令的返回码进行主观判断(宕机:主观下线),超过指定数量或者半数认为主服务器主观下线时,则判定主节点为客观下线
  • 哨兵节点通过raft算法,选出一个leader哨兵,用于负责故障转移
  • 缺陷:从/哨兵节点故障,无法自动进行故障切换

4.4 故障转移优先规则

  • 首先过滤掉不健康的从节点
  • 选择配置文件中,故障转移优先级高的从节点
  • 其次选择数据复制最全的从节点
  • 判定条件:优先级、数据完整性

4.5 搭建哨兵模式

  • 以主从复制为基础

4.5.1 架构

作用 IP地址 安装服务
主服务器 192.168.13.10 redis
从服务器1 192.168.13.20 redis
从服务器2 192.168.13.30 redis

4.5.2 流程

vim /opt/redis-5.0.7/sentinel.conf
  17行:protected-mode no
  21行:port 26379
  26行:daemonize yes
  31行:pidfile /var/run/redis-sentinel.pid
  36行:logfile "/var/log/sentinel.log"
  65行:dir "/var/lib/redis/6379"
  84行:sentinel monitor mymaster 192.168.13.10 6379 2
  113行:sentinel down-after-milliseconds mymaster 30000
  146行:sentinel failover-timeout mymaster 180000
scp sentinel.conf 192.168.13.20:`pwd`
scp sentinel.conf 192.168.13.30:`pwd`
cd /opt/redis-5.0.7
redis-sentinel sentinel.conf &
#在另外两台从服务器启动哨兵服务,完成哨兵模式
redis-cli -p 26379 info sentinel
#查看哨兵模式是否搭建成功,如下为成功
  master0:name=mymaster,status=ok,address=192.168.13.10:6379,slaves=2,sentinels=3

五、集群搭建

5.1 作用

  • 核心功能:将数据进行分片存储
  • 其余功能:突破redis单机内存限制,故障自动切换,横向扩展服务器能力

5.2 数据分片原理

  • 引用哈希槽概念,每组节点负责一部分哈希槽
  • 对每组数据的key键通过crc16算法得出一个数字,决定对应的哈希槽
  • 哈希槽总数:16384

5.3 集群模式搭建

  • 以主从复制为基础
  • 由于电脑性能有限,因此在一台服务器上模拟运行6个redis服务
systemctl stop firewalld.service
setenforce 0
yum install gcc gcc-c++ make -y
tar zxvf redis-5.0.7.tar.gz
cd redis-5.0.7/
make -j 2 && make PREFIX=/usr/local/redis install
cd utils/
./install_server.sh
  四次回车后。输入:/usr/local/redis/bin/redis-server回车
ln -s /usr/local/redis/bin/* /usr/local/bin/
/etc/init.d/redis_6379 restart
mkdir -p /etc/redis/redis-cluster/redis600{1..6}
for i in {1..6};do
cp /opt/redis-5.0.7/redis.conf /etc/redis/redis-cluster/redis600$i/
cp /opt/redis-5.0.7/src/redis-cli /opt/redis-5.0.7/src/redis-server /etc/redis/redis-cluster/redis600$i
done
vim /etc/redis/redis-cluster/redis6001/redis.conf
  69行:#bind 127.0.0.1
  88行:protected-mode no
  92行:port 6001
  832行:cluster-enabled yes
  840行:cluster-config-file nodes-6001.conf
  846行:cluster-node-timeout 15000
  699行:appendonly yes
for i in {2..6};do
\cp -f /etc/redis/redis-cluster/redis6001/redis.conf /etc/redis/redis-cluster/redis600$i/
done
for i in {2..6};do
sed -i "92c port 600$i" /etc/redis/redis-cluster/redis600$i/redis.conf
sed -i "840c cluster-config-file nodes-600${i}.conf" /etc/redis/redis-cluster/redis600$i/redis.conf
done
for i in {1..6};do
cd /etc/redis/redis-cluster/redis600$i
./redis-server redis.conf
done
redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1
  yes
#集群搭建完毕

集群测试

六、思维导图

相关文章
|
9月前
|
存储 NoSQL Redis
阿里云高性能数据库Tair(兼容 Redis)收费价格,稳定可靠成本低
阿里云高性能云数据库Tair兼容Redis,提供Redis开源版和Tair企业版,支持多种存储介质与灵活扩展,适用于高并发场景。Tair具备亚毫秒级稳定延迟,保障业务连续性。价格方面,Redis开源版年费从72元起,Tair企业版年费从1224元起,具体费用根据配置不同有所变化。
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
存储 NoSQL 数据库
Redis 逻辑数据库与集群模式详解
Redis 是高性能内存键值数据库,广泛用于缓存与实时数据处理。本文深入解析 Redis 逻辑数据库与集群模式:逻辑数据库提供16个独立存储空间,适合小规模隔离;集群模式通过分布式架构支持高并发和大数据量,但仅支持 database 0。文章对比两者特性,讲解配置与实践注意事项,并探讨持久化及性能优化策略,助你根据需求选择最佳方案。
1105 5
|
9月前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
12月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|知乎基于阿里云PolarDB,实现最大数据库集群云原生升级
近日,知乎最大的风控业务数据库集群,基于阿里云瑶池数据库完成了云原生技术架构的升级。此次升级不仅显著提升了系统的高可用性和性能上限,还大幅降低了底层资源成本。
|
存储 关系型数据库 MySQL
【赵渝强老师】OceanBase数据库从零开始:MySQL模式
《OceanBase数据库从零开始:MySQL模式》是一门包含11章的课程,涵盖OceanBase分布式数据库的核心内容。从体系架构、安装部署到租户管理、用户安全,再到数据库对象操作、事务与锁机制,以及应用程序开发、备份恢复、数据迁移等方面进行详细讲解。此外,还涉及连接路由管理和监控诊断等高级主题,帮助学员全面掌握OceanBase数据库的使用与管理。
633 5
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
244 3
|
存储 缓存 负载均衡
分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(下)
分布式缓存Redis分区(分片)的高可用方案在大厂中的实践
879 0
分布式缓存Redis分区(分片)的高可用方案在大厂中的实践(下)
|
缓存 监控 NoSQL
超全面Redis分布式高可用方案:哨兵机制
开发工作中对于分布式缓存高可用方案(搭建 Redis 缓存高可用方案),Redis 主从架构下是如何保证高可用的呢?
超全面Redis分布式高可用方案:哨兵机制

热门文章

最新文章