【问题标题】:PostgreSQL - Backup and Restore Database Tables with PartitionsPostgreSQL - 使用分区备份和恢复数据库表
【发布时间】:2013-10-15 06:05:31
【问题描述】:

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

【问题讨论】:

  • 您可以在此处发布您真正使用过的命令,因为问题可能出在他们身上...说真的,只需复制并粘贴在这里...
  • 我添加了一些细节并更改了压缩命令
  • 恢复怎么样,你是怎么做的?在pgAdmin之后你压缩了结果吗?怎么样?
  • 问题中的相同命令。我使用dump_all 进行了备份,然后使用zip -f mybackup 压缩了结果,然后使用一个命令sudo gunzip -c /home/ubuntu/Desktop/backupFile.zip | psql -U postgres 将其解压缩并恢复到另一个数据库中@ 你有更好的方法吗?
  • 不,你没有!!! zip -f mybackup 如何生成一个名为 backupFile.zip 的文件?不管怎样,我想我猜到了你的问题,看我的回答……

标签: database postgresql backup dump


【解决方案1】:

如果你确实使用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 对于小型数据库是可以的。

【讨论】:

  • 非常感谢您的帮助!
  • @Shadin @MetheusOl 我已经尝试了上述所有建议,但仍然出现错误。 gzip: /users/srv-postgresql/backup/bmipgsqld1-testdb-2016-05-31-23-00-05.psql.gz: Permission denied
  • @kjosh:您的问题是您正在运行备份的用户在操作系统上的权限。如果您需要更多帮助,我建议您创建一个新问题。
猜你喜欢
  • 2014-09-03
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-14
相关资源
最近更新 更多