🌟概述
为什么要搭建Redis主从复制、读写分离?
Redis发生故障会造成数据丢失,这里就需要从节点对其进行备份来保障数据的安全。
开发中,涉及到写少读多的场景,使用主从架构更能减少单节点部署的压力。
主从复制架构图
主从同步流程
全量复制
- 主从节点建立连接
- 主节点fork子进程,备份从客户端写入的数据为rdb文件。(RDB持久化策略)
- 从节点将加载rdb文件到磁盘进行同步。
增量复制
- 主节点将新产生的写命令放入复制积压缓冲区,当从节点重新连接主节点时,可以从复制积压缓冲区中同步尚未复制的命令操作。
加速复制
- ⽀持⽆磁盘的复制,⼦进程直接将RDB通过⽹络发送给从服务器,不使⽤磁盘作为中间存储
- repl-diskless-sync yes (默认是no)
🌟普通搭建
Redis安装
这里我已经安装好了Redis环境,具体操作可以查看【Redis从头学 -1】17张图带你学会Redis多环境(Linux、Windows)安装与配置
创建三个节点
1.创建三个节点存放的目录,master、slave1、slave2。
mkdir -p /data/redis/master/ mkdir -p /data/redis/slave1/ mkdir -p /data/redis/slave2/
2.进入到每个节点文件夹,各自创建3个配置文件redis.conf、日志文件夹log以及持久化文件夹data。
cd /data/redis/master && touch redis.conf && mkdir log && mkdir data cd /data/redis/slave1 && touch redis.conf && mkdir log && mkdir data cd /data/redis/slave2 && touch redis.conf && mkdir log && mkdir data
三个节点配置文件修改
1.vim修改master主节点配置文件。vim redis.conf
#任何ip可以访问 bind 0.0.0.0 #端口号 port 6379 #守护进程 daemonize yes #密码 requirepass "daencode@top" #日志文件 logfile "/data/redis/master/log/redis_6379.log" #持久化文件名称 dbfilename "redis_6379.rdb" #持久化文件存储路径 dir "/data/redis/master/data" #持久化策略, 10秒内有个1个key改动,执⾏快照 save 10 1 #访问主节点的密码 masterauth "daencode@top"
2.vim修改slave1从节点配置文件
#任何ip可以访问 bind 0.0.0.0 #端口号 port 6380 #守护进程 daemonize yes #密码 requirepass "daencode@top" #日志文件 logfile "/data/redis/slave1/log/redis_6380.log" #持久化文件名称 dbfilename "redis_6380.rdb" #持久化文件存储路径 dir "/data/redis/slave1/data" #持久化策略, 10秒内有个1个key改动,执⾏快照 save 10 1 #访问主节点的密码 masterauth "daencode@top" #指定从哪个主节点复制 replicaof 49.233.48.98 6379
3.vim修改从节点slave2配置文件
#任何ip可以访问 bind 0.0.0.0 #端口号 port 6381 #守护进程 daemonize yes #密码 requirepass "daencode@top" #日志文件 logfile "/data/redis/slave2/log/redis_6381.log" #持久化文件名称 dbfilename "redis_6381.rdb" #持久化文件存储路径 dir "/data/redis/slave2/data" #持久化策略, 10秒内有个1个key改动,执⾏快照 save 10 1 #访问主节点的密码 masterauth "daencode@top" #指定从哪个主节点复制 replicaof 49.233.48.98 6379
启动并查看主从配置信息
1.服务器防火墙允许6379、6380、6381端口
2.进入到bin目录,启动各个节点。
./redis-server /data/redis/master/redis.conf ./redis-server /data/redis/slave1/redis.conf ./redis-server /data/redis/slave2/redis.conf
3.查看是否启动成功。
ps -ef|grep redis
4.进入redis客户端。
./redis-cli -h 49.233.48.98 -p 6379 -a daencode@top
参数解释: -h redis连接ip地址 -p 端口号 -a redis密码
5.查看redis主从复制信息。info replication
🌟Docker搭建
Docker环境准备
1.Docker安装
yum install docker-io -y
2.启动Docker
systemctl start docker
3.修改Docker镜像仓库。
vim /etc/docker/daemon.json { "debug":true,"experimental":true, "registry-mirrors": ["https://pb5bklzr.mirror.aliyuncs.com"] }
4.重启查看镜像是否配置成功。
systemctl restart docker docker info
5.拉取redis镜像。
docker pull redis