PostgreSQL备份与恢复工具介绍
PG备份与恢复介绍: pg_dump、pg_dumpall、pg_restore、pg_basebackup、pg_rman
PG备份逻辑备份和物理备份:
逻辑备份工具
pg_dump、pg_dumpall物理备份工具
pg_basebackup、pg_rman(第三方备份工具)
一、pg逻辑备份与恢复
1 | postgres=# show port; |
1.pg_dump
pg_dump备份单库单表数据,pg_dump生成的备份文件是一个SQL文件或归档文件,SQL文件使用psql命令行恢复,归档文件使用pg_restore恢复
1 | (1)备份单个库mydb下面的所有表 |
2.pg_dumpall
pg_dump支持对整个数据库进行备份,将一个数据库中的所有数据备份到一个SQL文件中,该备份比较耗时,一般建议备份全局对象而非全库数据,恢复时使用 psql工具进行恢复
pg_dumpall需要和PostgreSQL 服务器连接多次(每个数据库一次)。如果你使用口令认证,可能每次都会询问口令。 这种情况下写一个
~/.pgpass可能会比较方便。
1 | (1)全库备份 |
3.pg_restore
pg_restore用于恢复由pg_dump 转储的任何非纯文本格式中的PostgreSQL数据库
1 | ---备份 |
4.pg_dump与pg_dumpall区别
pg_dump和pg_dumpall的主要区别在于备份的范围和格式支持
- 备份范围:
pg_dump用于备份单个数据库,它允许用户选择备份的格式(如SQL、自定义、目录、tar)和对象(如特定的表或schema),提供了高度的灵活性。它适用于需要备份或迁移单个数据库的场景pg_dumpall用于备份PostgreSQL实例中的所有数据库,包括全局对象,如表空间和角色。它只支持纯文本SQL脚本格式,这意味着pg_dumpall的输出是一个大型SQL文件,可以通过PostgreSQL的psql工具执行来恢复
- 格式支持:
pg_dump支持多种输出格式,包括自定义格式,这些格式可能更适合大型数据库的快速备份和恢复。这种多样性使得pg_dump在备份和恢复大型数据库时具有更大的灵活性pg_dumpall仅支持纯文本SQL脚本格式,这意味着它的用途相对单一,主要用于导出所有数据库的全局对象和数据
总的来说,选择使用pg_dump还是pg_dumpall取决于你的具体需求:如果你需要备份单个数据库并希望有更多的格式选择,pg_dump是更好的选择;如果你需要备份整个PostgreSQL实例,包括所有数据库和全局对象,并且不介意输出格式为纯文本SQL脚本,那么pg_dumpall可能更适合你的需求
二、pg物理备份与恢复
1.pg_basebackup
pg_basebackup从postgresql9.1开始引入,该工具通过replication协议连接到数据库,因此需要在pg_hba.conf文件中允许replication连接
- 备份
1 | (1)设置允许本地连接 |
- 恢复
1 | (1)停止数据库 |
- 增量备份恢复
1 | (1)创建全库基础备份 |
2.pg_rman
pg_rman类似于oracle数据库的rman备份恢复工具,支持在线和基于时间点的恢复,pg_rman使用前提需要开启归档和配置csvlog
https://ossc-db.github.io/pg_rman/index.html
- 全库备份
1 | (1)下载pg_rman |
- pg_rman增量备份
1 | (1)新增数据 |
- pg_rman归档备份
1 | (1)继续新增数据 |
- 删除备份
1 | [postgres@server ~]$ pg_rman show detail -B /home/postgres/rmanbak |
- pg_rman恢复数据
1 | (1)停止数据库 |
- pg_rman语法
1 | pg_rman manage backup/recovery of PostgreSQL database. |
- Title: PostgreSQL备份与恢复工具介绍
- Author: 𝓓𝓸𝓷
- Created at : 2024-06-18 10:37:39
- Updated at : 2025-07-15 15:11:24
- Link: https://www.zhangdong.me/postgresql-backup-restore.html
- License: This work is licensed under CC BY-NC-SA 4.0.
