逻辑备份
pg_dumppg_dump -U username -h localhost -p 5432 -F c -b -v -f /backup/db_backup.backup mydb
(-F c为自定义格式,支持压缩和恢复特定表)。pg_dump -U username -F c mydb | gzip > mydb_backup.sql.gz
```。
物理备份
pg_basebackuppg_basebackup -U username -D /backup/full_backup -F t -z -P -h localhost -p 5432
(-F t为tar格式,-z压缩,-P显示进度)。连续归档(PITR)
postgresql.conf,设置wal_level=replica、archive_mode=on,并指定归档路径archive_command。自动化定时备份
cron定时执行备份脚本,例如每日凌晨备份:0 1 * * * pg_dump -U postgres -F c -f /backup/daily_backup_$(date +\%Y\%m\%d).backup mydb
```。
逻辑备份恢复
pg_restorepg_restore -U postgres -d mydb /backup/db_backup.backup # 恢复整个数据库
pg_restore -U postgres -d mydb -t table_name /backup/db_backup.backup # 恢复特定表
```。
物理备份恢复
sudo systemctl stop postgresql。rm -rf /var/lib/postgresql/12/main/*(路径需匹配实际版本)。cp -r /backup/full_backup/* /var/lib/postgresql/12/main/。sudo systemctl start postgresql。连续归档恢复(PITR)
recovery.conf(PostgreSQL 10前)或postgresql.auto.conf(10后),设置restore_command和recovery_target_time。pg_dump时通过-W或环境变量PGPASSWORD避免密码泄露。pg_restore测试备份可恢复性,检查日志文件/var/log/postgresql/确认无错误。-j参数并行导出(需PostgreSQL 9.3+)。参考来源: