Redis的主从复制与故障切换

安装包:

redis-5.0.3.tar.gz

点击此处即可下载redis

实验环境:

server1  172.25.66.1    master
server2  172.25.66.2    slave
server3  172.25.66.3    slave

1.redis主从复制

配置主结点:(server1)

1.下载redis并解压

#1.在官网上下载redis
[root@server1 ~]# ls
redis-5.0.3.tar.gz
#2.解压
[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
#1.安装依赖包
[root@server1 redis-5.0.3]# yum install -y gcc
#2.编译与安装
[root@server1 redis-5.0.3]# make && make install

在这里插入图片描述
3.执行脚本启动redis

[root@server1 redis-5.0.3]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@server1 redis-5.0.3]# cd utils/
#直接回车即可
[root@server1 utils]# ./install_server.sh 

在这里插入图片描述

#查看端口
[root@server1 utils]# netstat -antlp

在这里插入图片描述
4.更改配置文件

[root@server1 utils]# vim /etc/redis/6379.conf 
#####################
bind 0.0.0.0
protected-mode no    #是否开启保护模式,默认开启,最好设置为关闭

在这里插入图片描述
在这里插入图片描述

5.重启redis

[root@server1 ~]# systemctl restart redis_6379

配置从结点:

在server2上:

1.下载并解压redis

[root@server2 ~]# ls
redis-5.0.3.tar.gz
[root@server2 ~]# tar zxf redis-5.0.3.tar.gz 
[root@server2 ~]# ls
redis-5.0.3  redis-5.0.3.tar.gz

2.源码编译

[root@server2 ~]# cd redis-5.0.3
[root@server2 redis-5.0.3]# yum install -y gcc
[root@server2 redis-5.0.3]# make && make install

在这里插入图片描述
3.执行脚本启动redis

[root@server2 redis-5.0.3]# cd utils/
[root@server2 utils]# ./install_server.sh 

在这里插入图片描述

#查看端口
[root@server2 utils]#  netstat -antlp

在这里插入图片描述
4.更改配置文件

[root@server2 utils]#  vim /etc/redis/6379.conf 
#####################
bind 0.0.0.0
protected-mode no
slaveof 172.25.66.1 6379      #master端的ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.重启redis

[root@server2~]# systemctl restart redis_6379

在server3上:(操作完全同server2结点)

1.下载并解压redis

[root@server3 ~]# ls
redis-5.0.3.tar.gz
[root@server3 ~]# tar zxf redis-5.0.3.tar.gz 
[root@server3 ~]# ls
redis-5.0.3  redis-5.0.3.tar.gz

2.源码编译

[root@server3 ~]# cd redis-5.0.3
[root@server3 redis-5.0.3]# yum install -y gcc
[root@server3 redis-5.0.3]# make && make install

在这里插入图片描述
3.执行脚本启动redis

[root@server3 utils]# ./install_server.sh 

在这里插入图片描述
4.更改配置文件

[root@server3 utils]# vim /etc/redis/6379.conf 
#####################
bind 0.0.0.0
protected-mode no
slaveof 172.25.66.1 6379   #master端的ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.重启redis

[root@server3 ~]# systemctl restart redis_6379

测试:

在master端插入数据

[root@server1 ~]# redis-cli 
127.0.0.1:6379> set name westos
OK

在这里插入图片描述
在slave端查看数据,发现数据同步

[root@server2 ~]# redis-cli 
127.0.0.1:6379> get name
"westos"

在这里插入图片描述

[root@server3 ~]# redis-cli 
127.0.0.1:6379> get name
"westos"

在这里插入图片描述

2.redis故障切换

1.更改配置文件

[root@server1 ~]# cd redis-5.0.3
[root@server1 redis-5.0.3]# ls
00-RELEASENOTES  COPYING  Makefile   redis.conf       runtest-sentinel  tests
BUGS             deps     MANIFESTO  runtest          sentinel.conf     utils
CONTRIBUTING     INSTALL  README.md  runtest-cluster  src
[root@server1 redis-5.0.3]# cp sentinel.conf /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.66.1 6379 2

在这里插入图片描述
在这里插入图片描述

[root@server1 redis]# scp sentinel.conf server2:/etc/redis
[root@server1 redis]# scp sentinel.conf server3:/etc/redis

2.监控

#监控;一直连接不断开
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述
在这里插入图片描述
测试:

再连接一个server1结点,查看结点信息

[root@server1 ~]# redis-cli 
#查看信息;发现此时master是server1结点,slave是server2和server3结点
127.0.0.1:6379> info

在这里插入图片描述
模拟server1结点(master)宕机:

[root@server1 ~]# redis-cli
127.0.0.1:6379> shutdown

监控发现,当server1结点(master)宕机后,server3接管master

#监控
[root@server1 redis]# redis-server /etc/redis/sentinel.conf --sentinel

在这里插入图片描述
在server3上:查看结点信息,发现确实是server3切换为master,此时只有一个slave,即server2结点。

[root@server3 ~]# redis-cli 
#查看信息
127.0.0.1:6379> info

在这里插入图片描述重新启动server1结点的redis:

[root@server1 ~]# systemctl start redis_6379
[root@server1 ~]# systemctl restart redis_6379
#状态必须为running视为开启成功
[root@server1 ~]# systemctl status redis_6379

在这里插入图片描述
发现此时server1结点切换为slave

[root@server1 ~]# redis-cli 
127.0.0.1:6379> info

在这里插入图片描述
此时查看配置文件,发现文件内容发生了变更

[root@server1 redis]# vim sentinel.conf 

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/lilygg/article/details/87971077