当前位置: 首页 > news >正文

尚硅谷redis7 58-62 主从复制之一主二仆

58主从复制之一主二仆

主机端口6379 从机端口6380,6381

配置文件固定写死后的主从问题:

1. 从机可以执行写命令吗? 否
2. 从机切入点问题

        slave是从头开始复制还是从切点开始复制?
        master启动,写到k3
        slave1跟着master同时启动,跟着写到k3

        slave2写到k3后才启动,那之前的是否也可以复制? 是的,首次一锅端,后续跟随,master写,slave跟

3.主机shutdown后,从机会上位吗?

        不会,连接的还是主机,只是显示连接断了。
4. 主机shutdown后,重启后主从关系还在吗?从机还能否顺利复制?

        主机重启之后,主从关系还在,从机照旧复制。
5. 某台从机down后,master继续,从机重启后它能跟上大部队吗?

        可以跟上大部队,会将之前的数据全部复制过来。

命令操作手动指定的主从问题:

在从机停机去掉配置文件中的配置项,重新启动配置文件。则3台目前都是主机状态,各不从属

预设的从机上执行命令

        slaveof 新主库IP新 主库端口  指定新连接的主机

        若命令使用后,2台从机重启后,关系还在吗?不在了。这是临时命令,仅单次生效,重启后就没了。

配置VS命令的区别:

  • 配置,持久稳定
  • 命令,当次生效

59 redis主从复制之薪火相传

上一个slave可以是下一个slave的master【但依然不能实现写操作】,slave同样可以接收其他slaves的连接和同步请求,那么该slave作为了链条中下一个的master,可以有效减轻主master的写压力
中途变更转向:会清除之前的数据,重新建立拷贝最新的slaveof 新主库IP新主库端口

60 redis主从复制之反客为主

从机执行SLAVEOF no one使当前数据库变为主机,但之前复制的数据还在

61 redis主从复制之工作流程总结【面试】

slave启动,同步初请

slave启动成功连接到master后会发送一个sync命令
slave首次全新连接master,一次完全同步(全量复制)将被自动执行,slave自身原有数据会被master数据覆盖清除

首次连接,全量复制

master节点收到sync命令后会开始在后台保存快照(即RDB持久化,主从复制时会触发RDB),同时收集所有接收到的用于修改数据集命令缓存起来,master节点执行RDB持久化完后,master将rdb快照文件和所有缓存的命令发送到所有slave,以完成一次完全同步
而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中,从而完成复制初始化

心跳持续,保持通信

master发出PING包的周期,默认是10秒。检测从节点的存活状态


进入平稳,增量复制

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


从机下线,重连续传

若从机down了,主机不会因为从机宕机而停止处理命令,它会继续接收客户端请求并写入数据。master会检查backlog里面的offset,master和slave都会保存一个复制的offset还有一个masterId,offset是保存在backlog中的。Master只会把已经复制的offset后面的数据复制给Slave,类似断点续传

当从节点(slave)宕机后,主节点(master)仍会继续处理写操作,并将命令日志保存在 replication backlog 中。

主从复制使用一个 复制偏移量(offset) 来记录数据同步位置。
主节点会保留一份写操作的历史数据,供从节点在恢复后进行“断点续传”。
如果从节点重新上线时,它携带自己的 offset 和上次连接的 masterId 发起同步请求,主节点会根据 offset 判断是否可以进行 部分重同步(PSYNC)

若主节点的 backlog 中仍包含从节点缺失的数据,主节点将仅发送缺失部分,避免全量同步,极大提升性能

62 redis主从复制之痛点和改进需求

复制延时,信号衰减:由于所有的写操作都是先在Master上操作,然后同步更新到Slave上,所以从Master同步到Slave机器有一定的延迟,当系统很繁忙的时候,延迟问题会更加严重,Slave机器数量的增加也会使这个问题更加严重。


master挂了如何办?从机原地待命默认情况下,不会在slave节点中自动重选一个master
        那每次都要人工干预? 是的,从剩余的从机中选择新的msater

相关文章:

  • mysql 迁移金仓,sys_use表查询报错,指定search_path后任然报错的问题
  • Linux系统中使用find命令自动清理过期备份文件的完整指南
  • 跑步机的控制面板英文的意思
  • 51c~CUDA~合集1
  • STP协议:如何消除网络环路风暴
  • cuda编程笔记(2)--传递参数、设备属性
  • 让爱延续,共筑养老服务产业的美好未来
  • 企业级AI开启落地战,得场景者得天下
  • 快速入门Java+Spring Ai+deepseek 开发
  • 快速入门基于stm32 CubeMX生成的freeRTOS操作系统开发
  • 七:操作系统文件系统之空闲空间管理
  • Guava限频器RateLimiter的使用示例
  • Batch Normalization[[
  • 辛格迪客户案例 | 合规升级之路:辛格迪助力倍特药业迈向卓越
  • Selenium 测试框架 - JavaScript
  • Python 进阶【二】:多进程编程
  • PyTorch安装Cuda版本选择
  • xxl-job快速创建复制任务
  • H-ZERO导出组件支持智能分片、异步导出、动态配置等高级特性,让“一键导出”成为现实!
  • 【ARM】MDK浏览信息的生成对于构建时间的影响
  • 合肥网站建设公司还有不/企业网站托管
  • 给六人游做网站开发的/网站排名推广工具
  • 一级域名网站怎样收费的/百度关键词排名销售
  • 网站备案需要准备什么/上海全网营销推广
  • 一个网站要怎么做的吗/百度搜索推广怎么做
  • 公司网站备案怎么做/seo网络优化教程