.tar 파일에서 PostgreSQL 데이터베이스를 복원하는 방법은 무엇입니까?


20

WHM을 사용하여 증분 백업 중에 모든 PostgreSQL 데이터베이스가 백업되어 $ dbName이 생성됩니다. 타르 파일.

데이터는 이러한 .tar 파일에 저장되어 있지만 SSH를 통해 개별 데이터베이스로 데이터를 복원하는 방법을 모르겠습니다. 특히 파일 위치.

나는 사용하고있다 :

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

'입력 파일을 열 수 없습니다 : 권한이 거부되었습니다'라는 오류가 발생합니다.

도움을 주셔서 감사합니다.


이 명령을 실행하는 사용자가 해당 파일에 액세스 할 수 있습니까?
mat

안녕 매트, 당신은 그렇게 생각하지만 (루트로 실행) 많은 조합 후 문제를 해결하고 원시 .tar 파일을 tmp로 옮겼습니다 .... pg_restore -c -i -U postgres -d client03 -v "/tmp/client03.tar"-W 마지막에 -W가 필요한 경우 비밀번호를 강제로 입력하여 모든 항목을 다시 조합 할 수있게하는 주요 트릭이었습니다.
Stephen

답변:


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"

경고를 피하려면 대상 서버에 이미 존재하는 백업 파일에서 오브젝트 소유자의 역할을 갖는 것이 좋습니다. 또한 해당 역할이 생성하고 소유 한 대상 DB가 이미 있어야합니다.


1

.tar 파일을 가져올 수 있는지 확실하지 않습니다. 나는 할 것이다

tar -zxvf client03.tar 

파일 안에있는 것을 추출하고 pg_restore를 다시 시도하십시오. 베어 메탈 복원과 동일한 복원 방법이 있으므로 pg_restore가 작동한다는 것을 알고 있습니다.


1
안녕 스티븐, 네, 분명히 할 수 있습니다, 올바른 코드를 얻고 액세스 권한이있는 폴더에 파일을 놓는 데 시간이 걸렸습니다. :)
Stephen

"-z"는 gzip으로 압축되지 않은 tar 일 뿐이므로 오류를 반환합니다.
Alex

알렉스는 100 % 정확합니다.
Stephen Thompson

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 / 리눅스 콘솔 :

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

-상세 도움말

pg_restore --help

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.