작동하고 완전한 PostgreSQL DB 백업 및 테스트를 얻는 방법


45

MS SQL Server에서와 마찬가지로 Postgres 전체 백업을 수행하는 방법에 대한 명확한 대답을 얻을 수 있기를 바랐으며 고아 사용자를 돌 보았습니다.

내가 읽은 내용에서 잘못되었을 수 있습니다. 좋은 PostgreSQL 블로그를 찾는 것이 어려웠으므로 나에게 일부를 추천하십시오.이 앱이 어떻게 작동하는지 파악해야 백업 및 Slony를 신뢰할 수 있습니다. 복제. s 를 선택하는 동안 PgadminIII custom에서 directory, 및 tar형식을 통해 가져온 백업을 개발자가 복원 OID했지만 두 개는로드 tar되지 않고 디렉토리가 아니라 데이터 가 아니라고 말했습니다 . 정말 혼란 스러워요.

  1. PGAdminIII를 사용하고 pg_dump있으며 pg_dumpall옵션이 있습니다. 나는 다시 원하는 모든 것을 내가, 우리가 필요로하는 모든 데이터를이 데이터베이스 곳을 복원하고 그 예를 확인 시험이 필요하고 우리의 백업이 좋은까지있다. 결국 자동 복구 스크립트를 작성하고 싶지만 한 번에 하루에

pg_dumpall분명히이 -globals모든 것을 백업하기로했다 옵션 만에 대한 도움말 pg_dumpall을 보여줍니다 -g, --globals-only dump only global objects, no databases아닌 --globals옵션을 선택합니다.

나는 pg_dumpall적어도 외래 키를 백업 할 것이라고 생각 했지만 심지어 '옵션'인 것 같습니다. 설명서 에 따르면 외래 키를 백업 pg_dumpall하는 -o옵션 을 사용해야 하더라도 외래 키를 백업하지 않으려는 경우 실제로 상상할 수 없으며 이것이 기본 옵션으로 더 의미가 있습니다.

  1. 고아 사용자를 어떻게 관리하고 모든 것이 있는지 확인하려면 어떻게해야합니까? 실제로 다른 서버에서 백업 파일을 복원하고 모든 것이 작동하는지 확인하고 싶습니다. 누구든지 PostgreSQL에서 실제 백업을 수행하고 복원하는 방법에 대한 제안이 있으면 매우 감사하겠습니다.

PostgreSQL 서버가 있었지만 여전히 앱이 OID기본적으로 백업하지 않는 이유를 알 수 없습니다 ! 원하는 시간의 99.9 % 인 것 같습니다.

업데이트 1 :

포스트그레스 문서는 것을 언급 globals내가 찾던 옵션이 버전에 기본 옵션으로 보이지만, 여전히 필요 -o옵션을 선택합니다. 누군가가 필요한 모든 것을 갖춘 단일 데이터베이스를 복원하는 명령을 확인하거나 예제를 제공 할 수 있다면 감사하겠습니다.

편집 : 내 질문을 편집 하여이 질문의 독창성을 표시하도록 사이트에서 요청합니다. 이 질문은 백업의 OID, 글로벌 및 비 글로벌의 차이점 및 백업 권장 사항과 비교하여 백업이 좋은지 확인하기 위해 복원 권장 사항을 테스트하면서 문제를 제기하고 명확성을 얻습니다. 대답으로 인해 백업을 수행하고 전역 / oid를 파악하고 cron 작업을 사용하여 Postgres에서 야간에 테스트 복원 프로세스를 시작했습니다. 도와 주셔서 감사합니다!


답변:


58

pg_dumpall을 사용하여 전체 PostgreSQL 클러스터를 덤프 할 수 있습니다. 사용자들은 모든 데이터베이스와 단일 클러스터에 대한 모든 전역. 서버의 명령 줄에서 이와 같은 작업을 수행합니다. (기본 포트가 아닌 포트 5433에서 수신 대기 중입니다.) --clean 옵션이 필요할 수도 있고 필요하지 않을 수도 있습니다.

$ pg_dumpall -U postgres -h localhost -p 5433 --clean --file=dump.sql

여기에는 사용자 및 그룹, 테이블 스페이스 등에 대한 정보가 포함됩니다.

단일 데이터베이스를 백업하고 스크래치 서버로 옮길 경우 pg_dump로 데이터베이스를 덤프하고 다음 중 하나를 사용하여 전역을 덤프합니다.

  • pg_dumpall --globals-only또는
  • pg_dumpall --roles-only (역할 만 필요한 경우)

이렇게

$ pg_dump -U postgres -h localhost -p 5433 --clean --file=sandbox.sql sandbox
$ pg_dumpall -U postgres -h localhost -p 5433 --clean --globals-only --file=globals.sql

출력은 단지 텍스트 파일입니다.

이 파일을 다른 서버로 옮긴 후에는 전역 서버를 먼저로드 한 다음 데이터베이스 덤프를로드하십시오.

$ psql -U postgres -h localhost -p 5433 < globals.sql
$ psql -U postgres -h localhost -p 5433 < sandbox.sql

pg_dumpall은 적어도 외래 키를 백업 할 것이라고 생각했지만 심지어 '옵션'인 것 같습니다. pg_dumpall에서도 http://www.postgresql.org/docs/9.1/static/app-pg-dumpall.html 에 따르면 외래 키를 백업하려면 -o 옵션을 사용해야합니다

해당 참조는 " 응용 프로그램 이 어떤 방식으로 (예 : 외래 키 제약 조건에서) OID 열을 참조하는 경우이 옵션을 사용합니다 . 그렇지 않으면이 옵션을 사용해서는 안됩니다." (Emphasis가 추가되었습니다.) 응용 프로그램 이 OID 열을 참조 하는 것 같지 않습니다 . "외래 키 백업"에는이 옵션을 사용할 필요가 없습니다. (편집기 또는 파일 뷰어에서 덤프 파일을 읽습니다.)


3
sandbox.sql을 가져올 행에서 데이터베이스 이름이 누락되지 않았습니까? psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
SebK

그것은 것을보고 pg_dumpall9.5 버전이 제대로 작동하지 않는, NULL사용할 때 값 COPY. 다음과 같은 많은 오류가 발생합니다.psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.psql -f /tmp/dumpall.sql
piotrekkr
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.