You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Compose Down后恢复PostgreSQL容器数据的方法求助

PostgreSQL数据恢复操作步骤

1. 确认目标卷为PostgreSQL旧数据卷

先验证目标卷是否存储着PostgreSQL的历史数据:

# 创建临时容器挂载目标卷,查看目录结构
docker run --rm -v 562d3c85b32450f0f8bfc73420438a72f7b6651317f7efa43cd38e6d9a7de887:/pg_data postgres:14.4 ls -la /pg_data

如果输出包含base、pg_xact、pg_global这类PostgreSQL核心数据目录,说明这就是你需要的旧数据卷。

2. 备份当前PostgreSQL数据卷(必做)

先把当前容器使用的PostgreSQL卷备份,避免操作失误导致数据彻底丢失:

# 查找当前PostgreSQL容器挂载的卷路径
docker inspect postgres_container | grep -A6 -B2 "Mounts"

找到输出中Source字段对应的卷名称(例如7fd43398fb9942381adf3a866c9408ee3cbe24e5d33ed4e4374bfcea77405ed7),执行备份:

# 将当前卷数据备份到本地目录pg_backup
docker run --rm -v 找到的当前卷名:/source -v $(pwd)/pg_backup:/target busybox cp -a /source/. /target/

3. 停止当前PostgreSQL相关容器

# 停止并移除现有PostgreSQL容器
docker stop postgres_container
docker rm postgres_container
# 或者直接用docker-compose停止所有服务
docker-compose down

4. 挂载旧卷恢复数据

方法一:临时启动验证数据

先临时启动一个PostgreSQL容器挂载旧卷,确认数据可用:

docker run -d --name temp_pg -v 562d3c85b32450f0f8bfc73420438a72f7b6651317f7efa43cd38e6d9a7de887:/var/lib/postgresql/data -p 5433:5432 postgres:14.4

用数据库客户端连接localhost:5433,检查历史数据是否存在。确认无误后,停止临时容器:

docker stop temp_pg
docker rm temp_pg

方法二:修改docker-compose.yml使用旧卷

打开你的docker-compose.yml,找到PostgreSQL服务的volumes配置,替换为目标旧卷:

services:
  postgres:
    image: postgres:14.4
    volumes:
      # 替换为你的旧卷ID
      - 562d3c85b32450f0f8bfc73420438a72f7b6651317f7efa43cd38e6d9a7de887:/var/lib/postgresql/data
    # 保留其他原有配置(端口、环境变量等)

启动服务:

docker-compose up -d postgres

5. 验证数据恢复

连接PostgreSQL数据库,检查之前丢失的业务数据是否恢复正常。


内容的提问来源于stack exchange,提问作者Вадим Иващенко

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:10:19