Docker 部署 Redis 集群怎么配置持久化卷防止数据丢失

文章导读
Docker 部署 Redis 集群防止数据丢失,核心是将容器内的 `/data` 目录挂载到宿主机的持久化卷,并开启 AOF 持久化模式。适用场景为生产环境 Docker 容器化部署,风险边界在于文件权限配置错误可能导致容器启动失败。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

Docker 部署 Redis 集群防止数据丢失,核心是将容器内的 `/data` 目录挂载到宿主机的持久化卷,并开启 AOF 持久化模式。适用场景为生产环境 Docker 容器化部署,风险边界在于文件权限配置错误可能导致容器启动失败。

先说结论:必须通过卷挂载持久化 `/data` 目录,并配置 AOF 落盘策略。

  • 适合:生产环境 Docker 容器化 Redis 集群部署。
  • 先准备:宿主机挂载目录、redis.conf 配置文件、开启 appendonly 选项。
  • 验收:重启容器后数据文件仍存在,redis-cli 查询 key 无误。

命令速用版

以下 Docker Compose 片段展示了挂载卷和开启 AOF 的核心配置:

version: '3.8'
services:
  redis-node-1:
    image: redis:7
    command: redis-server `--appendonly` yes `--cluster-enabled` yes
    volumes:
      - ./data/node-1:/data
    ports:
      - "6379:6379"

为什么会这样

容器重启后数据丢失是因为数据写在容器层,容器销毁后层数据随之消失。Redis 默认将数据存储在容器内的 `/data` 目录,该目录位于容器 writable layer,未挂载卷时不具备持久性。

分步处理

第一步,准备宿主机目录。在宿主机创建用于存储数据的文件夹,例如 mkdir -p ./redis-cluster/node-1/data。

Docker 部署 Redis 集群怎么配置持久化卷防止数据丢失

第二步,配置持久化参数。在 redis.conf 中设置 appendonly yes,或在启动命令中追加 `--appendonly` yes 参数。

第三步,启动容器并挂载卷。使用 docker run -v 或 Docker Compose volumes 字段,将宿主机目录映射到容器内的 /data 路径。

第四步,初始化集群。使用 redis-cli `--cluster` create 命令建立集群关系,确保节点配置文件 cluster-config-file 也落在挂载目录内。

怎么验证是否生效

检查宿主机挂载目录内是否生成 appendonly.aof 或 dump.rdb 文件。执行 docker exec -it <container_id> redis-cli info persistence 查看持久化状态。

Docker 部署 Redis 集群怎么配置持久化卷防止数据丢失

常见坑

权限问题:容器内 redis 用户 UID 通常为 1000,宿主机目录所有者需匹配,否则无法写入文件。

配置文件路径:cluster-config-file 默认名为 nodes.conf,需确保该文件也位于挂载卷内,否则重启后集群拓扑丢失。

常见问题

只挂载 /data 够吗?

够用,Redis 核心数据文件默认都在 /data 下。

Docker 部署 Redis 集群怎么配置持久化卷防止数据丢失

AOF 和 RDB 选哪个?

生产环境建议同时开启,AOF 数据更安全,RDB 恢复更快。

重启后集群状态丢失怎么办?

检查 nodes.conf 文件是否持久化,该文件记录集群节点关系。

参考来源

Redis 官方文档:Persistence https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/

Docker Hub:Redis Image https://hub.docker.com/_/redis