Redis的主从复制

来源:互联网 发布:盗版软件 知乎 编辑:程序博客网 时间:2024/05/21 22:34

什么是主从复制

    持久化保证了即使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.129192.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,从而保证数据的一致;

原创粉丝点击