复制是分布式redis系统中,将数据复制多个副本到其他机器,用于满足故障恢复和负载均衡需求
配置
参与复制的Redis实例划分为主节点(master)和从节点(slave)。默认 情况下,Redis都是主节点。每个从节点只能有一个主节点,而主节点可以 同时具有多个从节点。复制的数据流是单向的,只能由主节点复制到从节点。
在一台机器上有三种方法将其挂载为某个主节点的从节点:
在配置文件中加入
slaveof{masterHost}{masterPort}
,启动后生效在redis-server启动命令后加入
--slaveof{masterHost}{masterPort}
直接使用命令:
slaveof{masterHost}{masterPort}
而想断开,则在从节点执行slaveof no one
即可,断开后的节点不会抛弃原有数据
而想切换其主节点,则在从节点执行slaveof{newMasterHost}{newMasterPort}
,切换主节点会删除当前所有数据
默认情况下,从节点使用slave-read-only=yes配置为只读模式,即读写分离的实现
Redis复制的拓扑结构
支持单层、多层复制
支持一主一从、一主多从、树状主从(即多层复制)
Redis数据同步策略
包括全量复制和部分复制
全量复制:适用于初次复制场景,会将主节点数据一次性全部发给从节点,数据量大时,开销也很大
部分复制:用于处理在主从复制中因网络闪断等原因造成的数据丢失 场景,当从节点再次连上主节点后,如果条件允许,主节点会补发丢失数据给从节点。
心跳机制
主从节点建立连接后,会互相维持长连接,并发送心跳命令
master向slave发送ping命令确认连通性,slave向master发送replconf ack {offset}
命令确认复制到哪里了
评论区