什么是redis主从复制。
redis主从复制是指在redis集群中master节点和slave节点数据同步的机制。将写入redis服务器的数据复制到其他redis服务器里面实现数据同步。master节点负责写操作,slave节点负责读操作。
主从复制原理
slave节点会向master发送一个SYNC的命令,master收到命令之后会生成数据快照。第二步把数据快照发送给slave节点,slave节点收到数据以后丢弃旧的数据并重新载入新的数据,并对外提供服务。
redis提供了全量复制和增量复制两种模式。
在Redis2.8以前,从接待你向主节点发送sync命令请求同步数据,此时的同步方式是全量复制;在Redis2.8及以后,从节点可以发送psync命令请求同步数据,此时根据主从节点当前状态的不同,同步方式可能是全量复制或部分复制。
全量复制:用于初次复制或其他无法进行部分复制的情况,将主节点中的所有数据都发送给从节点,是一个非常重型的操作。
增量复制: 用于网络中断等情况后的复制,只将中断期间主节点执行的写命令发送给从节点,与全量复制相比更加高效,需要注意的是,如果网络中断时间过长,导致主节点没有能够完整地保存中断期间执行地写命令,则无法进行部分复制,仍使用全量复制。
1、搭建主从之前先搭建单机redis:
1.1 gcc环境安装。
yum install gcc
1.2下载安装。
使用wget下载redis版本,然后进行解压,删除redis文件。
cd /usr/local/
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
tar xzf redis-5.0.3.tar.gz
rm -ef redis-5.0.3.tar.gz
1.3 cd redis-5.0.3/,进行编译与安装。
cd redis-5.0.3/
make
make install
1.4修改redis.conf 配置文件
vim redis.conf
daemonize yes #后台启动 protected‐mode no #关闭保护模式,开启的话,只有本机才可以访问redis
#bind 127.0.0.1 #需要注释掉bind,bind绑定的是自己机器网卡的ip,如果有多块网卡可以配多个ip,代表允许客户端通过机器的哪些网卡ip去访问,内网一般可以不配置bind,注释掉即可
requirepass 123456 #设置redis启动密码(注意:设置自己需要的密码)
1.5 进行启动
src/redis-server redis.conf
ps -ef | grep redis #验证是否启动成功,如下图:(注意6381端口是因为我进行修改端口号)
1.6 进入客户端以及退出
src/redis-cli # 进入客户端
auth 123456 #如果不输入密码无法操作
quit # 退出客户端
完成redis单机安装。
2、主从搭建
2.1 我在这里用三台服务器(192.168.43.150,192.168.43.151,192.168.43.153)搭建redis主从,每台服务器搭建一台单体架构的redis。
主节点修改redis.conf配置文件
2.2 我这里是修改主redis服务器的配置文件,master节点的redis.conf。
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile ./redis.log
masterauth 123456
requirepass 123456
2.3 从节点修改redis.conf配置文件
bind 192.168.43.151
protected-mode no
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
replicaof 192.168.43.150 6379
masterauth 123456
requirepass 123456
2.4开启所以的redis服务器
开启主服务。
src/redis-server redis.conf
src/redis-cliauth 123456 #输入密码
开启从服务。
src/redis-server redis.conf
src/redis-cli -h 192.168.43.151 -p 6380
192.168.43.151:6380> auth 123456
、
2.5 查看主从配置信息
主配置信息。
info replication #使用命令查看信息,出现以下信息则表示成功。
从配置信息。
info replication #使用命令查看信息,出现以下信息则表示成功。
2.6验证主从读写分离
set nn jiayou #主添加写入数据。
get nn #从节点获取主节点的数据,能获取则说明成功。(注意:从是不可以写入数据的)
主节点数据。
从节点数据。
3、 redis哨兵模式架构搭建
3.1 哨兵的作用
监控:
不间断检查master和slave是否正常运行。
master存活检测,master与slave运行情况检测。
通知:
当被监控的服务器出现问题时,向其他(哨兵,客户端)发送请求。
自动故障转移:
断开master与slave连接,选取一个slave作为master,将其他slave连接到新的master,并告知客户端新的服务器地址。
注意:哨兵也是一台redis服务器,只是不提供数据服务。
3.2配置哨兵模式
1、环境准备:
这里搭建的是一主二从集群模式的redis服务器(主节点:192.168.43.150,从节点:192.168.43.151,从节点:192.168.43.153)。
2、配置sentinel.conf文件
cd /usr/local/redis-5.0.3 #进入redis目录
vim sentinel.conf #哨兵配置文件
修改sentinel.conf 文件里面的参数
daemonize yes
sentinel monitor mymaster 192.168.43.150 6379 2 #监控主节点的ip,该名称为mymaster,2表示该主节点故障了需要两名哨兵节点同意才判断故障并进行故障转移。
sentinel auth-pass mymaster 123456 #设置访问主节点的密码。
sentinel announce-ip 192.168.43.150 #表示主节点的ip,sentinel使用的是内网地址,需配置否则master故障切换失败。
sentinel announce-port 26379 #所监听的哨兵端口
另外两台从服务器也是修改成相同参数,因为sentinel.conf配置文件后面会随着主从节点的变化而变。
3、启动哨兵
src/redis-sentinel sentinel.conf
src/redis-cli -p 26379
4、验证哨兵信息,可以看到已经识别出相关信息
查看主从节点的信息
主节点:主节点为192.168.43.151,它下面有两个从节点。
从节点信息:192.168.43.150. 192.168.43.153。
5、进行主从切换。
主节点192.168.43.151切换192.168.43.150。因为之前那个主节点停掉了所以现在是一主一从。
哨兵模式搭建成功。
4、集群架构搭建
redis集群至少需要三个master节点,搭建六台redis服务器,三主三从,数据会存放在redis节点上自动分片,当某个节点出现故障或无法与其他节点通信时,则会进行选举推选出master节点进行服务达到高可用。
4.1redis环境准备
在每台服务器上面搭建redis。防火墙进行放开使其各个服务器之间能够进行通信。
六台主机服务IP:
192.168.43.150
192.168.43.151
192.168.43.153
192.168.43.154
192.168.43.155
192.168.43.156
4.2修改redis.conf配置文件
bind 0.0.0.0
protected-mode no
port 6379
daemonize yes #开启后台运行
pidfile /var/run/redis_6379.pid
logfile ./redis.log
masterauth 123456
requirepass 123456
appendonly yes #开启AOF持久化
cluster-enabled yes #启动集群模式
cluster-config-file nodes-6379.conf #集群节点信息文件
cluster-node-timeout 10000 #连接超时时间
cluster-announce-ip 192.168.43.150 #集群节点 IP,如果要对外提供访问功能则需要填写宿主机的IP
cluster-announce-port 6379 #集群节点映射端口
cluster-announce-bus-port 16379 #集群节点总线端口
六台服务器配置全部配置完成,启动redis服务器,可看出后面出现【cluster】。
4.3创建集群
以上信息可看出添加集群节点成功,其中M为主节点,S为从节点,输入yes确定创建。
显示提示已经创建成功并分配好槽点,redis在写入程序时会经过hash运算,最终判断由哪个节点存 储数据。
4.4验证并存放数据
src/redis-cli -a 123456 -c -h 192.168.43.150 -p 6379 cluster info # 查看集群信息 cluster nodes #查看集群节点信息
连接任意一个客户端即可:./redis‐cli ‐c ‐h ‐p (‐a访问服务端密码,‐c表示集群模式,指定ip地址 和端口号)![](https://i-blog.csdnimg.cn/blog_migrate/f2c7386e7918b45ed4e667066236e8f5.png)
在192.168.43.150主机中设置qmf的值发现经过hash运算其落在7726这个槽位,因此自动为我们切换到192.168.43.151这个主机。
到这一步则搭建redis集群成功。