Redis集群-主从复制
定义:
将master中的数据及时有效的复制到各个slave节点当中 1:n 主节点只负责写数据,从节点只负责读数据无法写
作用
1.读写分离
2.负载均衡
3.故障恢复
4.数据冗余(热备份)
5.高可用
阶段
1.建立连接 :slave与master建立连接
2.数据同步:将现有的master 数据同步到slave节点上
3.命令传播:将后续master上的命令都同步到slave上
一 建立连接
step1.设置master的地址和端口保存master信息
step2.建立socket连接
step3.发送ping命令
step4.身份验证 step5.发送slave端口信息
建立连接的方式
客户端发送命令连接:slaveof master_ip master_port (master slave 都启动时)
启动slave时连接:redis-service --slaveof master_ip master_port (master启动时候连接)
改config配置文件:slaveof master_ip master_port (启动时候自动连接)
建立连接配置密码
master配置密码
配置文件中添加密码 requirepass < password >
master启动可以设置密码
config set requirepass <password>
config get requirepass
slave 设置master密码
命令 auth < password >
配置:masterauth < password >
启动命令:redis-cli-a < password >
二 数据同步
生成rdb文件从master发送到slave上进行数据同步这是全量复制,但是在复制的的过程中会出现新的命令,此时新的命令会存放在缓冲区当中,待全量复制结束后,缓冲区命令会发送到slave执行保持数据的同步,这是增量复制
step1.请求同步
step2.master创建rdb文件
step3.slave恢复rdb文件
step4.请求部分同步(增量复制)
step5.恢复部分同步
三 命令传播
增量复制 根据offset(偏移量)跟runid(每台电脑不一样) 进行复制
offset master 跟 slave都会记录 比对复制到哪里