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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【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

目录
相关文章
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
kde
|
1月前
|
存储 NoSQL Redis
手把手教你用 Docker 部署 Redis
Redis是高性能内存数据库,支持多种数据结构,适用于缓存、消息队列等场景。本文介绍如何通过Docker快速拉取轩辕镜像并部署Redis,涵盖快速启动、持久化存储及docker-compose配置,助力开发者高效搭建稳定服务。
kde
509 7
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
256 5
|
4月前
|
NoSQL Redis 数据安全/隐私保护
挂载配置文件以Docker启动Redis服务
以上步骤提供了一个高效且实用的方式来使用Docker启动并运行带有自定义配置的Redis服务。这些操作可以适用于开发、测试和生产环境,是一种灵活且可扩展的部署方案。通过挂载配置文件和数据卷,您可以轻松地管理和迁移您的Redis实例。
510 9
|
3月前
|
Kubernetes Cloud Native 持续交付
Docker:轻量级容器化技术解析
Docker:轻量级容器化技术解析
|
5月前
|
存储 安全 数据建模
Docker数据卷深入解析与操作技巧
通过巧妙使用Docker数据卷,我们就能实现数据的灵活管理和无缝迁移,享受容器化的便捷,同时确保数据的安全与高效共享。
91 6
|
8月前
|
NoSQL Redis Docker
Docker——阿里云服务器利用docker搭建redis集群
本文详细记录了使用Docker搭建Redis集群的过程,包括检查Docker和Docker Compose的安装、创建Redis配置文件、编写`docker-compose.yml`文件、启动Redis节点、创建Redis集群的具体步骤,以及最终的验证方法。文章还提供了在多服务器环境下搭建Redis集群的注意事项,帮助读者全面了解 Redis 集群的部署流程。
872 68
|
7月前
|
存储 Kubernetes 调度
Kubernetes、Docker和Containerd的关系解析
总的来说,Docker、Containerd和Kubernetes之间的关系可以用一个形象的比喻来描述:Docker就像是一辆装满货物的卡车,Containerd就像是卡车的引擎,而Kubernetes就像是调度中心,负责指挥卡车何时何地送货。
335 12
|
9月前
|
存储 NoSQL Redis
Docker 部署 Redis
在使用 Docker 部署 Redis 时,为实现数据持久化,需正确挂载容器内的数据目录到宿主机。推荐命令如下: ``` docker run -d --name redis -v /mnt/data/redis:/data -p 6379:6379 redis ``` 该命令将宿主机的 `/mnt/data/redis` 目录挂载到容器的 `/data` 目录,确保 Redis 数据持久化。此路径更通用,适合大多数场景。避免使用不匹配的挂载路径,如 `/var/lib/redis` 或 `/mnt/data/redis` 到非默认目录,以防止数据无法正确持久化。
|
7月前
|
NoSQL Redis 数据库
Docker平台上的Redis镜像运行
这就是如何在Docker平台上运行Redis镜像的全部过程。走进Docker和Redis的世界,探索更多可能!
426 10