【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
目录
相关文章
|
10天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
12天前
|
canal 缓存 关系型数据库
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战
Spring Boot整合canal实现数据一致性解决方案解析-部署+实战
|
22天前
|
人工智能 并行计算 PyTorch
Stable Diffusion 本地部署教程:详细步骤与常见问题解析
【4月更文挑战第12天】本教程详细介绍了如何在本地部署Stable Diffusion模型,包括安装Python 3.8+、CUDA 11.3+、cuDNN、PyTorch和torchvision,克隆仓库,下载预训练模型。配置运行参数后,通过运行`scripts/run_diffusion.py`生成图像。常见问题包括CUDA/CuDNN版本不匹配、显存不足、API密钥问题、模型加载失败和生成质量不佳,可按教程提供的解决办法处理。进阶操作包括使用自定义提示词和批量生成图像。完成这些步骤后,即可开始Stable Diffusion的AI艺术创作。
49 2
|
1月前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
35 1
|
2月前
|
NoSQL 关系型数据库 MySQL
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
安装Docker&镜像容器操作&使用Docker安装部署MySQL,Redis,RabbitMQ,Nacos,Seata,Minio
450 1
|
2月前
|
Java 应用服务中间件
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
解决tomcat启动报错:无法在web.xml或使用此应用程序部署的jar文件中解析绝对的url [http:java.sun.com/jsp/jstl/core]
195 1
|
3月前
|
弹性计算 Ubuntu Windows
2024年部署幻兽帕鲁/Palworld服务器多少钱?阿里云帕鲁主机优惠价格解析
对于热爱《幻兽帕鲁》的玩家们来说,一个稳定、高效的游戏服务器是畅享游戏乐趣的关键。那么,搭建一个这样的服务器需要多少钱呢?别担心,阿里云已经为大家准备了超值的幻兽帕鲁Palworld游戏服务器!
|
3月前
|
运维 Java Linux
深入解析:使用Docker容器化技术提升Java应用的部署效率
在快速迭代的软件开发周期中,如何保证应用的快速、一致和可靠部署成为了开发团队需要面对的重大挑战。本文将探讨如何利用Docker容器化技术,结合Java应用,实现高效、一致的部署流程。我们将从Docker的基本概念出发,详细介绍将Java应用容器化的步骤,包括创建Dockerfile、构建镜像以及运行容器等关键环节,并通过示例代码加以说明。此外,本文还将讨论在使用Docker部署Java应用时可能遇到的常见问题及其解决策略,旨在为读者提供一种提升部署效率、优化开发流程的有效方法。
308 2
|
3月前
|
存储 NoSQL Linux
centos7部署redis以及多实例
centos7部署redis以及多实例
63 0
|
4月前
|
应用服务中间件 nginx Docker
docker系列:dockerfile及其用法解析
docker系列:dockerfile及其用法解析
89 0