集群的作用
- 主从备份,防止主机宕机。
- 读写分离,分担master的任务。
- 任务分离,如从服务器分别分担备份工作于计算工作。
主从复制的启动过程
- slave从服务器自动向主服务器master请求sync同步。
- master开始执行BGSAVE,并使用缓冲区记录BGSAVE之后的所有写命令。
- slave根据配置决定是继续使用现有的数据来处理客户端请求,还是发送错误命令。
- master的BGSAVE执行完毕,将快照传输给slave。
- slave丢弃所有旧数据,开始载入主服务器发来的rdb文件。
- rdb文件发送完毕,开始向slave发送存储在缓冲区中的写命令。
- slave完成对rdb文件的解释,正常接收命令请求(主服务器的写请求以及客户端的写请求)。
- 同步完成。
redis集群配置
在redis.conf
配置文件中
/*****************************************
*从服务器配置
****************************************/
//设置主服务器地址端口
slaveof <主服务器地址> <主服务器端口>
slaveof no one
//是否只读
slave-read-only yes
/******************************************
*主服务器配置
*****************************************/
不需要配置主服务器与从服务器关联。
缺陷
- 每次slave断开后(无论是主动断开还是网络故障),再次连接master都要重新进行一次主从复制的启动过程,即丢弃原来所有数据,并替换为主服务器数据。因此最好不要同时启动从服务器,可能会让主服务器超负荷。
注意
- 从服务器在进行同步时,会清空自己
所有的数据
:在进行初始连接时,从服务器会将原来的所有数据清空,并替换成主服务器发来的数据。 - 如果从服务器也有从服务器,形成了
主从链
后。从服务器X的从服务器Y的同步与主从同步的不同之处
在于:- 在从服务器X接受到了其主服务器的rdb文件并解析完毕后,将会与其从服务器Y断开连接,导致其从服务器Y重新同步。
- 不支持
主主复制
。