书接前文,服务器的使用和安排请参考本主题的第一篇,点击这里
零:原理简介
redis的主从原理:
1:是由从发起的,定时从“主”redis去获取rdb快照的行为。主是被动接受方。
2:“主”可以通过设置密码和ip等方法,来限制连接到它上面的“从”redis。同时“主”可以感知有谁连接到子级上面。
演进思想:
1:主redis是否打开RDB或AOF,对“从”无干扰。因此,“从”也可以开启持久化方案的相关配置。
2:“从”有两种与“主”关联的方式。
其一就是在“从”的配置文件中指明“主”的ip和密码;
其二就是通过redis-cli 连接到从节点服务器,执行下面命令即可。
slaveof 192.168.122.21 6379
一:配置文件
主从环境中,仅修改从Redis的配置文件(redis.conf)的以下几方面即可。
需要注意的是,“主”redis中不需要配置slaveof和masterauth参数,切切
bind 192.168.122.23 #当前主从服务器的具体ip
slaveof 192.168.122.21 6379 #格式为 slaveof <mastip> <mastport>
masterauth xx_1234 #若主redis需要密码的时候,开启当前配置
slave-read-only yes #设置slave为只读模式
requirepass xx_1234 #格式为 requirepass xxxx
#从redis的RDB和AOF相关配置可以开启,这样当主redis挂掉之后,便于“从”redis接手
二:启动
顺序启动主、从redis服务器。然后通过info replication指令分别查看状态
[root@xxCentos7One src]# ./redis-cli -h 192.168.122.21 -p 6379 -a xx_1234 info replication
主redis
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.122.22,port=6379,state=online,offset=168,lag=1
slave1:ip=192.168.122.23,port=6379,state=online,offset=168,lag=1
master_replid:e09357ff3c969c4d870a14a90263c2540de7bf57
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:168
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:168
从redis
# Replication
role:slave
master_host:192.168.122.21
master_port:6379
master_link_status:up
master_last_io_seconds_ago:6
master_sync_in_progress:0
slave_repl_offset:224
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:e09357ff3c969c4d870a14a90263c2540de7bf57
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:224
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:224
几个主从之间重要的同步正常表征参数如下
master_link_status:up
master_repl_offset和slave_repl_offset相等,
master_last_io_seconds_ago在10秒内。
三:监控
redis通过“ping”的方式来监控从与主之间的联通状况。
可以在“从”redis上面执行monitor命令来进行监控
#122.22与主之间的联通情况
192.168.122.22:6379> monitor
OK
1565313753.955892 [0 192.168.122.21:6379] "PING"
1565313764.116796 [0 192.168.122.21:6379] "PING"
1565313774.279987 [0 192.168.122.21:6379] "PING"
#122.23与主之间的联通情况
192.168.122.23:6379> monitor
OK
1565313753.958438 [0 192.168.122.21:6379] "PING"
1565313764.119312 [0 192.168.122.21:6379] "PING"
1565313774.282528 [0 192.168.122.21:6379] "PING"
其实,关于监控和通知等的内容,会在我们的下一步的sentinel中介绍。
小插曲
我直接执行下面的命令时,报错"NOAUTH Authentication required"
[root@xxCentos7One src]# ./redis-cli -h 192.168.122.21 -p 6379 info replication
NOAUTH Authentication required.
其原因在于,我设置了密码。正确的方式应该如下操作。即:将密码加在“info”指令之前
[root@xxCentos7One src]# ./redis-cli -h 192.168.122.21 -p 6379 -a xx_1234 info replication