Redis主从复制
2024-02-23 15:09:21 1 举报
Redis主从复制是一种用于数据备份、容灾恢复和提高性能的技术。在Redis主从复制中,一个主服务器(Master)负责处理写操作,而一个或多个从服务器(Slave)则负责处理读操作。通过这种方式,可以分担主服务器的负载,提高系统的整体性能。此外,当主服务器出现故障时,从服务器可以接管服务,保证系统的稳定性和可用性。在配置主从复制时,需要将从服务器连接到主服务器,并配置相关的复制参数。之后,从服务器将自动同步主服务器的数据,并在主服务器更新数据时进行更新。
作者其他创作
大纲/内容
主线程指令写入
是否部分全量
清除从RDB文件加载主RDB文件
在master生成rdb文件期间,会接收新的指令,这些新的指令会保存在一个内存区间,这个内存区间就是replication_buffer。
指令同步阶段同步最新offerset
同步时新指令写入内存
PSYNC replid offerset
REPLICAOF <ip> <port>
Redis内存
同步RDB文件和offerset
PSYNC是Redis中用于复制的一种命令,是主从同步协议。PSYNC命令可以替代SYNC命令,为Redis主从复制提供了部分复制的能力。PSYNC命令的格式是:PSYNC<runid><offset>,其中runid是主服务器ID,offset是从服务器最后接收命令的偏移量,4.0后用PSYNC<replid><offset>。PSYNC命令在Redis中用于实现部分同步功能,提供了比SYNC命令更灵活的数据同步方式。
Slave服务
持久化
重写机制由于AOF是追加的形式,所以文件会越来越大,越大的话,数据加载越慢。所以我们需要对AOF文件进行重写。4.0之后,在重写的时候是采用RDB的方式去生成新的AOF文件,然后后续追加的指令,还是以指令追加的形式追加的文件末尾。需要开启aof-use-rdb-preamble yes #是否开启RDB与AOF混合模式重写触发机制auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb 例如:在aof文件小于64mb的时候不进行重写,当到达64mb的时候,就重写一次。重写后的aof文件可能是40mb。上面配置了auto-aof-rewrite-percentage为100,即aof文件到了80mb的时候,进行重写。
自动/手动触发
redis slave指令
Master服务
bgSave生成RDB文件
偏移量是否匹配
增量数据和offerset
指令存入该空间有大小限制,超过覆盖。
PSYNC同步协议
FULLRESYNC {replid} {offset}部分
是否全量
同步指令PSYNC2 replid offerset
bgsave生成RDB文件
如果回复+CONTINUE,从节点将触发部分复制流程。
Redis的replicationCron方法是用于执行复制任务的定时任务,它每秒调用一次。这个方法主要负责与主节点建立连接、同步数据以及处理复制相关的其他任务。一旦从节点成为主节点的客户端,它会发送PING命令进行首次请求,检查Socket连接是否可用以及主节点当前是否能够处理请求。如果返回结果为PONG,说明Socket连接正常且主节点可以处理请求,复制过程将继续进行。font color=\"#e74f4c\
replication_buffer(内存区间)
部分同步slave,如果slave网络断开从backlog_buffer同步。
RDB磁盘文件
将新产生的数据和offerset同步slave
replication_backlog_buffer缓存区它是一个固定长度的FIFO(先进先出)队列,大小由配置参数repl-backlog-size指定,默认大小为1MB。如果缓存区已满,新产生的指令会覆盖缓存区内的指令。
否
判断是否全量:1、判断 replid(数据集的标记),master与slave是否一致,否直接全量。2、如果replid一致,则判断 offerset(偏移量)是否一致,否直接全量。一致则判断 replication_backlog_buffer 中是否存在相差数据,存在则 增量,无则全量。
是
指令存入
replication_backlog_buffer(积压缓存)
新AOF文件
PSYNC replid offerset(部分全量)
ServerCron定时任务
全量模式RDB
磁盘交互策略appendfsync always 表示每次写入都执行fsync(刷新)函数 性能会非常慢但是非常安全appendfsync everysec 每秒执行一次fsync函数 可能丢失1s的数据appendfsync no 由操作系统保证数据同步到磁盘,速度最快只需要交给操作系统就行
REPLICAOF保持连接复制进度命令
增量模式AOF
ServerCron发起replicationCron同步方法
重写机制
同步Slave时产生新的指令
replicationCron方法
将新数据和offerset同步slave
将AOP文件和offerset同步slave
如果回复+FULLRESYNC {runid} {offset},那么从节点将触发全量复制流程。
FULLRESYNC {runid} {offset}全量
混合模式AOP+RDB
redis set指令
AOF磁盘文件
AOP文件
AOF+RDB(磁盘)
0 条评论
回复 删除
下一页