频道栏目
首页 > 网络 > 云计算 > 正文

Redis的主从复制详解

2017-12-19 10:46:11         来源:刘大磊的博客  
收藏   我要投稿

什么是主从复制

持久化保证了即使redis服务重启也会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图:

这里写图片描述

主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis服务器宕机其它两台redis服务也可以继续提供服务。 主redis中的数据和从redis上的数据保持实时同步,当主redis写入数据时通过主从复制机制会复制到两个从redis服务上。 只有一个主redis,可以有多个从redis。 主从复制不会阻塞master,在同步数据时,master 可以继续处理client 请求 一个redis可以即是主又是从,如下图:

这里写图片描述

主从配置

下边提到的复制redis还是依照Redis安装的环境进行操作。

主Redis配置

无需特殊配置

从Redis配置

1.创建一个redis-jiqun文件夹

mkdir /usr/local/redis-jiqun

2.将redis复制到redis-jiqun中

cp -r /usr/local/redis /usr/local/redis-jiqun/redis01 
cp -r /usr/local/redis /usr/local/redis-jiqun/redis02 
cp -r /usr/local/redis /usr/local/redis-jiqun/redis03 

3.修改每一个redis的bin目录下的redis.conf,为了我们在客户端访问,我们将bind设置为0.0.0.0

bind 192.168.251.129 #修改为自己对应的服务器ip  
port 6380   #依次修改为 6380  6381  6382端口  
pidfile /var/run/redis_6380.pid  #依次修改为其对应的端口号  

4. 设置主从

修改redis.conf文件,这里将6380端口设置为master所以不需要做任何操作,只需要修改6380端口和6381端口就可以了

#在redis.conf配置
slaveof 192.168.1.103 6380

5.启动3个redis节点

cd /usr/local/redis-jiqun/redis01/bin &&./redis-server redis.conf  
cd /usr/local/redis-jiqun/redis02/bin &&./redis-server redis.conf  
cd /usr/local/redis-jiqun/redis03/bin &&./redis-server redis.conf 

6. 连接redis的master节点,查看主从状态

# ./redis-cli -p 6380 -h 192.168.251.129
192.168.251.129:6380> INFO replication  

这里写图片描述

7.测试主备是否好用

这里写图片描述

Redis的读写分离

根据上图可以看出slave只有读的权限,不能写,如果想要slave开启写的操作需要修改redis.conf文件

slave-read-only yes  #修改为yes 表示slave可写  

主从配置过程

1)、当从库和主库建立MS关系后,会向主数据库发送SYNC命令;

2)、主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来;

3)、当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis;

4)、从Redis接收到后,会载入快照文件并且执行收到的缓存的命令;

5)、之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致;

上一篇:Redis的持久化和配置教程
下一篇:Elasticsearch安装配置讲解
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站