【Redis从头学-12】Redis主从复制和读写分离的多种部署方式解析(普通方式、Docker搭建方式、Docker-Compose搭建方式)上

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 【Redis从头学-12】Redis主从复制和读写分离的多种部署方式解析(普通方式、Docker搭建方式、Docker-Compose搭建方式)

🌟概述


为什么要搭建Redis主从复制、读写分离?


Redis发生故障会造成数据丢失,这里就需要从节点对其进行备份来保障数据的安全。

开发中,涉及到写少读多的场景,使用主从架构更能减少单节点部署的压力。


主从复制架构图


7933de1763394d4e968a8170d1a492b1.png


主从同步流程


全量复制


  • 主从节点建立连接
  • 主节点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端口

9775bd7c20bf1ec52b807064a0174b57_27d821989fb74a4f8c7d78cdda145be2.png

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

8ee46ca882103834eb0594a920059ea6_85eb10acb0af4aeb81ab502fe77f0ed1.png


4.进入redis客户端。


./redis-cli -h 49.233.48.98 -p 6379 -a daencode@top


参数解释:
-h redis连接ip地址
-p 端口号
-a redis密码


5.查看redis主从复制信息。info replication

17ac7f0093088b99352a1c0aa25ccf26_87a440806c6a4a00a2656d66d8ece99f.png


🌟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

a05ba3a0848c2d4db676f6b0799a02c1_adac56b58ddc42cb8192696092101b41.png


5.拉取redis镜像。


docker pull redis

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
1天前
|
数据库 Nacos Docker
基于docker-compose部署微服务基本环境
基于docker-compose部署微服务基本环境
5 0
|
2天前
|
运维 Linux 虚拟化
Docker详解(三)——Docker安装与部署
Docker详解(三)——Docker安装与部署
33 4
|
3天前
|
测试技术 Linux Docker
【好玩的经典游戏】Docker部署FC-web游戏模拟器
【好玩的经典游戏】Docker部署FC-web游戏模拟器
28 1
|
4天前
|
Ubuntu Linux 测试技术
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试(下)
Linux(32)Rockchip RK3568 Ubuntu22.04上部署 Docker: 详细配置与功能测试
35 1
|
7天前
|
存储 测试技术 文件存储
【Docker项目实战】使用Docker部署Sun-Panel导航面板
【4月更文挑战第19天】使用Docker部署Sun-Panel导航面板
59 7
|
10天前
|
测试技术 Linux 网络安全
【好玩的开源项目】使用Docker部署SyncTV视频同步和共享平台
【4月更文挑战第16天】使用Docker部署SyncTV视频同步和共享平台
49 1
|
14天前
|
测试技术 Linux 数据安全/隐私保护
【Docker项目实战】使用Docker部署Seatsurfing预订座位系统
【4月更文挑战第12天】使用Docker部署Seatsurfing预订座位系统
38 3
|
17天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
237 0
|
25天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
202 2
|
1月前
|
NoSQL Redis
Redis集群(六):集群常用命令及说明
Redis集群(六):集群常用命令及说明
194 0