从 Docker 容器中备份 PostgreSQL 数据库:使用 pg_dump 工具的完整指南|使用 pg_dump 备份数据库或单个表的完整指南

在数据库维护过程中,备份数据库或单个表是必不可少的操作。本文将详细介绍如何从 Docker 容器中提取 PostgreSQL 数据库,使用 pg_dump 工具进行高效备份,包括如何备份整个数据库或特定表格。我们还将讨论常见命令、参数配置、备份策略和注意事项,帮助你确保数据库的安全性和可恢复性。无论是在开发、测试还是生产环境中,本指南都能帮助你掌握 PostgreSQL 数据库备份的核心技能。

阅读时长: 2 分钟
共 584字
作者: eimoon.com

1. 进入 PostgreSQL 容器

首先,通过 docker exec 命令进入运行 PostgreSQL 的容器:

docker exec -it <container_name> bash

2. 运行 pg_dump

使用 pg_dump 备份数据库。例如:

pg_dump -U <username> -d <database_name> -F c -b -v -f /backup.dump

参数说明:

  • -U :PostgreSQL 用户名。
  • -d <database_name>:数据库名称。
  • -F c:备份格式为自定义格式。
  • -b:包括大对象。
  • -v:显示详细信息。
  • -f /path/to/backup/file:指定输出文件的路径。此例直接指定为根目录下的backup.dump 文件

因为使用了-F c,backup.dump实际上是一个压缩的二进制文件。

3. 退出容器

完成后,退出容器:

exit

4. 将备份文件拷出容器

使用 docker cp 将备份文件拷贝到宿主机:

docker cp <container_name>:/path/to/backup/file/backup /local/path
  • /path/to/backup/file 为容器中的文件路径
  • /local/path 为本地文件路径

5. 导入到数据库

pg_restore -U root -d file_browser -v /path/to/backup.dump
# 或者
pg_restore --no-owner --clean -U <username> -d file_browser /path/to/backup.dump
  • –no-owner:忽略尝试更改数据库所有者的命令。
  • –clean:在还原前删除目标数据库中的现有对象。

6 备份数据表而不用备份数据库

如果是备份某个表,使用下面命令:

pg_dump -U root -d my_database -t my_table -F c -b -v -f /backup/my_table.dump
  • my_database 数据库名
  • my_table 数据表名
  • /backup/my_table.dump 备份路径

如果需要备份多个表,可以重复使用 -t 参数:

pg_dump -U postgres -d my_database -t table1 -t table2 -F c -b -v -f /backup/tables.dump

可以添加 –data-only 或 –schema-only 参数进行更精细的控制。

注意事项

引用表名

如果表名包含特殊字符或使用了大小写敏感的命名方式,需用双引号括起来。

PostgreSQL数据库的版本需要相同

尽量保证数据库版本相同。

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计