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 数据库,可以最大程度地保障数据的安全和可恢复性。

相关推荐
火山上的企鹅6 小时前
Codex实战:APP远程升级服务搭建(三)后台管理页面(APK 上传、版本管理、多应用页签)
服务器·网络·数据库·oracle·qgc
阿狸猿7 小时前
论 NoSQL 数据库技术及其应用
数据库·nosql
FBI HackerHarry浩7 小时前
DataGrip2023.2.3默认保存的数据库和.sql文件在哪里?怎么修改默认路径?
数据库
袁小皮皮不皮7 小时前
3.HCIP OSPF补充知识(优化版)
服务器·网络·数据库·网络协议·智能路由器
运筹vivo@7 小时前
Python ContextVar 底层机制与内存模型拆解
前端·数据库·python
志栋智能8 小时前
超自动化巡检:知识沉淀与团队协作的新载体
大数据·运维·网络·数据库·人工智能·自动化
syt_biancheng8 小时前
Redis初识
数据库·redis·缓存
cmes_love8 小时前
股票逐笔level2历史行情下载十档订单薄五档tick分钟下载分享
数据库·区块链
仙俊红8 小时前
SQL 调优需要掌握的知识
数据库·sql
fofantasy9 小时前
NSK LH12AN 微型导轨技术手册
运维·网络·数据库·经验分享·规格说明书