Cntos7搭建redis主从复制,并模拟故障主从切换

主从复制搭建

主机:192.168.161.179

从机:192.168.161.180

1、        安装主redis

自己本地环境,关闭防火墙。

 #sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

#setenforce 0

    #systemctl stop firewalld   

#systemctl disable firewalld

           安装相关依赖

           yum install –y gcc gcc-c++ make

下载redis4.0.2包

http://download.redis.io/releases/redis-4.0.2.tar.gz

下载好后上传至服务器,进行解压(我上传至opt目录)

centos7搭建redis主从复制,并模拟故障切换。

解压后编译安装

cd redis-4.0.2/

make PREFIX=/usr/local/redis install

centos7搭建redis主从复制,并模拟故障切换。

将redis-4.0.2目录的redis.conf sentinel.conf配置文件复制到安装目录/usr/local/redis

centos7搭建redis主从复制,并模拟故障切换。

将redis-4.0.2/src目录的redis-cli redis-sentinel redis-server复制到安装目录 /usr/local/redis/

centos7搭建redis主从复制,并模拟故障切换。

修改配置

Cd /usr/local/redis

Vim redis.conf

修改内容如下:

  将bind 127.0.0.1这一行注释掉

  将protected-mode yes改为protected-mode no

  将daemonize no改为daemonize yes

 将logfile ""改为logfile"/usr/local/redis/log/redis.log"

centos7搭建redis主从复制,并模拟故障切换。

centos7搭建redis主从复制,并模拟故障切换。

添加密码

centos7搭建redis主从复制,并模拟故障切换。

 

 

Vim sentinel.conf

将sentinel monitor mymaster 127.0.0.1 6379 2改为sentinel monitor mymaster 192.168.161.179 6379 2

添加一下几行

daemonize yes

protected-mode no

logfile "/usr/local/redis/log/sentinel.log"

centos7搭建redis主从复制,并模拟故障切换。

centos7搭建redis主从复制,并模拟故障切换。

2、配置redis从

安装的方法及路径与redis1主一样

复制redis配置文件

cp redis.conf sentinel.conf /usr/local/redis/

centos7搭建redis主从复制,并模拟故障切换。

cp redis-cli redis-sentinel redis-server /usr/local/redis/

centos7搭建redis主从复制,并模拟故障切换。

cd /usr/local/redis/

vim redis.conf

修改内容如下:

将bind 127.0.0.1注释掉

将protected-mode yes改为protected-mode no

将daemonize no改为daemonize yes

将logfile ""改为logfile " /usr/local/redis/log/redis.log "

centos7搭建redis主从复制,并模拟故障切换。

添加一行slaveof   192.168.161.179        6379   (主服务器ip)

centos7搭建redis主从复制,并模拟故障切换。

配置密码

centos7搭建redis主从复制,并模拟故障切换。

修改sentinel.conf

修改内容如下:

192.168.161,179是主服务器ip,这里是写主服务器的ip。

sentinel monitor mymaster 192.168.161.179 6379 2

daemonize yes

protected-mode no

logfile "/usr/local/redis/log/sentinel.log"

centos7搭建redis主从复制,并模拟故障切换。

centos7搭建redis主从复制,并模拟故障切换。

3、启动主机

启动主redis

./redis-cli -p 6379 -a 123456

centos7搭建redis主从复制,并模拟故障切换。

启动从redis    

./redis-cli -p 6379 -a 1234567

centos7搭建redis主从复制,并模拟故障切换。

4、测试是否可以主从复制

主机上设置一个键值对

#set a 1

centos7搭建redis主从复制,并模拟故障切换。

在从主机测试是否同步

#get a

centos7搭建redis主从复制,并模拟故障切换。

从主机测试

#set b 2  (报错因为从机是只读,OK主从已经搭建ok)

centos7搭建redis主从复制,并模拟故障切换。

日常的启动关闭主从的命令如下。

centos7搭建redis主从复制,并模拟故障切换。

主从复制搭建成功。

 

模拟故障切换,将slave切换为主

5、测试主从切换,当主(master)出现故障时将从(slave)切换成主。

模拟主挂了,关闭主

Ps –ef | grep redis

./redis-cli -p 6379 -a 123456 shutdown

centos7搭建redis主从复制,并模拟故障切换。

在从设备上关闭复制功能,并将从服务器变为主服务器,原来所得的数据集不会被丢弃。

./redis-cli -p 6379 -a 1234567 slaveof NO ONE

 centos7搭建redis主从复制,并模拟故障切换。

登陆:./redis-cli -p 6379 -a 1234567

centos7搭建redis主从复制,并模拟故障切换。

查看是否变为主:info

centos7搭建redis主从复制,并模拟故障切换。

从已经变回master,也可以写入数据

centos7搭建redis主从复制,并模拟故障切换。

出现故障时将slave(从)切换为主ok。

6、测试原来的主redis恢复正常了,恢复回去。

先将现在的主redis数据进行保存

centos7搭建redis主从复制,并模拟故障切换。

在将现在主redis根目录下的dump.rdb,文件拷贝到原来主redis的根目录,进行数据覆盖。

(我是远程拷贝过去的)

scp -P 22 dump.rdb root@192.168.161.179:/usr/local/redis/

centos7搭建redis主从复制,并模拟故障切换。

启动原来的主。

centos7搭建redis主从复制,并模拟故障切换。

在现在这个主在执行最后一步操作,就是将原来的主恢复,将现在这个主还是切换为从。

./redis-cli -p 6379 -a 1234567 slaveof 192.168. 161.179 6379

指定主服务器。

 centos7搭建redis主从复制,并模拟故障切换。

我们可以看看是否恢复原来的主,登陆原来的主查看。

登陆redis成功输入:info

centos7搭建redis主从复制,并模拟故障切换。

已经恢复到原始环境。