主从复制工作流程|学习笔记

简介: 快速学习主从复制工作流程

开发者学堂课程【Redis 入门到精通(进阶篇)主从复制工作流程】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13457


主从复制工作流程

 

目录

心跳机制

心跳阶段注意事项

主从复制工作流程(完整)

 

本章主要讲解心跳机制以及再次详细讲解主从复制完整的工作流程

 

一,心跳机制

1.进入命令传播阶段候,master  slave 间需要进行信息交换,使用心跳机制进行维护,实现双方连接保持在线

2.master 心跳:

(1).指令:PING

(2).周期:由repl-ping-slave-period 决定,默认10秒

(3).作用判断 slave 是否在线

(4).查询:INFOreplication  获取 slave 最后一次连接时间间隔,lag项维持在0或1视为正常

以下为在 info 中查到的运行结果的代码可供参考:

keyspace_hits:2

keyspace_misses:0

pubsub_channels:0

pubsub_patterns:0

latest_fork_usec:118

migrate cached sockets:0

slave_expires_tracked_keys:0

active_defrag_hits:0

active_defrag_misses:0

active_defrag_key_hits:0

active_defrag_key_misses:0

# Replication role:master

connected _slaves:1

slave0:ip=127.0.0.1.port=6380.state=online offser-4004,1ag=1 master_replid:5e4796996346598c6f3f4742efe609039

6f016 master_replid2:00000000000000000000000000000000000000

master_rep1_offset:4018

second_rep1_offset:-1

repl_backlog_active:1

repl_back1og_size:1048576

repl_back1og first byte_offset:1

repl_back1og histlen:4018

# CPU

used_cpu_sys:2.11

used_cpu_user:1.32

used_cpu_sys_children:0.00

used_cpu_user_children:0.00

# Cluster

cluster_enabled:0

# Keyspace

db0:keys=2 expires=0,avg_tt1=0

1270.0.1:6379>

3.slave 心跳任务

(1).指令:REPLCONF ACK{offset)

(2).周期:1秒

(3)作用:

.汇报 slave 自己的复制偏移量,获取最新的数据变更指令

.判断 master 是否在线

 

二,心跳阶段注意事项

1.当 slave 多数掉线,或延迟过高时,master 为保障数据稳定性,将拒绝所有信息同步操作

min-slaves-to-write 2

min-slaves-max-lag8

Slave 数量少于2个,或者所有 slave 的延迟都大于等于10秒时,强制关闭 master 写功能,停止数据

2.Slave 数量由 slave 发送 REPLCONFACK 命令做确认

3.Slave 延迟3.由 slave 发送 REPLCONFACK 命令做确认

 

三,主从复制工作流程(完整)

以下为数字大小作为流程的顺序

1.master 方面流程

(1).发送命令:ping

(2).接收命令,判定 offset 是否在复制缓冲区中

(3).①如果不在缓冲区,执行全量复制

②如果在缓冲区,且 offset  offset 相同,忽略

③如果在缓冲区,且 offset  offset 不相同

发送 +CONTINUE offset

通过 socket 发送复制缓冲区中 offset  offset 的数据

2.slave 方面流程

(1).发送命令:replconfack offset

(4).收到+CONTINUE 保存 

master  offset

接收信息后,执行 bgrewriteaof,恢复数据

注意:master 部分的如果不在缓冲区,执行全量复制为全量复制。Slave 部分的发送命令与收到+CONTINUE 保存masteroffset,接收信息后,执行 bgrewriteaof,恢复数据部分为命令传播阶段。

相关文章
交流电路理论:峰值、平均值和RMS值的计算公式
除了频率和周期之外,AC 波形的一个关键属性是振幅,它表示交变波形的最大值,或者更广为人知的是峰值。
12896 1
交流电路理论:峰值、平均值和RMS值的计算公式
|
缓存 安全 编译器
【C语言】volatile 关键字详解
`volatile` 关键字在 C 语言中用于防止编译器对某些变量进行优化,确保每次访问该变量时都直接从内存中读取最新的值。它主要用于处理硬件寄存器和多线程中的共享变量。然而,`volatile` 不保证操作的原子性和顺序,因此在多线程环境中,仍然需要适当的同步机制来确保线程安全。
722 2
|
存储 C语言
【C语言】typedef 关键字详解
`typedef` 关键字在C语言中用于定义现有数据类型的别名,提高代码的可读性和可维护性。它常用于简化复杂数据类型、定义函数指针类型以及处理联合体和枚举类型。掌握 `typedef` 的用法可以使你的代码更加清晰和易于管理。
605 1
|
存储 C语言
C语言:普通局部变量、普通全局变量、静态局部变量、静态全局变量的区别
C语言中,普通局部变量在函数内部定义,作用域仅限于该函数;普通全局变量在所有函数外部定义,作用域为整个文件;静态局部变量在函数内部定义但生命周期为整个程序运行期;静态全局变量在所有函数外部定义,但仅在定义它的文件内可见。
936 10
|
移动开发 监控 网络协议
视频流传输协议
视频流传输协议
528 0
|
监控 数据中心 网络架构
|
C语言
C语言结构体赋值的四种方式
本文总结了C语言结构体的四种赋值方式,并通过示例代码和编译运行结果展示了每种方式的特点和效果。
1550 6
【琐琐碎碎小知识】Keil5编译时候出现 Error: L6200E: Symbol HAL_MspDeInit multiply defined事故处理
【琐琐碎碎小知识】Keil5编译时候出现 Error: L6200E: Symbol HAL_MspDeInit multiply defined事故处理
2919 0
【琐琐碎碎小知识】Keil5编译时候出现 Error: L6200E: Symbol HAL_MspDeInit multiply defined事故处理
|
人工智能 大数据 区块链
世纪证券王育峰: 证券公司产品与业务创新应多关注微创新 | 阿里CIO学院名人堂
12月10日-12日,世纪证券CIO王育峰受邀参加了由阿里CIO学院举办作为第45期走进阿里活动,为期两天的交流使他直观地学习了阿里巴巴有关数字化转型的理念和最佳实践。
世纪证券王育峰: 证券公司产品与业务创新应多关注微创新  | 阿里CIO学院名人堂