![如何备份和恢复 PostgreSQL 实例,包括角色权限?](https://linux22.com/image/1620316/%E5%A6%82%E4%BD%95%E5%A4%87%E4%BB%BD%E5%92%8C%E6%81%A2%E5%A4%8D%20PostgreSQL%20%E5%AE%9E%E4%BE%8B%EF%BC%8C%E5%8C%85%E6%8B%AC%E8%A7%92%E8%89%B2%E6%9D%83%E9%99%90%EF%BC%9F.png)
我尝试了网上的很多教程,但它们往往省略了实际的恢复命令,或者将角色权限重置为零,或者使用纯 SQL 备份,导致任何剩余数据出现错误(非幂等)。我不知道该怎么办。
100% 备份和恢复 PostgreSQL 实例的一些有效语法是什么?
答案1
最常见的方式 - 简单,不需要文件系统访问,但对于大型数据库来说太慢了:
备份:pg_dumpall > backup.sql
恢复:psql -f backup.sql
对于更大的数据库,您可能需要使用快照方法(例如使用 LVM、ZFS、BTRFS),然后将快照的内容打包成 tar。
答案2
$ pg_dumpall --clean -U <user> -f backup.sql
$ psql -U <user> -f backup.sql
警告:
- 用户必须具有 PostgreSQL 实例的管理权限。
pg_dump
相比之下,忽略特权pg_dumpall
。- 如果您忘记了
--clean
,那么 .SQL 脚本将与数据库中当前的任何剩余内容发生冲突。