Redis 主从复制

Redis 复制的原理和优化

1.什么是主从复制

单机问题
机器故障(高可用问题)、容量瓶颈、QPS瓶颈(分布式问题)
一主多从
redis(master)–>复制–>redis(slave)
主结点的更新讲同步到从结点
作用:为数据提供多个副本 扩展读性能
总结:
一个master 可以有多个slave
一个slave 只能有一个master
数据流向是单向的,master 到 slave

2.主从复制的配置

1.命令实现
slaveof masterIP:port #主从复制不再同一机器上(异步操作)
salveof no one #取消复制,同步的数据没有清楚
2. 修改配置
port
dir
dbfilename
logfile
pidfile #进程名字
slaveof ip port #配置从节点对应的主节点
redis-cli
info replication #查看主从节点属性

方式命令配置
优点无需重启统一配置
缺点不便于管理需要重启
3.全量复制和部分复制

run_id #每个redis 启动随机一个
master_repl_offset(偏移量) #判断主从是否一致

1.全量赋值:

1.当前状态同步给slave.
2.在此期间写入的命令会记录起来 ,rdb加载完以后,通过偏移量对比,将值同步给从节点

流程如下:
slave :psync ? -1
master: {runID}{offset}
slave:save masterInfo
master: bgsave
master:sendRDB
master:send buffer #在备份RDB期间,所生成的数据
slave:flush old data #删除旧的数据
slave:load RDB #内存中加载

当一个从数据库启动后,会向主数据库发送SYNC命令,同时主数据库收到SYNC命令后会开始在后台保存快照(即RDB持久化的过程)并在保存快照期间将收到的命令缓存起来,当快照完成后,Redis 会将快照文件和所有缓存的命令一起发给从数据库.从数据库收到后,会载入快照文件并执行收到的缓存命令,以上过程成为复制初始化.复制初始化结束后,主数据库每当收到写命令时就会将命令同步给从数据库.从而保障主从数据库数据库一致.

2.全量赋值的开销
bgsave 时间
RDB 文件网络传输时间
从节点情况时间
加载RDB时间
可能的AOF重写

3.部分复制
发生抖动时候,再连接时候。
slave:connection lost #发生抖动
master:write–sendbuffer–>repl_back-buffer #复制缓存区
slave:connection to master
salve:pysnc{offset}{runID} #将自己当前的offset 告诉主节点
master:Continue
master:send partial data

1.主数据库会判断从数据库传送过来的运行ID 是否和自己相等
2.判断从数据库最后同步成功的命令偏移量是否在挤压队列中,如果在则可以进行增量复制,否则全部同步。

4.故障处理

主从复制结构中:
slave 故障(宕机):client 连接到另一个slave
master故障:选择新master(slaveof no one) slave选择新master

需要高可用:发生故障时候,不需要手动操作,故障自动转移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值