【Redis】主从复制

文章目录


  主从复制指的是当主机数据变化时,自动将新的数据异步同步到其他备用机。主从复制的功能主要有

  • 读写分离
  • 容灾恢复
  • 数据备份
  • 水平扩容支撑高并发

操作命令

命令 解释
info replication 查看复制节点的主从关系和配置信息
replicaof 主库ip 主库端口 一般在redis.conf中配置,表示该机器的主库
slaveof 主库ip 主库端口 在运行期间用命令连接主库,如果在有主数据库的情况下连接另一个数据库,则停止同步关系转而和新的数据库同步
slaveof no one 使当前数据库转为主数据库,断开与所有主数据库的连接

一、主从复制之一主二仆

使用docker来构建一主二仆的实验环境

相关注意点

  • 从机只能读取数据,不能执行写命令
  • slave是从头开始复制的,即使是在master的运行途中启动,slave也能获得master的全部数据。
  • 不管是master还是slave,只要集群中有一台机器没有宕机,就能恢复其他机器的数据,并且保持与之前一样的主从关系。

二、主从复制之薪火相传

  将上一个slave作为下一个slave的master,使用这种方式的主从结构可以有效减轻主master的写压力。

  但是对于链条中间的节点机来说,即使他作为一对主从中的master但是也无法进行写操作,本质上它还是主master的slave。


三、主从复制之反客为主

  主要使用命令slave no one ,使当前数据库成为master


四、总结

4.1、复制原理和工作流程

  • slave启动,同步初请

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

      另外,当slave首次全新连接到master,一次完全同步(全量复制)将会被自动执行,slave自身原有数据会被master数据覆盖清楚。

  • 首次连接,全量复制

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

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

  • 心跳持续,保持通信

      为了保持主从关系,主从对之间持续发送心跳包,,默认是10秒,配置参数是repl-ping-replica-period 10

  • 进入平稳,增量复制

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

  • 从机下线,重连续传

      master和slave都会保存一个复制的offset还有一个masterIdbacklog里面,slave重新上线后,master会检查backlog中的offset,把已经复制的offset后面的数据复制给slave,类似于断点续传。

4.2、复制的缺点

  • 复制延时,信号衰减

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

  • master宕机

      默认情况下,不会在连接网上重选一个master,所以需要人工干预来重启master。但是每次人工干预是不可接受的,所以无人值守变成刚需。这里就需要用到哨兵和集群了。

相关推荐
ccddsdsdfsdf1 小时前
DBeaver怎么链接mongoDB
数据库·mongodb
程序员老邢2 小时前
《技术底稿 43》今日踩坑复盘:Redis 乱码 + MySQL 配置注入失败
redis·技术底稿·redisson 序列化·mysql 配置·项目踩坑·微服务问题排查
丷丩2 小时前
Postgresql基础实践教程(十一)各种Join
数据库·postgresql·join
星夜夏空993 小时前
FreeRTOS学习(4)——内存映射
数据库·学习·mongodb
TheRouter3 小时前
AI Agent 记忆体系建设实战:短期、长期与工作记忆的工程实现
数据库·人工智能·oracle
Omics Pro3 小时前
首个!外源天然产物综合性代谢图谱
数据库·人工智能·算法·机器学习·r语言
JAVA面经实录9175 小时前
Hibernate面试题库
数据库·oracle·hibernate
Mr. zhihao5 小时前
Redis五大高级数据结构:原理-场景-底层-横向对比
数据结构·redis
迷枫7125 小时前
DM8 目录结构与常用排查入口梳理
服务器·数据库
Mr.Daozhi6 小时前
RAG 进阶实战:跑通 Demo 后我连续翻了 6 次车,逐一修复才真正可用(含 Gradio Web 版)
前端·数据库·langchain·大模型·gradio·rag·科研工具