主从复制简介
互联网的“三高”架构:高并发、高性能、高可用。
单台redis服务器容易出现的问题:1、机器故障。2、容量瓶颈。
解决方案:可以准备多台服务器互相连通。将数据复制多个副本保存到多个服务器中,并保证数据是同步的。即便有一台服务器出现了故障,其他服务器仍然可以运行,实现高可用,同时实现数据冗余备份
主从复制即将master服务器中的数据即时、有效的复制到slave服务器中。
一个master可以有多个slave,一个slave只能由一个master。
-
master的职责:1、写数据。2、执行写操作时,将出现变化的数据同步到slave中。3、读数据(忽略)
-
slave的职责:1、读数据。2、写数据(禁止)
高可用集群
如果一台slave出现了问题,那么此时可以靠其它的slave提供服务。如果master出现了问题,那么此时临时选出一个slave当作master。如果master压力过大,也可某个slave也当作master使用,在它下面放slave。
主从复制作用
主从复制工作流程
建立连接阶段
主从连接(slave连master)
- 方式一:客户端发送命令
slaveof <masterip> <masterport>
先把配置文件的守护进程关了,把日志去掉。
启动两个服务器和两个客户端
此时用master连上6379服务器,设置一个key,在6380可以取到这个key的值
- 方式2:启动时带上参数
redis-server -slaveof <masterip> <masterport>
- 方式3:配置文件启动
slaveof <masterip> <masterport>
重新启动6380服务器
主从断开连接
//客户端发送
slaveof no one
数据同步阶段
命令传播阶段
命令传播:当master的数据库改变后,主从服务器的数据库不一致,此时需要同步到一致状态。
心跳机制
命令传播阶段中,master和slave要进行信息交换,使用心跳机制来进行维护,实现双方连接保持在线
- master心跳
指令:ping。
周期:默认10s。
作用:判断slave是否在线。 - slave心跳
指令:replconf ack{offset}。
周期:1s。
作用:1、判断master是否在线。2、告诉master自己的复制偏移量,获取数据更新指令。