您的位置:首页 > 数据库 > Redis

Redis的主从复制

2017-12-18 21:20 218 查看

什么是主从复制

持久化保证了即使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,从而保证数据的一致;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: