redis在搭建时会碰到的问题:1.再同一台机器上你要用不用的端口实现主从复制,你ip用的是回环网络 从服务器设置ip时也是回环网络而要是在不同的服务器上实现主从复制,因为你用的是真实Ip网段必须是在同一段落里。
2.权限验证:redis默认是没有密码的为了数据库的安全你希望外来的数据都是经过身份验证的,所以要设置密码你主配置文件设置了密码从配置文件就必须也要设置跟主配置文件一样的密码,从服务器在连接主服务器时才能验证成功,不然主服务器会拒绝从服务器的连接从服务器会不停尝试连接主服务器直至主从复制超时,导致失败。
3.在主从复制过程中如果主机突然宕机那从服务器是什么状态,里面的数据是否还会有:
127.0.0.1:6379> SHUTDOWN
not connected> exit
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
这是主服务器宕机后从服务器的状态以及查询出里面的数据
127.0.0.1:6381> keys *
1) "v5"
2) "v1"
3) "v6"
4) "v2"
5) "v3"
现在从服务器是静默的状态,主从复制的关系还是存在的,从
服务器在默默等待主服务器修好后重新启动复制
接下来咱们把主服务器重新启动,并在里面在输入几个键值,看看从服务器可以获取吗
127.0.0.1:6379> set m7 36
OK
127.0.0.1:6379> set m8 54
OK
127.0.0.1:6381> get m7
"36"
127.0.0.1:6381> get m8
"54"
原理:虽然主服务器当机了,不过他们的关系是不会变的 从服务器会默默地等待主服务器修好后重新上线继续执行之前的主从关系并同步主服务器中最新的数据而不是在主服务器宕机后取而代之 。
从服务器宕机后要如何修复:修复从服务器出现的问题重新启动从服务器,不过现在它的身份就不是slave了而是master你需要重新执行之前从服务器连接主服务器的命令以便让它重新成为slave(每宕机一次都要重新执行),除非你在配置文件中写入改配置让redis启动时就执行读取主从复制的关系
127.0.0.1:6382> SHUTDOWN
not connected> exit
[root@sanmao ~]# redis-server /usr/local/myredis/redis6382.conf
[root@sanmao ~]# redis-cli -p 6382 -a 666666
127.0.0.1:6382> info replication
# Replication
role:master
connected_slaves:0
master_replid:1d29bfcd6a0319609f8f11de391efddac45ba396
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:214376
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0