redis-主从复制

1.主从复制

1.1简介

主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主

1.2作用

1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。

2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。

3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。

4、读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量。

5、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础

2.复制原理

  • Slave启动成功连接到master后会发送一个sync命令
  • Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令, 在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步
  • 全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
  • 增量复制:Master继续将新的所有收集到的修改命令依次传给slave,完成同步
  • 但是只要是重新连接master,一次完全同步(全量复制)将被自动执行

3.一仆二主

3.1找到原始的redis.conf 文件

3.2创建伪集群

3.2.1创建一主两从配置文件

3.2.2配置各配置文件

3.2.4启动三台服务器

redis-server /usr/local/myredis/redis6381.conf

指定配置文件启动服务

3.2.5进入命令行 (指定端口号)

查看运行状态 :info replication

3.2.6配置从服务器

没有设置主从关系的话,每一台服务器都是master

3.2.6.1从服务器中info replication
3.2.6.1主服务器info replication

4.薪火相传

4.1后面的从节点把主节点设置为上一个节点

4.2即使主节点也是从节点

4.3概括图

4.4缺点

如果中间的宕机了,则集群就瘫痪了

4.5反客为主(手动挡)

4.5.1让主节点宕机

4.5.2让从节点成为主节点

slaveof no one

5.哨兵机制(sentinel)

主从配置成一主二从

哨兵选举机制,如果有半数节点发现某个异常节点,共同决定改异常节点的状态,如果该节点是主节点,对应的备节点自动顶替为主节点。Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器。

5.1编写哨兵配置文件

名字不要写错 sentinel.conf

5.2监听

当主机挂掉,从机选举中产生新的主机

主机改变成6382了

5.3自动监听

5.4关于旧主机恢复正常

原主机重启后会变为从机

5.5图示更改过程

5.6优先级

优先级在redis.conf中默认:replica-priority 100,值越小优先级越高

偏移量是指获得原主机数据最全的

每个redis实例启动后都会随机生成一个40位的runid

相关推荐
fengye2071616 分钟前
在MYSQL中导入cookbook.sql文件
数据库·mysql·adb
hudawei99610 分钟前
flutter缓存网络视频到本地,可离线观看
flutter·缓存·音视频
小哈里16 分钟前
【pypi镜像源】使用devpi实现python镜像源代理(缓存加速,私有仓库,版本控制)
开发语言·python·缓存·镜像源·pypi
CircleMouse29 分钟前
基于 RedisTemplate 的分页缓存设计
java·开发语言·后端·spring·缓存
Ailovelearning36 分钟前
neo4j框架:ubuntu系统中neo4j安装与使用教程
数据库·neo4j
_星辰大海乀1 小时前
表的设计、聚合函数
java·数据结构·数据库·sql·mysql·数据库开发
未来之窗软件服务2 小时前
solidwors插件 开发————仙盟创梦IDE
前端·javascript·数据库·ide·仙盟创梦ide
yc_12242 小时前
SqlHelper 实现类,支持多数据库,提供异步操作、自动重试、事务、存储过程、分页、缓存等功能。
数据库·c#
小白学大数据2 小时前
基于Scrapy-Redis的分布式景点数据爬取与热力图生成
javascript·redis·分布式·scrapy
Kookoos3 小时前
Redis + ABP vNext 构建分布式高可用缓存架构
redis·分布式·缓存·架构·c#·.net