1.原理:
1.1 复制过程
过程:
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并将保存期间接收到的命令缓存起来
3:当快照完成后,redis会将快照文件和所有缓存的命令发送给从数据库。
4:从数据库收到后,会载入快照文件并执行收到的缓存的命令。
1.2 数据同步
1.2.1全量复制
Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下:
- 从服务器连接主服务器,发送SYNC命令;
- 主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令;
- 主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令;
- 从服务器收到快照文件后丢弃所有旧数据,载入收到的快照;
- 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令;
- 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;
1.2.2部分不知
Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。
1.3 心跳
主从节点再建立复制后,他们之间维护着长连接并彼此发送心跳命令。
作用:
1.实时监测主从节点网络状态
2.上报自身复制偏移量,检查复制数据是否丢失,如果从节点数据丢失,则从主节点的复制缓冲区中拉取丢失数据
3实现保证从节点的数量和延迟性功能
2. 配置
Redis主从结构支持一主多从
主节点:192.168.33.130
从节点:192.168.33.131,所有从节点的配置都一样
方式一:修改配置文件
修改从节点中redis的配置文件中的slaveof属性
slaveof 192.168.33.130 6379
配置效果图示:
1、192.168.33.130主机:启动130主节点上面的redis,查看redis的info信息
2、192.168.33.131主机:启动131从节点上面的redis,查看redis的info信息
方式二:动态设置
通过redis-cli 连接到从节点服务器,执行下面命令即可。
slaveof 192.168.33.130 6379
演示结果和手动方式一致。