首页 > 数据库 >Redis主从复制

Redis主从复制

时间:2024-09-12 12:02:05浏览次数:1  
标签:主库 主从复制 同步 slave Redis master 从库

Redis主从复制

主从复制就是,master(主库)以写为主,Slave(从库)以读为主,当master的数据发生变化时,自动将新的数据异步同步到其他slave数据库

主从复制的作用:读写分离、容灾恢复、数据备份、水平扩容支撑高并发

 

配置时只配从库不配主库。

如果一个数据库想要成为另一个数据库的从库,就要在从库中配置 masterauth 来设置校验密码,否则master会拒绝slave的访问请求,校验密码就是master的登录密码

 

基本命令:

  • info replication 可以查看复制节点的主从复制关系和配置信息

  • replicaof 主库ip 主库端口 在从库的redis.conf文件中配置主库的信息

  • slaveof 主库ip 主库端口 该命令是配置主从库连接的,是以命令的方式,临时建立主从库关系,如果该库已经是某个库的从库,那么会立刻停止和原来主库的同步关系,转而和新的主库同步

  • slaveof no one 使当前数据库停止与其他数据库同步,转成主数据库

 

在从库的配置文件中配置好 replicaof 后,在主库的日志中,可以看到从库连接主库成功

image-20240912103519634

连接时一定要把主机和从机的防火墙关闭

 

主从问题:

  1. 从机可以执行写命令吗?

    不可以,从机只能进行读命令,主机可以读和写

 

  1. 从机切入点,当从机shutdown,但主机依然运行,那么在此期间的数据从机重启后能同步吗?

    可以同步

 

  1. 主机shutdown 后,从机之间的关系

    主机shutdown后,主机和从机依然是之前的主从关系,只是他们的连接状态是down,主机重启后同步关系继续

 

上面配置到文件中,持久稳定,每次启动主从关系都会存在

如果使用 slaveof 主机ip 主机端口

只有当前启动才生效,一旦关机就是去了主从关系

 

上一个slave可以是下一个slave的master,slave同样可以接收其他slave的连接和同步请求,那么该slave作为链条中下一个master,可以有效减轻主 master的写压力

但是 作为slave的master,也是不能进行写操作的

image-20240912112058442

中途变更转向会清楚之前的数据,重新建立拷贝最新的

 

slaveof no one 该命令使从库脱离主从关系,不在是其他库的 从库,直接变主库

 

主从复制的工作流程:

 

slave启动成功连接到master后会发送一个sync命令。

slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据将被master数据覆盖

 

首次连接,全量复制

master节点收到sync 命令后会开始在后台保存快照(RDB持久化),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化后,master将rdb快照文件和所有缓存的命令发送到slave,完成同步

slave服务在接收到数据库文件后,将其存盘并加载到内存,从而完成复制初始化

 

连接关系

在配置文件中有 repl-ping-replica-period 10 每隔10秒就ping一次,从而保持主从关系

 

连接后,主从复制

master继续将新的收集到的修改命令自动依次传给slave,完成同步

 

从机下线后,重新连接,继续传递

master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,master只会把已经复制的offset后面的数据复制给slave,类似断点续传

 

主从复制的缺点:

  • 由于所有写操作都是在master上操作,然后同步更新到slave上,所以 从master同步到slave机器有一定的延迟,当系统很繁忙时,延迟问题就会更加严重,slave机器的数量的增加也会使这个问题更加严重

  • 当master宕机后,只能手动重启,来恢复主从关系

 

标签:主库,主从复制,同步,slave,Redis,master,从库
From: https://www.cnblogs.com/wztblogs/p/18409916

相关文章

  • k8s用StatefulSet部署redis
    redis-config.yaml (配置文件)apiVersion:v1kind:ConfigMapmetadata:name:redis-configdata:redis.conf:|#Redisgeneralconfiguration​bind0.0.0.0​protected-modeno​port6379​dir/data​appendonlyyessentinel......
  • Redis、Nginx、SQLite、Elasticsearch等开源软件成功的原因及它们对IT技术人员的启示
    引言这些年在自研产品,对于如何做好产品进行了一些思考。随着开源软件的蓬勃发展,许多开源项目已经成为IT行业的核心组成部分。像Redis、Nginx、SQLite、Elasticsearch这些知名的开源软件,已经成为了开发者的首选工具。这些开源软件不仅在技术性能上取得了重大突破,还在社区建设、生......
  • Redis 入门 -- 系列文章
    随笔分类 -  Redis入门 Redis入门-C#|.NETCore客户端库六种选择Redis入门-五大基础类型及其指令学习Redis入门-图形化管理工具如何选择,最全分类Redis入门-安装最全讲解(Windows、Linux、Docker)Redis入门-简介 出处:https://www.cnbl......
  • redis 主从复制和哨兵模式
    一、概述Redis支持三种集群模式,分别为主从模式、哨兵模式和Cluster(集群)模式。主从模式:从节点异步的从主节点复制数据,这种架构主节点故障后无法自动切主。类似于mysql的主从复制。哨兵模式:该模式在主从复制基础上加了一个哨兵集群负责监控主节点和从节点。如果检测到主节点故障......
  • MySQL——主从复制、读写分离
    目录前言一、MySQL主从复制的概述1、MySQL主从复制的概念2、Mysql主从复制功能和使用场景2.1、Mysql主从复制功能2.2、Mysql主从复制使用场景3、MySQL支持的复制类型3.1、基于语句的复制3.2、基于行的复制3.3、混合复制4、主从复制的工作过程5、MySQL三种同步方式......
  • 深入理解 Redis 的文件事件处理器
    概述Redis的文件事件处理器是基于Reactor模式实现的,内部采用IO多路复用程序来同时监听多个套接字,当被监听的套接字准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作时,与操作相对应的文件事件就会产生,此时文件事件处理器就会调用套接字之前关联好的事......
  • Springboot 配置redis
    @ConfigurationpublicclassRedisConfig{@Value("${spring.data.redis.host}")privateStringredisHost;@Value("${spring.data.redis.port}")privateintredisPort;@Bean(name="jedisConnectionFactory")......
  • redis的雪崩、击穿和穿透
    redis是一种缓存工具,可以大大减少对数据库访问时数据库的压力,同时也可以让我们在对数据的读取时更方便,但由于某些因素,redis也可能会存在雪崩、击穿和穿透的风险:(引用自https://blog.csdn.net/wangxuanyang_zer/article/details/134420084)1、雪崩:是指在某一时间内大量的缓存失效或......
  • redis的持久化机制
    在使用Redis过程中,持久化是一项非常重要的功能,因为如果RedisServer停止工作,所有的数据将全部丢失。为了避免这种情况的出现,我们需要将Redis中的数据保存在硬盘上,以保证数据不受服务器宕机影响。Redis提供了两种持久化方式——RDB和AOF。一、什么是RDBRedis的RDB持久化方式......
  • Redis事务和管道
    Redis事务和管道事务一、概念Redis事务是可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入。 单独的隔离操作:Redis事务仅仅是保证事务里的操作会被连续独占地执行,redis命令执行是单线程架构,在执行完事务......