当前位置: 首页 > news >正文

阿里云环境下用docker搭建redis主从复制

redis主从复制可将主redis中的数据同步到从redis中,具有读写分离、容灾恢复、数据备份、支持高并发等特性。

本文演示在阿里云环境下,用 docker 搭建 redis 主从复制(一主二从)的操作过程。

一、环境准备

阿里云安装CentOS7.9 64 位操作系统

二、主从redis配置文件

2.1 添加配置文件

在主机的 usr 目录下创建文件夹 redis,并创建三个配置文件:redis_master.conf、redis_slave81.conf、redis_slave82.conf

2.2 增加配置内容

主redis的端口设为 6388,两个从redis端口分别设置为6381/6382, 权限密码设置为 111111,具体内容(简化了其他配置参数)分别如下:

redis_master.conf:

# redis服务端口号

port 6388   

# redis 客户端登录密码
requirepass 111111

# 从redis连接主redis权限密码
masterauth 111111

 redis_slave81.conf:

# redis 服务端口

port 6381

# 挂载到主redis服务:IP + Port
replicaof 172.17.95.222 6388

# 访问主 redis 密码
masterauth 111111

 redis_slave82.conf

# redis 服务端口

port 6382

# 挂载到主redis服务:IP + Port
replicaof 172.17.95.222 6388

# 访问主 redis 密码
masterauth 111111

配置从redis时,主要设置两个参数:replicaof、masterauth

三、docker 创建主从 redis 服务

3.1 拉取最新 redis 镜像

docker pull redis

3.2 docker 运行主 redis 服务

docker run -v /usr/redis/redis_master.conf:/usr/redis/redis.conf -v /usr/redis/data:/data --privileged=true -p 6388:6388 --name redis_master -d redis redis-server /usr/redis/redis.conf

3.3 docker 运行从 redis 服务

redis配置文件映射到阿里云服务器的/usr/redis/目录下的对应配置文件(步骤二中的设置)

// 运行从redis 6381 
docker run -v /usr/redis/redis_slave81.conf:/usr/redis/redis.conf -v /usr/redis/data:/data --privileged=true -p 6381:6381 --name redis_slave81 -d redis redis-server /usr/redis/redis.conf// 运行从redis 6382
docker run -v /usr/redis/redis_slave82.conf:/usr/redis/redis.conf -v /usr/redis/data:/data --privileged=true -p 6382:6382 --name redis_slave82 -d redis redis-server /usr/redis/redis.conf

3.4 查看 docker 容器中的所有 redis 服务

3.5 查看主 redis 服务的运行效果

// 进入主redis
docker exec -it redis_master redis-cli -p 6388// 输入登录redis客户端密码
auth 111111// 查看主 redis 复制运行信息
info replication

显示结果:6388端口对应redis服务的角色是master,连接了 2 个 slave,端口分别是6381、6382。

3.6 查看从redis服务的运行效果

运行结果:6381端口对应的 redis 服务是角色是 slave,连接的 master 为 172.17.95.222::6388,连接状态为 up,即连接成功。

3.7 取消从服务器配置的命令

slaveof no one

四、测试效果

4.1 测试步骤

1、进入主 redis_master,开启redis客户端,新增key值

      set name gogo

2、分别进入从 redis_slave81 和 redis_slave82, 开启redis客户端,查看是否有name键值

      get name

4.2 验证结果

 

五、数据同步机制

5.1 完整同步

Redis master 服务器接收到 replicaof 命令后:
1、主服务器执行 bgsave,生成 rdb 文件,用缓冲区存储 bgsave后的所有写命令
2、Rdb 文件通过套接字传给从服务器
3、从服务器载入 rdb 文件

4、master将缓冲区命令传输给slave

 5.2 在线更新

Master 执行完命令后,将相同写命令发送给slave服务器执

5.3 部分同步

1、从服务器掉线,造成主从数据不一致,Redis master服务器会将每个执行命令记录到队列中

2、slave上线,master将缺失的命令发送slave,避免了完整同步

3、如果命令不存在,将进行完整同步。同步功能配置Replbacklog-size,默认 1M

http://www.lryc.cn/news/471120.html

相关文章:

  • STM32 从0开始系统学习 1
  • python-numpy-笔记1
  • 云+AI 时代的 OceanBase
  • 【C++】vector使用详解
  • .NET Core WebApi第5讲:接口传参实现、数据获取流程、204状态码问题
  • 运维面试汇总
  • 学习封装Flutter组件,看这篇就够了
  • 无线麦克风方案芯片DSH32F3024
  • 谷粒商城の秒杀服务
  • 庆祝程序员节:聊一聊编程语言的演变
  • 大模型技术在网络安全领域的应用与发展
  • 基于vite和vue3、 eslint、prettier、stylelint、husky规范
  • git push到远程怎么回退
  • Web保存状态的手段(Application的使用)
  • 高翔【自动驾驶与机器人中的SLAM技术】学习笔记(十二)拓展图优化库g2o(一)框架
  • Flutter Row组件实战案例
  • 【ubuntu20.04】【ROS Noetic】【ROS安装】【Website may be down.】【gpg: 找不到有效的 OpenPGP 数据。】
  • Python开发必备,这些黑科技库你get到了吗
  • sublime text 常用快捷键
  • Kubernetes(K8S) + Harbor + Ingress 部署 SpringBoot + Vue 前后端分离项目
  • 【iOS】知乎日报第一周总结
  • Springboot整合spring-boot-starter-data-elasticsearch
  • 【大模型系列】mPLUG-Owl3(2024.08)
  • 从0到1学习node.js(express模块)
  • MambaVision
  • MySQLDBA修炼之道-开发篇(二)
  • 前端必备的环境搭建
  • SpringCloud笔记
  • 优秀的程序员思考数据结构
  • 「C/C++」C/C++标准库之#include<cstdlib>通用工具库