问题:PostgreSQL - 使用分区备份和恢复数据库表

我正在使用 PostgreSQL 8.4,我想做备份和恢复(从 Ubuntu 11.10 到 Ubuntu 12.4)

我想包括所有分区、集群、角色和东西。

我的命令:备份:

dumb_all > filename 

压缩:

zip -f mybackup

解压和恢复:

sudo gunzip -c /home/ubuntu/Desktop/backupFile.zip | psql -U postgres

问题在恢复过程中,我收到错误

invalid command \.
ERROR:  syntax error at or near "2"
LINE 1: 2 2 1
        ^
invalid command \.
ERROR:  syntax error at or near "1"
LINE 1: ...
        ^
out of memory

另外,带有分区的表没有恢复。还有一些没有任何数据的表恢复!

请帮忙!

编辑

我使用 pgAdmin 进行备份,使用“备份服务器”选项。

备份

解答

如果您确实使用zip来压缩输出,那么您应该使用unzip来解压缩它,而不是gunzip,它们使用不同的格式/算法。

我建议你只使用gzipgunzip。例如,如果您生成了一个名为mybackup.sql的备份,您可以使用 gzip 压缩它:

gzip mybackup.sql

它将生成一个名为mybackup.sql.gz的文件。然后,要恢复,您可以使用:

gunzip -c mybackup.sql.gz | psql -U postgres

另外,我建议您避免使用 pgAdmin 进行转储。不是它不能做,只是你不能自动化它,你可以很容易地用同样的方式使用pg_dumpall:

pg_dumpall -U postgres -f mybackup.sql

您可以使用管道转储和压缩而无需中间文件:

pg_dumpall -U postgres | gzip -c > mybackup.sql.gz

顺便说一句,我真的建议您避免使用pg_dumpall并为每个数据库使用具有自定义格式的pg_dump,因为您已经将结果压缩并且更易于使用后者。但是pg_dumpall对于小型数据库是可以的。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐