一、redis的主从复制
1.下载并解压redis安装包
[root@server1 ~]# ls
redis-5.0.3.tar.gz
[root@server1 ~]# tar zxf redis-5.0.3.tar.gz
[root@server1 ~]# ls
redis-5.0.3 redis-5.0.3.tar.gz
2.安装依赖包,编译并安装
[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES deps README.md runtest-sentinel utils
BUGS INSTALL redis.conf sentinel.conf
CONTRIBUTING Makefile runtest src
COPYING MANIFESTO runtest-cluster tests
[root@server1 redis-5.0.3]# yum install gcc -y
[root@server1 redis-5.0.3]# make
[root@server1 redis-5.0.3]# make install
3.执行redis安装脚本
[root@server1 redis-5.0.3]# cd utils/
[root@server1 utils]# ls
[root@server1 utils]# ./install_server.sh
4.查看端口号
[root@server1 utils]# netstat -tnlp
5.编辑配置文件
[root@server1 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0
6.重启redis服务,并查看端口号
[root@server1 utils]# /etc/init.d/redis_6379 restart
[root@server1 utils]# netstat -tnlp
7.把编译好的redis目录发送给server2和server3
[root@server1 ~]# scp -r redis-5.0.3 server2:/root/
[root@server1 ~]# scp -r redis-5.0.3 server3:/root/
8.server2上安装redis
[root@server2 ~]# cd redis-5.0.3/
[root@server2 redis-5.0.3]# ls
00-RELEASENOTES deps README.md runtest-sentinel utils
BUGS INSTALL redis.conf sentinel.conf
CONTRIBUTING Makefile runtest src
COPYING MANIFESTO runtest-cluster tests
[root@server2 redis-5.0.3]# make install
9.server2上执行redis安装脚本
[root@server2 redis-5.0.3]# cd utils/
[root@server2 utils]# ./install_server.sh
10.server2上编辑配置文件
[root@server2 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0
slaveof 172.25.21.1 6379
11.重启服务
[root@server2 utils]# /etc/init.d/redis_6379 restart
12.server3上安装redis
[root@server3 ~]# cd redis-5.0.3/
[root@server3 redis-5.0.3]# ls
00-RELEASENOTES deps README.md runtest-sentinel utils
BUGS INSTALL redis.conf sentinel.conf
CONTRIBUTING Makefile runtest src
COPYING MANIFESTO runtest-cluster tests
[root@server3 redis-5.0.3]# make install
13.server3上执行redis安装脚本
[root@server3 redis-5.0.3]# cd utils/
[root@server3 utils]# ./install_server.sh
14.server3上编辑配置文件
[root@server3 utils]# vim /etc/redis/6379.conf
bind 0.0.0.0
slaveof 172.25.21.1 6379
15.重启服务
[root@server3 utils]# /etc/init.d/redis_6379 restart
16.测试:在server1上查看到master是server1,两个slave分别是server2和server3
17.在server1(master)上添加信息
server2和server3上可以查看到添加的信息,表示主从复制成功
注意:两个slave端不可以写,只能读
二、redis主从切换
1.server1上,将文件sentinel.conf复制到/etc/redis/
[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES deps README.md runtest-sentinel utils
BUGS INSTALL redis.conf sentinel.conf
CONTRIBUTING Makefile runtest src
COPYING MANIFESTO runtest-cluster tests
[root@server1 redis-5.0.3]# cp sentinel.conf /etc/redis/
2.切换到/etc/redis/目录下,编辑文件
[root@server1 redis-5.0.3]# cd /etc/redis/
[root@server1 redis]# ls
6379.conf sentinel.conf
[root@server1 redis]# vim sentinel.conf
protected-mode no
sentinel monitor mymaster 172.25.21.1 6379 2
sentinel down-after-milliseconds mymaster 10000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
3.将编辑好的配置文件发送给server2和server3的/etc/redis/目录下
[root@server1 redis]# scp sentinel.conf server2:/etc/redis/
sentinel.conf 100% 9710 9.5KB/s 00:00
[root@server1 redis]# scp sentinel.conf server3:/etc/redis/
sentinel.conf 100% 9710 9.5KB/s 00:00
4.查看状态,server1上可以查看到两个slave分别是server2和server3
在server2和server3上查看到master为server1
5.测试:三台虚拟机执行监控命令(哨兵),并打入后台
[root@server1 ~]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server2 ~]# redis-server /etc/redis/sentinel.conf --sentinel
[root@server3 ~]# redis-server /etc/redis/sentinel.conf --sentinel
6.宕掉server1(master)监控命令显示master从server1转换到server3上
在server3上查看,显示是matser状态,有一个slave是server2
在server2上查看显示slave状态,master为server3