1.从服务器保存主节点信息(IP,端口等)
Struct redisServer{
char *masterhost;//主服务器ip
int masterport;//主服务器端口
};
2.建立socket连接
slaver与master建立socket连接
slaver关联文件事件处理器 该处理器接收RDB文件(全量复制)、接收Master传播来的写命令 (增量复制)
主服务器accept从服务器Socket连接后,创建相应的客户端状态。相当于从服务器是主服务 器的Client 端。
3.发送ping命令
Slaver向Master发送ping命令:
1、检测socket的读写状态
2、检测Master能否正常处理
依据Master的响应,从服务器进行相应的处理:
1、发送“pong” , 说明正常 (则进行下一步)
2、返回错误,说明Master不正常。(断开并重连主服务器)
3、timeout,说明网络超时。 (断开并重连主服务器)
4.权限验证
主从正常连接后,进行权限验证
主未设置密码(requirepass=“”),从也不用设置密码(masterauth=“”)。