跳到主要内容

1 篇博文 含有标签「PostgreSQL」

查看所有标签

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