如何从.tar文件还原PostgreSQL数据库?


20

我在使用WHM进行增量备份期间备份了所有PostgreSQL数据库,这创建了$ dbName。tar文件。

数据存储在这些.tar文件中,但是我不知道如何通过SSH将其还原到各个数据库中。特别是文件位置。

我一直在使用:

pg_restore -d client03 /backup/cpbackup/daily/client03/psql/client03.tar

生成错误“无法打开输入文件:权限被拒绝”

任何帮助表示赞赏。


您与该命令一起运行的用户是否有权访问该文件?

嗨,Mat,您会这样认为(以root身份运行),但是在许多组合之后才解决了该问题,并将原始.tar文件移动到了tmp...。pg_restore -c -i -U postgres -d client03 -v “ /tmp/client03.tar” -W结尾处的-W是主要技巧,它可以按要求强制输入密码,从而使所有内容重新组合在一起。
斯蒂芬,2010年

Answers:


24

找到正确的代码字符串,以防其他人找到此线程。

pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar" -W

细分来自http://www.postgresql.org/docs/7.3/static/app-pgrestore.html和一些反复试验。

实质上...

-c to clean the database
-i to ignore any database version checks
-U to force a user
-d to select the database
-v verbose mode, don't know why
"$$" the location of the files to import in tmp to get around permission issues
-W to force asking for the password to the user (postgres)

希望以上内容对其他人有帮助。


tar.gz怎么办?
ERI

2

当使用PgAdmin III为我执行还原时,它通过使用自己构建的以下命令来完美地工作:

pg_restore --host localhost --port 5432 --username "my_user_name" --dbname "my_db_name" --role "my_user_name" --no-password  --verbose "/Users/me/Desktop/backup_file.tar"

请注意,为避免警告,最好在目标服务器中已存在的备份文件中扮演对象所有者的角色。同样,您应该已经拥有该角色创建和拥有的目标数据库。


1

我不确定它可以导入.tar文件。我会做一个

tar -zxvf client03.tar 

提取文件中的所有内容,然后再次尝试pg_restore。我知道pg_restore可以用,因为我们从裸机还原中使用了相同的还原方法。


1
嗨,斯蒂芬,是的,显然可以,我花了一些时间来获取正确的代码,并将文件放到允许访问的文件夹中:)
斯蒂芬

“ -z”将返回错误,因为它只是一个tar,未使用gzip压缩。
亚历克斯(Alex)2010年

亚历克斯是100%正确的。
斯蒂芬·汤普森

0

下面是通过pgAdmin iii为我生成的,方法是单击数据库,然后右键单击并选择还原。我导航到我拥有的.tar文件,它是自己完成的。

/usr/bin/pg_restore --host localhost --port 5434 --username "postgres" \
--dbname "dvdrental" --no-password  --schema public --verbose \
"/home/npena/Desktop/dvd/dvdrental.tar"

0

对于9.5版,请在命令行中运行以下命令

pg_restore -W -c -U [username] -d [database_name] -v "[path to extracted tar]"


0

GNU / LINUX控制台:

pg_restore -h 127.0.0.1 -p 5432 -U“ postgres” -d“ dvdrental_tpl” -v“ /var/backups/dvdrental.tar”;

-详细帮助

pg_restore-帮助

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.