重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛

标题: PostgreSQL的备份方式 [打印本页]

作者: jiawang    时间: 2025-4-10 15:24
标题: 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
1
参数说明:


-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
1
对于压缩文件:
pg_restore -U username -d new_database_name /path/to/backup.dump
1
1.2 使用 pg_dumpall 备份所有数据库
pg_dumpall 用于备份整个 PostgreSQL 实例(包括所有数据库和全局对象,如角色、权限等)。


备份命令
pg_dumpall -U username -f /path/to/backup_all.sql
1
还原命令
psql -U username -f /path/to/backup_all.sql
1
2. 物理备份(pg_basebackup)
2.1 使用 pg_basebackup
pg_basebackup 是 PostgreSQL 提供的物理备份工具,适合对数据库进行完整二进制备份。


备份命令
pg_basebackup -U replication_user -D /path/to/backup_directory -Fp -Xs -P
1
参数说明:


-U: 备份用户(需要配置 replication 权限)。
-D: 目标备份目录。
-Fp: 文件模式(Plain format)。
-Xs: 包含 WAL 日志。
-P: 显示进度。
还原步骤
停止 PostgreSQL 服务:
systemctl stop postgresql
1
将备份数据复制到 PostgreSQL 数据目录:
cp -r /path/to/backup_directory/* /var/lib/pgsql/data/
1
启动 PostgreSQL 服务:
systemctl start postgresql
1
3. 归档日志备份(WAL 日志)
归档日志备份适用于需要时间点恢复 (Point-in-Time Recovery, PITR) 的场景。


步骤
配置归档模式:
编辑 postgresql.conf:


archive_mode = on
archive_command = 'cp %p /path/to/archive/%f'
1
2
重启 PostgreSQL:


systemctl restart postgresql
1
定期备份归档日志:
配置脚本定期复制 /path/to/archive/ 目录。


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







欢迎光临 重庆思庄Oracle、、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2