背景介绍
在日常的数据库运维工作中,经常需要对多个数据库进行备份操作。特别是在开发环境中,可能同时维护着多个业务数据库,如 backlog、develop、wxdevelop 等。为了确保数据安全和便于迁移,需要定期对这些数据库进行导出备份。本文将详细介绍如何使用 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 数据库的批量导出工作。方法一适合偶尔操作的场景,方法二适合需要定期批量操作的场景。选择合适的导出格式和参数,能够确保备份的完整性和后续恢复的便利性。