docker compose postgres psql维护

发布于:2025-08-12 ⋅ 阅读:(18) ⋅ 点赞:(0)

基于提供的 docker-compose.yml 文件,要导出 PostgreSQL 数据库的所有表结构和数据,可以使用 pg_dump命令。以下是具体步骤和命令:

1. 首先确保服务正在运行

docker-compose up -d db

2. 执行导出命令

docker-compose exec db pg_dump -U postgres -d dify -Fc -f /var/lib/postgresql/data/dify_backup.dump


# 导出为sql文件
docker-compose exec db pg_dump -U postgres -d dify > dify_backup.sql

# 只导出结构(不含数据)
docker-compose exec db pg_dump -U postgres -d dify --schema-only > dify_schema.sql

# 导出特定表
docker-compose exec db pg_dump -U postgres -d dify -t table1 -t table2 > tables.sql

# 带压缩导出
docker-compose exec db pg_dump -U postgres -d dify | gzip > dify_backup.sql.gz

参数说明:

-U postgres: 使用 postgres 用户(根据你的 compose 文件配置)

-d dify: 导出 dify 数据库(根据 DB_DATABASE环境变量)

-Fc: 使用自定义格式(压缩且可选择性恢复)

-f /var/lib/postgresql/data/dify_backup.dump: 输出文件路径(挂载到宿主机)

3. 将备份文件从容器复制到宿主机

docker cp $(docker-compose ps -q db):/var/lib/postgresql/data/dify_backup.dump ./dify_backup.dump

4. (可选)如果要导出为 SQL 格式(非压缩)

docker-compose exec db pg_dump -U postgres -d dify -f /var/lib/postgresql/data/dify_backup.sql
docker cp $(docker-compose ps -q db):/var/lib/postgresql/data/dify_backup.sql .

要进入正在运行的 PostgreSQL 数据库容器并连接到数据库,你可以按照以下步骤操作:

5 . 首先进入容器

docker exec -it docker-db-1 bash

6. 进入容器后,使用 PostgreSQL 客户端连接数据库

psql -U postgres
# 如果数据库用户名不是默认的 postgres,请替换为实际的用户名:
psql -U 用户名

# 连接到特定数据库:
psql -U 用户名 -d 数据库名

# 如果需要密码认证,可以添加 -W参数:
psql -U 用户名 -W

7. 快捷方式(一步完成)

你也可以直接一步完成进入和连接:

docker exec -it docker-db-1 psql -U postgres

常用 PostgreSQL 命令

连接成功后,你可以使用以下常用命令:

\l       -- 列出所有数据库
\c 数据库名 -- 切换到指定数据库
\dt      -- 列出当前数据库的所有表
\d 表名   -- 查看表结构
\q       -- 退出 psql

注意:如果数据库设置了密码,你可能需要先设置 PGPASSWORD环境变量或使用 -W参数输入密码。