redis主从复制

一.安装redis

安装依赖类库

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl

下载redis
http://download.redis.io/releases/

安装redis

mkdir -p /usr/local/src/redis
cd /usr/local/src/redis
rz 上传
tar -xvf redis-3.0.2.tar.gz 
cd redis-3.0.2
make
make test #这个就不要执行了,需要很长时间
make install
cp redis.conf /etc/
vi /etc/redis.conf
# 修改如下,默认为no
daemonize yes
#启动
redis-server /etc/redis.conf
#测试
redis-cli

二.主从复制的好处有2点:

1、避免redis单点故障
2.构建读写分离架构,满足读多写少的应用场景
3.主从架构

主从安装redis(这里以一台机器作为实验)

1.创建6379、6380、6381目录,分别将安装目录下的redis.conf拷贝到这三个目录下。

cd /root
mkdir redis && cd redis
mkdir 6379 6380 6381
cp /etc/redis.conf 6379/
cp /etc/redis.conf 6380/
cp /etc/redis.conf 6381/

2.修改6380 6381 redis.conf文件

port 6380
pidfile /var/run/redis-6380.pid

port 6381
pidfile /var/run/redis-6381.pid

3.关掉“一”中redis服务

ps -ef|grep reids
kill -9 pid

4.分别启动/root/redis中6379,6380,6381配置

cd /root/reids
cd 6379 redis-server && ./redis.conf && cd ..
cd 6380 redis-server && ./redis.conf && cd ..
cd 6381 redis-server && ./redis.conf && cd ..
ps -ef|grep reids #查看是否启动

5.设置主从

在redis中设置主从有2种方式:
1、在redis.conf中设置slaveof`
slaveof <masterip> <masterport>
2、使用redis-cli客户端连接到redis服务,执行slaveof命令`
slaveof <masterip> <masterport>`
主从关系搭建成功会产生一个dump.rdb文件
例如:
redis-cli -p 6380 #连接到6380
slaveof 127.0.0.1 6379
redis-cli -p 6379 #链接到6379主reids
set cary 'cary'
reids-cli -p 6380
get cary #检验是否能够查到数据

第二种方式在重启后将失去主从复制关系

6.查看主从信息

执行 INFO replication  #在主库和从库中都可以执行

role:角色
connected_slaves:从库数量
slave0:从库信息

四.哨兵配置

接下来开始配置哨兵。建立一个配置文件sentinel.conf,内容为:

cd /root/6379/
vim sentinel.conf
添加:
sentinel monitor mymaster 127.0.0.1 6379 1  
启动哨兵
redis-sentinel /root/redis/6379/sentinel.conf  

命令号输出

13283:X 17 Jan 06:49:21.139 # +monitor master mymaster 127.0.0.1 6379 quorum 1

13283:X 17 Jan 06:49:21.155 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379

13283:X 17 Jan 06:49:21.159 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379

其中”+slave”表示新发现了从库,可见哨兵成功地发现了两个从库

现在哨兵已经在监控这3个Redis实例了,这时将从库关闭(杀死进程或使用 shutdown 命令),等待指定时间后(可配置,默认为 30 秒),哨兵会输出如下内容

13283:X 17 Jan 06:50:41.440 # +sdown slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379

原文地址:https://www.cnblogs.com/weiguo21/p/5762206.html