PostgreSQL - 使用分区备份和还原数据库表

时间:2013-10-08 10:46:21

标签: database postgresql backup dump

我正在研究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进行备份,使用“备份服务器”选项。

backup

1 个答案:

答案 0 :(得分:3)

如果你曾使用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适用于小型数据库。