|NO.Z.00035|——————————|BigDataEnd|——|Hadoop&Redis.V03|——|Redis.v03|高可用|主从复制.v03|

一、同步数据
### --- 同步数据

~~~     Redis 2.8之后分为全量同步和增量同步,具体的后面详细讲解。
### --- 命令传播

~~~     当同步数据完成后,主从服务器就会进入命令传播阶段,
~~~     主服务器只要将自己执行的写命令发送给从服务器,
~~~     而从服务器只要一直执行并接收主服务器发来的写命令。
### --- 同步数据集

~~~     Redis 2.8以前使用SYNC命令同步复制
~~~     Redis 2.8之后采用PSYNC命令替代SYNC
二、旧版本
### --- 旧版本

~~~     Redis 2.8以前
### --- 实现方式

~~~     Redis的同步功能分为同步(sync)和命令传播(command propagate)。
### --- 同步操作:

~~~     通过从服务器发送到SYNC命令给主服务器
~~~     主服务器生成RDB文件并发送给从服务器,同时发送保存所有写命令给从服务器
~~~     从服务器清空之前数据并执行解释RDB文件
~~~     保持数据一致(还需要命令传播过程才能保持一致)
~~~     # 命令传播操作:
~~~     同步操作完成后,主服务器执行写命令,该命令发送给从服务器并执行,使主从保存一致。

~~~     # 缺陷
~~~     没有全量同步和增量同步的概念,从服务器在同步时,会清空所有数据。
~~~     主从服务器断线后重复制,主服务器会重新生成RDB文件和重新记录缓冲区的所有命令,
~~~     并全量同步到从服务器上。
三、新版
### --- 新版

~~~     Redis 2.8以后
### --- 实现方式
~~~     除此之外的情况都是增量同步。

~~~     # 在Redis 2.8之后使用PSYNC命令,具备完整重同步和部分重同步模式。
~~~     Redis 的主从同步,分为全量同步和增量同步。
~~~     只有从机第一次连接上主机是全量同步。
~~~     断线重连有可能触发全量同步也有可能是增量同步( master 判断runid 是否一致)。
四、全量同步
### --- Redis 的全量同步过程主要分三个阶段:

~~~     同步快照阶段: Master 创建并发送快照RDB给Slave , Slave 载入并解析快照。
~~~     Master 同时将此阶段所产生的新的写命令存储到缓冲区。
~~~     同步写缓冲阶段: Master 向Slave 同步存储在缓冲区的写操作命令。
~~~     同步增量阶段: Master 向Slave 同步写操作命令。
五、增量同步
### --- 增量同步

~~~     Redis增量同步主要指Slave完成初始化后开始正常工作时,
~~~     Master 发生的写操作同步到Slave 的过程。
~~~     通常情况下, Master 每执行一个写命令就会向Slave 发送相同的写命令,然后Slave 接收并执行。
### --- 心跳检测
~~~     在命令传播阶段,从服务器默认会以每秒一次的频率向主服务器发送命令:
      
replconf ack <replication_offset>
#ack :应答
#replication_offset:从服务器当前的复制偏移量
### --- 主要作用有三个:

~~~     检测主从的连接状态
~~~     检测主从服务器的网络连接状态
~~~     通过向主服务器发送INFO replication命令,可以列出从服务器列表,
~~~     可以看出从最后一次向主发送命令距离现在过了多少秒。
~~~     lag的值应该在0或1之间跳动,如果超过1则说明主从之间的连接有故障。
### --- 辅助实现min-slaves

~~~     Redis可以通过配置防止主服务器在不安全的情况下执行写命令
~~~     min-slaves-to-write 3min-replicas-to-write 3 )
~~~     min-slaves-max-lag 10min-replicas-max-lag 10)
~~~     # 上面的配置表示:
~~~     从服务器的数量少于3个,或者三个从服务器的延迟(lag)值都大于或等于10秒时,
~~~     主服务器将拒绝执行写命令。这里的延迟值就是上面INFOreplication命令的lag值。
### --- 检测命令丢失

~~~     如果因为网络故障,主服务器传播给从服务器的写命令在半路丢失,
~~~     那么当从服务器向主服务器发送REPLCONF ACK命令时,
~~~     主服务器将发觉从服务器当前的复制偏移量少于自己的复制偏移量,
~~~     然后主服务器就会根据从服务器提交的复制偏移量,
~~~     在复制积压缓冲区里面找到从服务器缺少的数据,并将这些数据重新发送给从服务器。
~~~     (补发) 网络不断增量同步:网断了,再次连接时

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(20)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 分享4款.NET开源、免费、实用的商城系统
· 解决跨域问题的这6种方案,真香!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示