redis实现主从复制

redis主从复制,实现读写分离

redis基于主从复制实现哨兵机制

redis-cluster多主多从高可用集群搭建

概述

redis的复制功能是支持多个数据库之间的数据同步。一类是主数据库(master)一类是从数据库(slave),主数据库可以进行读写操作,当发生写操作的时候自动将数据同步到从数据库,而从数据库一般是只读的,并接收主数据库同步过来的数据,一个主数据库可以有多个从数据库,而一个从数据库只能有一个主数据库

为什么需要主从复制呢?

从以下三点说明:

  1. redis单机一旦故障,可用通过从服务器上进行恢复数据;

  2. redis要达到高可用、高并发,只有单个redis是不够的,单个redis也就只能支持几万的QPS,所以必须以集群的形式提供服务,而集群中又以多个主从组成。

  3. 主从是以多个redis集合在一起,以一个master多个slave为模式对外提供服务,master主要以写为主,slave提供读,即是读写分离的情况,以读多写少为准。比如电商网站中的商品,读的多,写的少。

如果上面三点还不懂,没关系,我说明一下 单机redis 的问题:

  • 机器故障

  • 容量瓶颈

  • QPS瓶颈

主从复制过程:见下图

在这里插入图片描述

实现

首先三台服务器上装上三个redis

可以参考 redis安装

主机说明 ip 端口
master 192.168.130.129 6379
slave 192.168.130.130 6379
slave 192.168.130.131 6379

三台的配置一定要改,密码最好都改一样的

  • 注释掉只允许本地访问

在这里插入图片描述

  • 配置redis为后台启动

将daemonize no 改成daemonize yes

  • 修改密码

    requirepass 123456

修改slave服务器的配置

修改192.168.130.130和192.168.130.131的redis.conf

#指向主服务器的地址
slaveof 192.168.130.129  6379  
#主redis服务器配置了密码,则需要配置
masterauth 123456 

关闭防火墙

service iptables stop

启动

启动三台redis先启动主redis再启动从redis

效果

master redis

  • 写入一条数据
    set name 111
  • 读取
    get name 返回111
  • 获取节点信息
    info
    可以在返回信息里看到节点为master

slave redis

  • 读取
    get name返回111
  • 写入
    set name 111 失败
  • 获取节点信息
    info
    可以在返回信息里看到节点为slave

slave只能读不能写,master可以写也可以读

问题

如果master宕机后,如何保证redis高可用?

redis实现哨兵机制Sentinel,当master宕机后,哨兵在slave中选举新的master,之前的master重启后,会变成slave。

redis实现哨兵机制

猜你喜欢

转载自blog.csdn.net/wota5037/article/details/111885177