Redis主从复制
1.概念
主从复制,是指将一台Redis服务器的数据复制到其他的redis服务器上。前者为主节点master,后者为从节点slave,数据的复制是单向的,由主节点复制到从节点(主节点复制写操作为主,从节点只能进行读操作)。
默认情况下,每台Redis服务器都是主节点,一个主节点可以有0个或者多个从节点,但是每个从节点只能有一个主节点。
2.作用
数据备份:主从复制实现了数据的热备份。
故障恢复:主节点故障时,从节点可以替代主节点提供服务。
负载均衡:在主从复制的基础上,配合读写分离,由主节点进行写操作,从节点进行读操作,分担服务器的负载;主要作用于多读少写的场景下,通过多个从节点分担负载,提供并发量。
高可用基石:主从复制还是哨兵和集群能够实施的基础。
3.配置
一主二从配置
Redis主从复制只需要配置从机就可以,主要分为两种第一种使用命令行临时配置,关闭命令行之后失效。使用redis-cli连接redis后执行以下命令即可设置为31.66的从机。
slaveof 192.168.31.66 6379
第二种修改redis.conf配置文件,永久生效。
(1) redis服务器列表
(2) redis安装
三台服务器分别安装Redis软件,具体步骤如下:
#解压redis安装包tar -xvf redis-4.0.9.tar.gzmv redis-4.0.9 /usr/local/cd /usr/local/mv redis-4.0.9 rediscd redismakecd srcmake installcd ../mkdir etcmkdir binmv redis.conf sentinel.conf etc/mv src/mkreleasehdr.sh src/redis-benchmark src/redis-check-aof src/redis-check-rdb src/redis-cli src/redis-sentinel src/redis-server src/redis-trib.rb bin/vim etc/redis.conf# bind 127.0.0.1 修改成 bind 0.0.0.0# 配置后台运行 daemonize no 修改成 daemonize yes # 从机需要配置 slaveof 192.168.31.66 6379
(3) 配置redis服务并设置开机启动
vim /etc/systemd/system/redis.service#填写以下内容,注意路径要检查是否正确[Unit]Description=redis-serverAfter=network.target[Service]Type=forkingExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/etc/redis.confPrivateTmp=true[Install]WantedBy=multi-user.target#设置开机启动systemctl enable redis.service#启动redissystemctl start redis#查看redis状态systemctl status redis#停止redis服务systemctl stop redis
(4) 启动redis服务
依次启动主机从机66 70 155的Redis服务
systemctl start redis
(5) 查看服务信息
cd bin./redis-cli# 输入 info replication
至此一主二从配置完成,自行测验复制功能。在master节点写入数据,在slave节点查看数据。
使用方法
从机只读,不能写。主机可读可写多用于写。当主机宕机或服务关闭,默认情况从机不会发生变化。集群将只读不能写入,当主机恢复后恢复正常。当从机断电后,如果使用命令配置的从机,再次启动需要继续使用命令配置从机才能同步主机数据。
当主机宕机或服务关闭,不会出现新的主机,有两种方式可以产生新的主机。
在从机手动执行命令 slaveof no one,该从机会成为一个主机使用哨兵模式自动选举出一个主机。
哨兵模式
概述Redis提供了哨兵的命令,是一个独立的进程,它会独立进行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。主从切换: 当主服务器 宕机后,需要手动切换的话就需要人工干预,不适合生产环境,所以优先考虑哨兵模式。哨兵作用:哨兵主要有两个作用,第一个作用让Redis服务器返回监控其运行状态,包括主服务器和从服务器。第二个作用是当哨兵监测到master宕机后,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,修改配置文件,让它们切换主机。
一般使用多个哨兵进行监控,各个哨兵之间还会进行监控,这样就形成了多哨兵模式。哨兵配置:修改sentinel.conf文件
sentinel monitor mymaster 192.168.31.66 1#配置后台运行 添加 daemonize yes
数字1表示:当一个哨兵认为主机断开,就认为主机故障,然后开始选举新的主机。当数字为大于1时,当一个哨兵认为主机断开,该哨兵主观的认为主服务器不可用,这个现象称为主管下限。当后面的哨兵也监测到主服务器不可用,并且数量达到该数字时,哨兵之间就会进行一次投票,投票结果由一个哨兵发起,进行failover操作。切换成功后,通过发布订阅模式,让各个哨兵把自己监控的从服务器实现切换主机,这个过程称为客观下线。
#启动哨兵进程./redis-sentinel ../etc/sentinel.conf
或者可以参考redis配置成服务,不过注意不要设置成开机启动,因为哨兵模式需要注意启动顺序。首先是启动主机Redis服务然后从机Redis服务,最后启动哨兵的服务进程。
哨兵模式优缺点
优点:哨兵集群基于主从复制,主从可以切换,系统可用性高。可以自动切换主从,更加健壮。
缺点:哨兵模式配置较为复杂,配置项多
哨兵模式的其他配置项
springboot连接哨兵集群
redis-template 代码
application.yml
#redis-single#spring: #redis:#password: ''#host: 127.0.0.1#port: 6379#redis-sentinelspring: redis:password: ''sentinel: master: mymasternodes: 192.168.31.66,192.168.31.70,192.168.31.155
pom.xml
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>