pgsql备份恢复

📅 2026/7/1 5:37:13
pgsql备份恢复
备份需根据自身情况替换参数使用前请在测试环境验证后使用备份脚本#!/bin/bash# 添加备份元数据PGPASSWORD$PG_PASSWORDpg_dumpall-h$PG_HOST-p$PG_PORT-U$PG_USER\--clean--if-exists|gzip$BACKUP_FILE# 同时生成备份信息echo备份时间:$DATE${BACKUP_FILE}.infoechoPostgreSQL版本:$(psql-h$PG_HOST-p$PG_PORT-U$PG_USER-dpostgres-t-cSHOW server_version;)${BACKUP_FILE}.info使用--clean选项自动清理现有对象。1. 恢复备份文件解压并恢复所有数据库# 解压并恢复到数据库gunzip-cpg_backup_2026-06-12_14-30-00.sql.gz|psql-hlocalhost-p5432-Upostgres或者分步操作# 先解压gunzip pg_backup_2026-06-12_14-30-00.sql.gz# 会得到 pg_backup_2026-06-12_14-30-00.sql 文件# 然后恢复psql-hlocalhost-p5432-Upostgres-fpg_backup_2026-06-12_14-30-00.sql2. 恢复特定数据库如果需要只恢复某个数据库# 先从备份中提取特定数据库gunzip-cpg_backup_2026-06-12_14-30-00.sql.gz|grep-iconnect to your_database_name-A1000000|psql-hlocalhost-p5432-Upostgres-dyour_database_name3. 恢复前注意事项目标数据库应该是空的或者先删除现有数据库DROPDATABASEIFEXISTSdatabase_name;CREATEDATABASEdatabase_name;或者使用 --clean 选项重新创建pg_dumpall-hlocalhost-p5432-Upostgres--clean|gzipbackup.sql.gz恢复整个集群会覆盖所有数据库和角色5. 查看备份内容不恢复# 查看备份文件包含哪些数据库gunzip-cpg_backup_2026-06-12_14-30-00.sql.gz|grep^\\connect# 查看前100行gunzip-cpg_backup_2026-06-12_14-30-00.sql.gz|head-100