主机更新后根据配置和策略,自动同步到备机的master/slave机制,Master以写为主,Slave以读为主
下面我们来配置1主2从的效果,现实中是需要3台机器的,为了方便,我们就在一台机器上来演示,通过不同的端口来区分机器,3台机器的配置
角色 | 端口 |
---|---|
master(主) | 6379 |
slave1(从) | 6380 |
slave2(从) | 6381 |
创建案例工作目录:master-slave
执行下面命令创建 /opt/master-slave 目录,本次所有操作,
均在 master-slave 目录进行。
# 方便演示,停止所有的 redis
ps -ef | grep redis | awk -F" " '{print $2;}' | xargs kill -9
mkdir /opt/master-slave
cd /opt/master-slave/
cp /opt/redis-6.2.1/redis.conf /opt/master-slave/
在/opt/master-slave目录创建 redis-6379.conf 文件,内容如下,注意 192.168.200.129 是这个测试
机器的ip,大家需要替换为自己的
#redis.conf是redis原配置文件,内部包含了很多默认的配置,
#这里使用include将其引用,相当于把redis.conf内容直接贴进来了
include /opt/master-slave/redis.conf
# 后台启动模式
daemonize yes
bind 192.168.200.129
#配置密码
requirepass 123456
# 本实例工作目录
dir /opt/master-slave/
# 本实例日志文件路径
logfile /opt/master-slave/6379.log
#端口
port 6379
#rdb文件
dbfilename dump_6379.rdb
# 本实例进程号文件
pidfile /var/run/redis_6379.pid
在/opt/master-slave目录创建 redis-6380.conf 文件,内容如下,和上面master的类似,多了后面2行
include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/
port 6380
dbfilename dump_6380.rdb
pidfile /var/run/redis_6380.pid
logfile /opt/master-slave/6380.log
#用来指定主机:slaveof 主机ip 端口
slaveof 192.168.200.129 6379
#主机的密码
masterauth 123456
include /opt/master-slave/redis.conf
daemonize yes
bind 192.168.200.129
requirepass 123456
dir /opt/master-slave/
port 6381
dbfilename dump_6381.rdb
pidfile /var/run/redis_6381.pid
logfile /opt/master-slave/6381.log
#用来指定主机:slaveof 主机ip 端口
slaveof 192.168.200.129 6379
#主机的密码
masterauth 123456
redis-server /opt/master-slave/redis-6379.conf
redis-server /opt/master-slave/redis-6380.conf
redis-server /opt/master-slave/redis-6381.conf;
若启动有误,大家好好检查下配置,也可以看日志,3台机器启动会在 /opt/master-slave 目录产生日 志,如下
通过redis-cli命令连接主机,如下
redis-cli -h 192.168.200.129 -p 6379 -a 123456
通过下面命令,查看主机信息
info Replication
通过下面2个命令查询从机slave1的信息
redis-cli -h 192.168.200.129 -p 6380 -a 123456
info Replication
redis-cli -h 192.168.200.129 -p 6381 -a 123456
info Replication
在master上面执行下面2个命令
192.168.200.129:6379> flushdb
OK
192.168.200.129:6379> set name ready
OK
192.168.200.129:6379> set age 30
OK
到slave1上执行下面命令,可以看出来数据已经同步过来了
192.168.200.129:6380> mget name age
1) "ready"
2) "30"
192.168.200.129:6380>
同样到slave2上也执行一下,效果如下
192.168.200.129:6381> mget name age
1) "ready"
2) "30"
192.168.200.129:6381>
l
从挂掉后又恢复了,会继续从主同步数据么?
会的,当从重启之后,会继续将中间缺失的数据同步过来。
info Replication:查看主从复制信息
上面已经演示过了,主、从上都可以执行,用来查看主从信息。