PostgreSQL 数据库备份与恢复

本文介绍了使用pg_dump和pg_dumpall进行PostgreSQL数据库备份的方法,包括单个数据库和所有数据库的备份过程。同时,还提供了如何恢复备份文件的具体步骤。

参考:https://blog.youkuaiyun.com/jinjianghai/article/details/78657725

pg_dump只能备份单个数据库,而且恢复的时候需要创建空数据库。pg_dumpall可以备份所有数据库,并且备份角色、表空间。

#备份
pg_dump -h 116.62.49.254 -U postgres PowerGlobalViewDB > C:\nbed-20180516.bak

-h:数据库服务器地址;
-p:数据库端口号;
-U:U 大写,表示用户名;
-d:数据库名称;
-f:把备份文件放在哪里

#恢复(前提:你要备份的数据库软件里面必须先创建一个数据库)
psql -h localhost -U postgres -d PowerGlobalViewDB -f  "C:\nbed-20180516.bak"

ubuntu:
psql -h localhost -U postgres -d PowerGlobalViewDB < /home/jianghai/Desktop/nbed-20180516.bak 





PostgreSQL 提供了多种方式用于数据库备份,其中最常用的是使用 `pg_dump` 和 `pg_basebackup` 工具。以下是常见的 PostgreSQL 数据库备份方法及其相关命令: ### 逻辑备份:`pg_dump` `pg_dump` 是一个常用的命令行工具,用于生成 SQL 脚本或归档格式的数据库备份。它支持多种输出格式,包括纯文本 SQL 脚本、自定义归档(.dump)格式等。 - **备份整个数据库为 SQL 文件**: ```bash pg_dump -U username -h hostname -p port dbname > backup.sql ``` - **备份数据库为自定义归档格式**(支持压缩和选择性恢复): ```bash pg_dump -U username -Fc dbname > backup.dump ``` - **仅备份数据定义(DDL)**(不包含数据): ```bash pg_dump -U username -s dbname > schema_only.sql ``` - **仅备份数据(DML)**(不包含结构): ```bash pg_dump -U username -a dbname > data_only.sql ``` 此工具适用于需要进行逻辑恢复、版本迁移或在不同硬件架构之间传输数据的场景[^1]。 ### 物理备份:`pg_basebackup` `pg_basebackup` 是 PostgreSQL 提供的用于执行文件系统级别物理备份的工具,通常用于设置流复制或灾难恢复场景下的基础备份。 - **创建基础备份**(归档模式下): ```bash pg_basebackup -U username -h hostname -D /path/to/backup --format=t --gzip --label=backup ``` - **结合 WAL 归档实现 PITR**(时间点恢复): 需要配置 `archive_mode = on` 和 `archive_command`,然后执行 `pg_basebackup` 获取基础备份,并持续归档事务日志(WAL)。 此方法适合需要快速恢复整个数据库集群或构建复制从的场景。 ### 文件系统快照备份 对于支持快照的文件系统(如 LVM 或 ZFS),可以结合 PostgreSQL 的一致性检查点和文件系统快照功能进行备份。 - **步骤**: 1. 执行 `pg_start_backup()` 启动备份模式。 2. 创建文件系统快照。 3. 执行 `pg_stop_backup()` 结束备份模式。 4. 拷贝快照中的数据文件。 该方法适合大规模数据库的快速物理备份,但需要底层存储支持快照功能。 ### 使用第三方工具 - **pgBackRest**:支持全量、增量和差异备份,具备压缩、加密和并行化能力。 - **Barman**:适用于远程管理多个 PostgreSQL 实例的备份恢复。 - **WAL-E/WAL-G**:专注于 WAL 归档和基于 WAL 的恢复,适用于云环境。 这些工具通常用于生产环境中实现自动化、高可靠性的备份策略。 ### 备份验证 无论采用哪种方法,备份后应定期进行恢复测试以确保备份文件的完整性恢复性。例如: - 对于 `pg_dump` 生成的 SQL 文件,可尝试在测试环境中导入: ```bash psql -U username -d testdb < backup.sql ``` - 对于物理备份,应尝试恢复并启动 PostgreSQL 实例以验证其一致性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值