赞
踩
将一台redis服务器的数据,复制到其他的redis服务器,前者称为主节点,后者称为从节点,数据的复制是单向的,只能由主节点复制到从节点。
默认情况下,每台redis服务器都是主节点,一个主节点可以有多个从节点(或者没有),但一个从节点只能有一个主节点。
数据冗余 : 主从复制实现了数据的热备份(热备份是系统处于正常运转状态下的备份。),是持久化之外的一种数据冗余方式。
故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务的冗余。
负载均衡:在主从复制的基础上,配合读写分离,主节点提供写服务,从节点提供读服务,(写redis数据时应用连接主节点,读redis数据时应用连接从节点),分担服务器负载,尤其是在写少读多的情况下,通过多个从节点担读负载,可以大大提高redis服务器的并发量。
高可用基石: 主从复制还是哨兵和集群能够实施的基础,因此说主从复制是redis 高可用的基础。
冷备份是指 数据库关闭之后备份所有关键性文件。
1、主节点保持原样无需配置
2、从节点三种配置方案
从节点开启主从复制有三种方式
→ 配置文件
在从服务器的配置文件中加入 :slaveof<masterip><masterport>
→启动命令
redis-server启动命令后加入 --slaveof<masterip><masterport>
→客户端命令
redis 服务器启动后,直接通过客户端执行命令 slaveof<masterip><masterport>,则该redis实例成为从节点。
3、两个节点开始启动
4、从节点主动连接主节点
slaveof 127.0.0.1 6379
输入info 查看结果
5、断开连接,结束复制
slaveof no one
大致分为3个阶段 :连接建立→数据同步→命令传播
连接建立阶段(准备阶段)
1、保存主节点信息
主从节点之间建立连接,为数据同步做好准备
从节点服务器内部维护了masterhost 和masterport 字段,用于存储主节点的ip和port 信息,从节点完成主节点ip和port的保存后,向发送slaveof命令的客户端直接返回OK,实际的复制操作在这之后才开始进行。
2、建立socket连接
从节点每秒1次调用复制定时函数replicationCron() ,如果发现了有主节点可以连接,便会根据主节点的ip和port ,创建socket连接,如果连接成功,则:
从节点: 为该socket 建立一个专门处理复制工作的文件事件处理器,负责后续的复制工作,如接收rdb文件、接收命令传播等。
主节点: 接收到从节点的socket连接后(accept),为该socket创建相应的客户端状态,并将从节点看作是连接到主节点的一个客户端,后面的步骤会以从节点向主节点发送命令请求的形式来进行。
3、发送ping命令
从节点成为主节点的客户端之后,发送ping命令进行首次请求,目的是: 检查socket 连接是否可用,以及主节点当前是否能够处理请求。
从节点发送ping命令后,可能会出现3种情况:
1、返回pong :说明socket连接正常,且主节点当前可以处理请求,复制过程继续。
2、超时:一定时间后从节点仍未收到主节点的回复,说明socket连接不可用,则从节点断开socket连接,并重连。
3、返回pong 以外的结果:如果主节点返回其他结果,如正在处理超时运行的脚本,说明主节点当前无法处理命令,则从节点断开socket连接,并重连。
4、身份验证
如果从节点设置了masterauth选项,则从节点需要向主节点进行身份验证;没有设置该选项,则不需要验证,从节点进行身份验证是通过向主节点发送auth命令进行的,auth命令的参数为配置文件的masterauth的值。
如果主节点设置密码的状态,与从节点masterauth的状态一致(一致是指都存在,且密码相同,或者都不存在),则身份验证通过,复制过程继续;如果不一致,则从节点断开socket连接,并重连!
5、发送从节点端口信息
身份验证之后,从节点会向主节点发送其监听的端口号,主节点将该信息保存到该从节点对应的客户端slave_listening_port中,该端口信息除了在主节点中执行info replication时显示以外,没有其他作用。
数据同步阶段
从节点向主节点发送psync命令(redis2.8以前时sync命令),开始同步。
根据主从节点当前状态的不同,分为全量复制和部分复制。
在数据同步阶段以前,从节点是主节点的客户端,主节点不是从节点的客户端;到这这一阶段及以后,主从节点互为客户端。 在此之前,主节点只需要响应从节点的请求即可,不需要主动发请求,而在后面阶段,主节点需要主动向从节点发送请求,才能完成复制。
命令传播阶段
主节点将自己执行的写命令发送给从节点,从节点接收命令并执行,从而保证主从节点数据的一致性.
主从节点还维持着心跳机制:PING和 REPLCONFACK
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。