赞
踩
SLAVEOF <master_ip> <master_port>
- struct redisServer {
- // ...
- //主服务器的地址
- char *masterhost;
- //主服务器的端口
- int masterport;
- // ...
- };
从服务器在身份验证阶段可能遇到的情况有以下几种:
- ①如果主服务器没有设置requirepass选项,并且从服务器也没有设置masterauth选项,那 么主服务器将继续执行从服务器发送的命令,复制工作可以继续进行
- ②如果从服务器通过AUTH命令发送的密码和主服务器requirepass选项所设置的密码相同,那么主服务器将继续执行从服务器发送的命令,复制工作可以继续进行。与此相反,如 果主从服务器设置的密码不相同,那么主服务器将返回一个invalid password错误
- ③如果主服务器设置了requirepass选项,但从服务器却没有设置masterauth选项,那么主服务器将返回一个NOAUTH错误。另一方面,如果主服务器没有设置requirepass选项,但从服务器却设置了masterauth选项,那么主服务器将返回一个no password is set错误
- 所有错误情况都会令从服务器中止目前的复制工作,并从创建套接字开始重新执行复 制,直到身份验证通过,或者从服务器放弃执行复制为止
slave_listening_port属性
- 主服务器在接收到这个命令之后,会将端口号记录在从服务器所对应的客户端状态的slave_listening_port属性中:
typedef struct redisClient { // ... //从服务器的监听端口号 int slave_listening_port; // ... } redisClient;
- 下图展示了客户端状态设置slave_listening_port属性之后的样子:
- slave_listening_port属性目前唯一的作用就是在主服务器执行INFO replication命令时打印 出从服务器的端口号
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。