PostgreSQL 备份与恢复
· 阅读需 1 分钟
查看磁盘占用情况
SELECT schemaname, relname, pg_size_pretty(pg_total_relation_size(relid)) AS size FROM pg_catalog.pg_statio_user_tables ORDER BY pg_total_relation_size(relid) DESC LIMIT 10;
备份单个数据库
-h 和 -p 可以省略,默认备份成纯文本格式。
# 备份成 sql 文件
pg_dump -U postgres --encoding utf8 -f dumpfile.sql dbname
# 从 sql 文件恢复
psql -U postgres -l
createdb -U postgres -T template0 new_dbname
psql -U postgres --encoding utf8 -d new_dbname -f dumpfile.sql # 15
psql -U postgres -encoding=utf8 -d new_dbname -f dumpfile.sql # 16
# 备份成自定义格式
pg_dump -U postgres --encoding utf8 -F c -f dumpfile.bak dbname
# 从自定义格式恢复
pg_restore -U postgres -d new_dbname dumpfile.bak
备份所有数据库
# 备份,使用 pg_dumpall 这个命令的时候,有几个数据库,就需要输入几次数据库密码
pg_dumpall -U postgres --encoding utf8 -f dumpfile_all.sql
# 恢复
psql -f dumpfile_all.sql postgres