답변:
덤프 파일 작성 방법에 따라 두 가지 도구가 있습니다.
첫 번째 참조 소스 pg_dump(1)
는 덤프 자체를 작성하는 매뉴얼 페이지 여야 합니다. 그것은 말한다 :
덤프는 스크립트 또는 아카이브 파일 형식으로 출력 될 수 있습니다. 스크립트 덤프는 데이터베이스를 저장된 당시의 상태로 재구성하는 데 필요한 SQL 명령이 포함 된 일반 텍스트 파일입니다. 이러한 스크립트에서 복원하려면 psql (1)에 공급하십시오. 스크립트 파일을 사용하여 다른 시스템 및 기타 아키텍처에서도 데이터베이스를 재구성 할 수 있습니다. 다른 SQL 데이터베이스 제품에서도 일부 수정되었습니다.
데이터베이스를 재 구축하려면 대체 아카이브 파일 형식을 pg_restore (1)와 함께 사용해야합니다. 그것들은 pg_restore가 복원 된 것을 선택적으로하거나 심지어 복원되기 전에 항목을 재정렬 할 수있게합니다. 아카이브 파일 형식은 여러 아키텍처에서 이식 가능하도록 설계되었습니다.
따라서 덤프 방식에 따라 다릅니다. 우수한 file(1)
명령을 사용하여 알아낼 수 있습니다. ASCII 텍스트 및 / 또는 SQL을 psql
언급하면 복원해야합니다. 그렇지 않으면 사용해야합니다.pg_restore
복원은 매우 쉽습니다.
psql -U username -d dbname < filename.sql
-- For Postgres versions 9.0 or earlier
psql -U username -d dbname -1 -f filename.sql
또는
pg_restore -U username -d dbname -1 filename.dump
해당 맨 페이지를 확인하십시오. 복원 작동 방식에 영향을주는 몇 가지 옵션이 있습니다. 덤프 생성 방법에 따라 복원하기 전에 "라이브"데이터베이스를 정리하거나 주석에서 지적한대로 template0에서 데이터베이스를 다시 작성해야 할 수도 있습니다.
-d
와 -f
같은 시간에. pg_restore: options -d/--dbname and -f/--file cannot be used together
cannot be used together
는 여기를보십시오 : stackoverflow.com/questions/27882070/…
백업 만들기
pg_dump -h localhost -p 5432 -U postgres -F c -b -v -f
"/usr/local/backup/10.70.0.61.backup" old_db
-F c는 사용자 정의 형식 (압축되어 -j N과 병렬로 수행 가능) -b는 얼룩을 포함하고, -v는 자세하고 -f는 백업 파일 이름입니다.
백업에서 복원
pg_restore -h localhost -p 5432 -U postgres -d old_db -v
"/usr/local/backup/10.70.0.61.backup"
-h localhost- 옵션 을 설정해야합니다.
postgres
데이터베이스에 대한 모든 권한을 가지려면 로그인해야 합니다.
su - postgres
psql -l # will list all databases on Postgres cluster
pg_dump / pg_restore
pg_dump -U username -f backup.dump database_name -Fc
전환 -F
백업 파일의 형식을 지정합니다 :
c
압축되어 사용자 정의 PostgreSQL 형식을 사용하며 백업 파일 크기가 가장 작습니다.d
각 파일이 하나의 테이블 인 디렉토리t
TAR 아카이브 용 (사용자 정의 형식보다 큼)-h
/ --host
서버가 실행중인 시스템의 호스트 이름을 지정합니다.-W
/ --password
강제 pg_dump
암호 입력을 요구하도록 데이터베이스에 연결하기 전에백업 복원 :
pg_restore -d database_name -U username -C backup.dump
-C
데이터를 가져 오기 전에 매개 변수 가 데이터베이스를 작성해야합니다. 작동하지 않으면 항상 데이터베이스를 만들 수 있습니다. 명령 사용 ( postgres
데이터베이스를 작성할 권한이있는 사용자 또는 다른 계정으로)createdb db_name -O owner
pg_dump / psql
인수를 지정하지 않은 경우 -F
기본 일반 텍스트 SQL 형식이 사용되었습니다 -F p
. 그런 다음을 사용할 수 없습니다 pg_restore
. 로 데이터를 가져올 수 있습니다 psql
.
지원:
pg_dump -U username -f backup.sql database_name
복원:
psql -d database_name -f backup.sql
postgres
에 비밀번호가 설정되어 -W
있으면 옵션을 사용해야합니다. 예를 들어 su postgres
터미널에서 아무 것도 하지 않고 우분투 에서 $ psql -h localhost -U postgres -W -d DB_NAME < DB_BACKUP.sql
로컬 호스트에서 백업을 복원하는 데 도움이되는 명령이 있습니다. 참고 -h
옵션이 필요합니다.
-W
옵션은 절대 필수가 아닙니다. pg_dump
서버에서 비밀번호 인증이 필요한 경우 비밀번호를 자동으로 묻습니다. 또한 PGPASSWORD
일반 텍스트 암호를 사용하는 경우 env 변수 를 사용할 수 있습니다 . -h
기본값을 PGHOST
적용 할 수없는 경우 필요합니다 . 이 옵션은 많은 PostgreSQL 유틸리티에 공통적이므로이 질문에 대답 할 필요는 없습니다 (설정에 따라 크게 다름).
pg_dump/psql
부분은 저에게 효과적입니다. 그러나 첫 번째 부분 pg_dump/pg_restore
은 복원을 위해 작동하지 않습니다. 감사합니다.
-Fc
아래는 pg_dump
데이터베이스를 복원하는 데 사용하는 버전입니다 .
pg_restore -h localhost -p 5432 -U postgres -d my_new_database my_old_database.backup
또는 사용 psql
:
psql -h localhost -U postgres -p 5432 my_new_database < my_old_database.backup
여기서 -h
호스트, -p
포트, -u
로그인 사용자 이름, -d
데이터베이스 이름
my_new_database
를 사용할 때 이미 존재해야 psql
합니까?
GZIP로 백업 및 복원
큰 데이터베이스의 경우 이것은 매우 좋습니다
지원
pg_dump -U user -d mydb | gzip > mydb.pgsql.gz
복원
gunzip -c mydb.pgsql.gz | psql dbname -U user
gunzip -c mydb.pgsql.gz | sudo -u postgres psql
데이터베이스에서 작동 할 권한을 얻으려면. 또한 --clean
덤프 할 때 기존 데이터를 모두 지우는 플래그를 고려하면 유용 할 수 있습니다.
이것은 나를 위해 일했다 :
pg_restore --verbose --clean --no-acl --no-owner --host=localhost --dbname=db_name --username=username latest.dump
--no-owner
정말 도움이되었습니다.
1. 터미널을 엽니 다.
다음 명령을 사용하여 데이터베이스를 2.backup
postgres 저장소-/opt/PostgreSQL/9.1/bin/
소스 데이터베이스 서버-192.168.1.111
백업 파일 위치 및 이름-/home/dinesh/db/mydb.backup
소스 DB 이름-mydatabase
/opt/PostgreSQL/9.1/bin/pg_dump --host '192.168.1.111'-포트 5432 --username "postgres"--no-password --format custom --blobs --file "/ home / dinesh / db /mydb.backup ""mydatabase "
mydb.backup 파일을 대상으로 복원합니다.
목적지 서버-localhost
대상 데이터베이스 이름-mydatabase
백업을 복원 할 데이터베이스를 작성하십시오.
/opt/PostgreSQL/9.1/bin/psql -h 'localhost'-p 5432 -U postgres -c "CREATE DATABASE mydatabase"
백업을 복원하십시오.
/opt/PostgreSQL/9.1/bin/pg_restore --host 'localhost'-포트 5432 --username "postgres"--dbname "mydatabase"--no-password --clean "/ home / dinesh / db / mydb. 지원"
pg_dump를 사용하여 백업을 생성하면 다음과 같은 방법으로 쉽게 복원 할 수 있습니다.
cd "C:\ProgramFiles\PostgreSQL\9.5\bin"
For example: psql.exe -U postgres -d YourDatabase -f D:\Backup\.sql
1) psql 터미널을 엽니 다.
2) 덤프 파일의 압축을 풀고 untar하십시오.
3) 빈 데이터베이스를 작성하십시오.
4) 다음 명령을 사용하여 .dump 파일을 복원하십시오.
<database_name>-# \i <path_to_.dump_file>
이 시도:
psql -U <username> -d <dbname> -f <filename>.sql
.sql 파일에서 DB psql 복원
아래 링크에서 말했듯이 덤프 파일을 복원하기 위해 psql 명령을 사용할 수 있습니다.
https://www.postgresql.org/docs/8.1/static/backup.html#BACKUP-DUMP-RESTORE
psql dbname < infile
사용자 이름을 설정 해야하는 경우 다음과 같이 명령 뒤에 사용자 이름을 추가하십시오.
psql dbname < infile username
시험:
pg_restore -h localhost -p 5432 -U <username> -d <dbname> -1 <filename>
postgres 백업 파일 복원은 처음에 백업을 수행 한 방법에 따라 다릅니다.
pg_dump를 -F c 또는 -F d와 함께 사용한 경우 pg_restore를 사용해야합니다. 그렇지 않으면
psql -h localhost -p 5432 -U postgres <백업 파일
네크로 포스트 (necropost)에 대해 유감이지만,이 해결책은 저에게 효과적이지 않았습니다. 저는 postgres 10을 사용하고 있습니다. Linux :
service postgresql-10 restart
내 backup.sql이 위치한 디렉토리를 변경하고 다음을 실행하십시오.
psql postgres -d database_name -1 -f backup.sql
-database_name은 내 데이터베이스 이름입니다.
-backup.sql은 .sql 백업 파일의 이름입니다.
pg_dump를 실행하는 데 인증 문제가있어서 덤프 파일을 옮겼습니다.
mv database_dump /tmp
임시 디렉토리에 넣은 다음 실행
su -u postgres
cd /tmp
pg_restore database_dump
큰 데이터베이스 덤프가있는 경우 현재 사용자와 postgres 사용자가 데이터베이스 덤프 파일에 액세스하여 데이터베이스 덤프 파일을 넣을 수있는 다른 디렉토리를 만들면됩니다.
백업 SQL 파일이 있으면 쉽게 복원 할 수 있습니다. 아래에 주어진 지침을 따르십시오.
1. At first, create a database using pgAdmin or whatever you want (for example my_db is our created db name)
2. Now Open command line window
3. Go to Postgres bin folder. For example: cd "C:\ProgramFiles\PostgreSQL\pg10\bin"
4. Enter the following command to restore your database: psql.exe -U postgres -d my_db -f D:\Backup\backup_file_name.sql
필요한 경우 postgres 사용자의 비밀번호를 입력하고 Postgres가 작업을 수행하도록하십시오. 그런 다음 복원 프로세스를 확인할 수 있습니다.
데이터를 백업하거나 백업에서 데이터를 복원하려는 경우 다음 명령을 실행할 수 있습니다.
데이터 백업을 만들려면 postgres \ bin \ 디렉토리로 이동 C:\programfiles\postgres\10\bin\
한 후 다음 명령을 입력하십시오.
pg_dump -FC -U ngb -d ngb -p 5432 >C:\BACK_UP\ngb.090718_after_readUpload.backup
백업에서 데이터를 복원하려면 postgres \ bin \ 디렉토리로 이동 C:\programfiles\postgres\10\bin\
한 다음 아래 명령을 입력하십시오.
C:\programFiles\postgres\10\bin> pg_restore -Fc -U ngb -d ngb -p 5432 <C:\ngb.130918.backup
백업 파일이 존재하는지 확인하십시오.
아래의 작동 예를 참조하십시오
C : / Program Files / PostgreSQL / 9.4 / bin \ pg_restore.exe --host localhost --port 5432 --username "postgres"--dbname "newDatabase"--no-password --verbose
" C : \ Users \ Yogesh \ Downloads \ 새 다운로드 \ DB.backup "