背景介绍

在日常的数据库运维工作中,经常需要对多个数据库进行备份操作。特别是在开发环境中,可能同时维护着多个业务数据库,如 backlogdevelopwxdevelop 等。为了确保数据安全和便于迁移,需要定期对这些数据库进行导出备份。本文将详细介绍如何使用 pg_dump 工具高效地导出多个 PostgreSQL 数据库。

环境要求

  • 已安装 PostgreSQL 客户端工具
  • 具备目标数据库的访问权限
  • 网络可访问目标 PostgreSQL 服务器

操作思路

通过 pg_dump 命令行工具,指定特定的数据库模式(public 模式),将数据库的表结构和数据完整导出为备份文件。提供两种方法:手动逐个导出和脚本批量导出,以满足不同场景的需求。

详细操作步骤

方法一:分别导出每个数据库

使用 pg_dump 命令逐个导出每个数据库:

# 导出 develop 数据库  
pg_dump -h hostname -U username -n public -Fc develop > develop.dump


方法二:使用脚本批量导出

创建批量导出脚本,提高操作效率:

#!/bin/bash
databases=("test" "develop" "test2")
for db in "${databases[@]}"; do
    pg_dump -h hostname -U username -n public -Fc $db > ${db}.dump
done


参数详解

  • -h hostname: 指定要连接的数据库服务器地址或主机名
  • -U username: 指定连接数据库时使用的用户名
  • -n public: 指定只导出 public 模式下的对象,排除其他模式
  • -Fc: 使用自定义格式(Custom Format)进行导出,该格式支持压缩和并行恢复
  • database_name: 指定要导出的具体数据库名称
  • > filename.dump: 将导出结果重定向到指定文件

导出文件特点

使用 -Fc 参数导出的文件具有以下优势:

  • 文件经过压缩,占用空间更小
  • 支持并行恢复操作
  • 可以选择性恢复特定表或对象
  • 恢复速度更快

验证导出结果

导出完成后,可以通过以下方式验证:

# 查看生成的文件
ls -la *.dump

# 查看文件大小
du -h *.dump


总结

通过上述两种方法,可以高效地完成多个 PostgreSQL 数据库的批量导出工作。方法一适合偶尔操作的场景,方法二适合需要定期批量操作的场景。选择合适的导出格式和参数,能够确保备份的完整性和后续恢复的便利性。