Database PostgreSQL-使用分区备份和还原数据库表
我正在研究PostgreSQL 8.4,我想做备份和恢复(从Ubuntu11.10到Ubuntu12.4) 我想包括所有的分区、集群、角色等等 我的命令: 备份: 压缩:Database PostgreSQL-使用分区备份和还原数据库表,database,postgresql,backup,dump,Database,Postgresql,Backup,Dump,我正在研究PostgreSQL 8.4,我想做备份和恢复(从Ubuntu11.10到Ubuntu12.4) 我想包括所有的分区、集群、角色等等 我的命令: 备份: 压缩: zip -f mybackup 解压缩和还原: sudo gunzip -c /home/ubuntu/Desktop/backupFile.zip | psql -U postgres 问题是在恢复过程中,我遇到了一个错误 invalid command \. ERROR: syntax error at or nea
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
,它们使用不同的格式/算法
我建议您只使用gzip
和gunzip
。例如,如果您生成了一个名为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_dumpall
,因为您已经得到了压缩的结果,而且后者更易于使用。但是对于小型数据库来说,pg_dumpall
是可以的。您可以在这里发布您真正使用的命令,因为问题可能出在这些命令上。。。说真的,只是在这里复制和粘贴…我添加了一些细节,并更改了压缩命令。恢复怎么样,你是怎么做的?pgAdmin之后,您是否压缩了结果?怎么做?问题中的相同命令。我使用dump_all
进行备份,然后使用zip-f mybackup
压缩结果,然后使用一个命令sudo gunzip-c/home/ubuntu/Desktop/backupFile.zip | psql-U postgres
将其解压缩并还原到另一个数据库中。你有更好的方法吗?不,你没有!!!zip-f mybackup
将如何生成名为backupFile.zip的文件?无论如何,我想我猜到了你的问题,看看我的答案…非常感谢你的帮助@Shadin@MetheusOl我尝试了上面的所有建议,但仍然是一个错误gzip:/users/srv postgresql/backup/bmipgsqld1-testdb-2016-05-31-23-00-05.psql.gz:权限被拒绝
@kjosh:您的问题是运行备份的用户在操作系统上的权限。如果你想在这方面得到更多帮助,我建议你提出一个新问题。
pg_dumpall -U postgres | gzip -c > mybackup.sql.gz