PostgreSQL的备份方式

PostgreSQL 提供多种方式进行备份,适用于不同需求的场景。常用的备份方法如下:


1. 逻辑备份(pg_dump 和 pg_dumpall)

1.1 使用 pg_dump 备份单个数据库

pg_dump 是 PostgreSQL 内置的逻辑备份工具,可以将数据库导出为 SQL 脚本或二进制文件。

备份命令
  • 备份为 SQL 文件

    复制代码
    pg_dump -U username -d database_name -F p -f /path/to/backup.sql

    参数说明:

    • -U: 用户名。
    • -d: 数据库名称。
    • -F p: 输出为纯文本格式(Plain text)。
    • -f: 指定备份文件路径。
  • 备份为压缩文件

    复制代码
    pg_dump -U username -d database_name -F c -f /path/to/backup.dump

    参数说明:

    • -F c: 压缩格式(Custom format)。
    • 压缩格式可以使用 pg_restore 还原。
还原命令
  • 对于 SQL 文件:

    复制代码
    psql -U username -d new_database_name -f /path/to/backup.sql
  • 对于压缩文件:

    复制代码
    pg_restore -U username -d new_database_name /path/to/backup.dump

1.2 使用 pg_dumpall 备份所有数据库

pg_dumpall 用于备份整个 PostgreSQL 实例(包括所有数据库和全局对象,如角色、权限等)。

备份命令
复制代码
pg_dumpall -U username -f /path/to/backup_all.sql
还原命令
复制代码
psql -U username -f /path/to/backup_all.sql

2. 物理备份(pg_basebackup)

2.1 使用 pg_basebackup

pg_basebackup 是 PostgreSQL 提供的物理备份工具,适合对数据库进行完整二进制备份。

备份命令
复制代码
pg_basebackup -U replication_user -D /path/to/backup_directory -Fp -Xs -P

参数说明:

  • -U: 备份用户(需要配置 replication 权限)。
  • -D: 目标备份目录。
  • -Fp: 文件模式(Plain format)。
  • -Xs: 包含 WAL 日志。
  • -P: 显示进度。
还原步骤
  1. 停止 PostgreSQL 服务:

    复制代码
    systemctl stop postgresql
  2. 将备份数据复制到 PostgreSQL 数据目录:

    复制代码
    cp -r /path/to/backup_directory/* /var/lib/pgsql/data/
  3. 启动 PostgreSQL 服务:

    复制代码
    systemctl start postgresql

3. 归档日志备份(WAL 日志)

归档日志备份适用于需要时间点恢复 (Point-in-Time Recovery, PITR) 的场景。

步骤
  1. 配置归档模式

    编辑 postgresql.conf

    复制代码
    archive_mode = on
    archive_command = 'cp %p /path/to/archive/%f'
  2. 重启 PostgreSQL

    复制代码
    systemctl restart postgresql
  3. 定期备份归档日志

    配置脚本定期复制 /path/to/archive/ 目录。

  4. 使用日志和备份恢复

    在需要恢复时,结合初始物理备份和归档日志文件执行恢复。


4. 其他备份工具

4.1 Barman

Barman 是社区维护的 PostgreSQL 专用备份工具,支持物理备份和时间点恢复。

备份命令
复制代码
barman backup server_name
恢复命令
复制代码
barman recover server_name backup_id /path/to/restore_directory

4.2 WAL-G

WAL-G 是 PostgreSQL 的现代备份工具,支持增量备份和快速恢复,常用于云环境。


最佳实践

  1. 定期备份

    • 每天/每周使用 pg_dumppg_basebackup
    • 实现自动化备份脚本。
  2. 启用归档日志

    • 保证 WAL 日志可用于时间点恢复。
  3. 多地存储备份

    • 本地存储 + 云存储(如 S3、Google Cloud Storage)。
  4. 测试还原流程

    • 定期验证备份文件的完整性。
    • 演练灾难恢复。
  5. 监控备份

    • 结合监控工具(如 Zabbix、Prometheus)监控备份进度和状态。

按照这些方式定期备份 PostgreSQL 数据库,可以最大程度地保障数据的安全和可恢复性。

相关推荐
kUhzIPVBnE6 小时前
fpga can控制器Verilog,节省你的电路板面积 ...altera、xilinx工程...
postgresql
oradh6 小时前
Oracle闪回技术操作总结
数据库·oracle·oracle闪回技术操作总结·oracle闪回·flashback技术
ltl7 小时前
RocksDB 并发 Compaction 与 Rate Limiter
数据库
闻道且行之9 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
夏炳辉.9 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql
努力的小雨10 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验
数据库
DevOps老兵10 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战
数据库·ai·milvus
这个DBA有点耶10 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路
数据库·架构·aigc
smilejingwei11 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle
意疏12 小时前
2026年远控软件安全横评:六款主流工具逐项核查——官方文档、一手实测与安全事件,全摊开
大数据·前端·数据库