3.6. SQL 덤프를 사용하여 PostgreSQL 데이터 백업


SQL 덤프 방법은 SQL 명령을 사용하여 덤프 파일을 생성하는 방법을 기반으로 합니다. 덤프가 데이터베이스 서버에 다시 업로드되면 덤프 당시와 동일한 상태로 데이터베이스를 다시 생성합니다.

SQL 덤프는 다음 PostgreSQL 클라이언트 애플리케이션에 의해 보장됩니다.

  • pg_dump 는 역할 또는 테이블 공간에 대한 클러스터 전체 정보가 없는 단일 데이터베이스를 덤프합니다.
  • pg_dumpall 은 지정된 클러스터의 각 데이터베이스를 덤프하고 역할 및 테이블 공간 정의와 같은 클러스터 전체 데이터를 유지합니다.

기본적으로 pg_dumppg_dumpall 명령은 결과를 표준 출력에 작성합니다. 덤프를 파일에 저장하려면 출력을 SQL 파일로 리디렉션합니다. 결과 SQL 파일은 텍스트 형식 또는 병렬 처리를 허용하는 다른 형식 및 개체 복원에 대한 보다 자세한 제어가 될 수 있습니다.

데이터베이스에 액세스할 수 있는 원격 호스트에서 SQL 덤프를 수행할 수 있습니다.

3.6.1. SQL 덤프의 이점 및 단점

SQL 덤프는 다른 PostgreSQL 백업 방법과 비교하여 다음과 같은 이점이 있습니다.

  • SQL 덤프는 서버 버전에 한정되지 않은 유일한 PostgreSQL 백업 방법입니다. pg_dump 유틸리티의 출력은 이후 버전의 PostgreSQL으로 다시 로드할 수 있으며 이는 파일 시스템 수준 백업 또는 연속 보관에서는 불가능합니다.
  • SQL 덤프는 32비트에서 64비트 서버로 이동하는 것과 같이 데이터베이스를 다른 시스템 아키텍처로 전송할 때 작동하는 유일한 방법입니다.
  • SQL 덤프는 내부적으로 일관성 있는 덤프를 제공합니다. 덤프는 pg_dump 가 실행될 때 데이터베이스의 스냅샷을 나타냅니다.
  • pg_dump 유틸리티는 실행 중일 때 데이터베이스에서 다른 작업을 차단하지 않습니다.

SQL 덤프의 단점은 파일 시스템 수준 백업에 비해 시간이 더 필요하다는 것입니다.

3.6.2. pg_dump를 사용하여 SQL 덤프 수행

클러스터 전체 정보 없이 단일 데이터베이스를 덤프하려면 pg_dump 유틸리티를 사용합니다.

사전 요구 사항

  • 덤프하려는 모든 테이블에 대한 읽기 권한이 있어야 합니다. 전체 데이터베이스를 덤프하려면 postgres 슈퍼유저 또는 데이터베이스 관리자 권한이 있는 사용자로 명령을 실행해야 합니다.

프로세스

  • 클러스터 전체 정보 없이 데이터베이스를 덤프합니다.

    $ pg_dump <db_name> > <dump_file>
    Copy to Clipboard Toggle word wrap

    연결할 데이터베이스 서버 pg_dump 를 지정하려면 다음 명령줄 옵션을 사용합니다.

    • 호스트를 정의하는 -h 옵션입니다.

      기본 호스트는 로컬 호스트이거나 PGHOST 환경 변수에 의해 지정된 항목입니다.

    • 포트를 정의하는 -p 옵션입니다.

      기본 포트는 PGPORT 환경 변수 또는 컴파일된 상태로 표시됩니다.

3.6.3. pg_dumpall을 사용하여 SQL 덤프 수행

지정된 데이터베이스 클러스터에서 각 데이터베이스를 덤프하고 클러스터 전체 데이터를 유지하려면 pg_dumpall 유틸리티를 사용합니다.

사전 요구 사항

  • postgres 슈퍼유저 또는 데이터베이스 관리자 권한이 있는 사용자로 명령을 실행해야 합니다.

프로세스

  • 데이터베이스 클러스터에서 모든 데이터베이스를 덤프하고 클러스터 전체 데이터를 유지합니다.

    $ pg_dumpall > <dump_file>
    Copy to Clipboard Toggle word wrap

    연결할 데이터베이스 서버 pg_dumpall 을 지정하려면 다음 명령줄 옵션을 사용합니다.

    • 호스트를 정의하는 -h 옵션입니다.

      기본 호스트는 로컬 호스트이거나 PGHOST 환경 변수에 의해 지정된 항목입니다.

    • 포트를 정의하는 -p 옵션입니다.

      기본 포트는 PGPORT 환경 변수 또는 컴파일된 상태로 표시됩니다.

    • 기본 데이터베이스를 정의하는 -l 옵션입니다.

      이 옵션을 사용하면 초기화 중에 자동으로 생성된 postgres 데이터베이스와 다른 기본 데이터베이스를 선택할 수 있습니다.

3.6.4. pg_dump를 사용하여 덤프된 데이터베이스 복원

pg_dump 유틸리티를 사용하여 덤프한 SQL 덤프에서 데이터베이스를 복원하려면 다음 단계를 따르십시오.

사전 요구 사항

  • postgres 슈퍼유저 또는 데이터베이스 관리자 권한이 있는 사용자로 명령을 실행해야 합니다.

프로세스

  1. 새 데이터베이스를 생성합니다.

    $ createdb <db_name>
    Copy to Clipboard Toggle word wrap
  2. 개체를 소유하거나 덤프된 데이터베이스의 오브젝트에 대한 권한이 부여된 모든 사용자가 이미 있는지 확인합니다. 이러한 사용자가 존재하지 않는 경우 복원에서 원래 소유권 및 권한으로 오브젝트를 다시 생성하지 못합니다.
  3. psql 유틸리티를 실행하여 pg_dump 유틸리티로 생성된 텍스트 파일 덤프를 복원합니다.

    $ psql <db_name> < <dump_file>
    Copy to Clipboard Toggle word wrap

    여기서 <dump_file >은 pg_dump 명령의 출력입니다. 비 텍스트 파일 덤프를 복원하려면 대신 pg_restore 유틸리티를 사용합니다.

    $ pg_restore <non-plain_text_file>
    Copy to Clipboard Toggle word wrap

3.6.5. pg_dumpall을 사용하여 덤프된 데이터베이스 복원

pg_dumpall 유틸리티를 사용하여 덤프한 데이터베이스 클러스터에서 데이터를 복원하려면 다음 단계를 따르십시오.

사전 요구 사항

  • postgres 슈퍼유저 또는 데이터베이스 관리자 권한이 있는 사용자로 명령을 실행해야 합니다.

프로세스

  1. 개체를 소유하거나 덤프된 데이터베이스의 개체에 대한 권한이 부여된 모든 사용자가 있는지 확인합니다. 이러한 사용자가 존재하지 않는 경우 복원에서 원래 소유권 및 권한으로 오브젝트를 다시 생성하지 못합니다.
  2. psql 유틸리티를 실행하여 pg_dumpall 유틸리티에서 생성한 텍스트 파일 덤프를 복원합니다.

    $ psql < <dump_file>
    Copy to Clipboard Toggle word wrap

    여기서 <dump_file >은 pg_dumpall 명령의 출력입니다.

3.6.6. 다른 서버에서 데이터베이스의 SQL 덤프 수행

pg_dumppsql 이 파이프로 직접 작성하고 읽을 수 있기 때문에 데이터베이스를 직접 덤프할 수 있습니다.

프로세스

  • 한 서버에서 다른 서버로 데이터베이스를 덤프하려면 다음을 실행합니다.

    $ pg_dump -h <host_1> <db_name> | psql -h <host_2> <db_name>
    Copy to Clipboard Toggle word wrap

3.6.7. 복원 중 SQL 오류 처리

기본적으로 psql 은 SQL 오류가 발생하면 계속 실행되므로 데이터베이스가 부분적으로만 복원됩니다.

기본 동작을 변경하려면 덤프를 복원할 때 다음 방법 중 하나를 사용합니다.

사전 요구 사항

  • postgres 슈퍼유저 또는 데이터베이스 관리자 권한이 있는 사용자로 명령을 실행해야 합니다.

프로세스

  • ON_ERROR_STOP 변수를 설정하여 SQL 오류가 발생하면 종료 상태 3을 사용하여 psql 을 종료합니다.

    $ psql --set ON_ERROR_STOP=on <db_name> < <dump_file>
    Copy to Clipboard Toggle word wrap
  • 복원이 완전히 완료되거나 취소되도록 전체 덤프가 단일 트랜잭션으로 복원되도록 지정합니다.

    • psql 유틸리티를 사용하여 텍스트 파일 덤프를 복원하는 경우:

      $ psql -1
      Copy to Clipboard Toggle word wrap
    • pg_restore 유틸리티를 사용하여 텍스트가 아닌 파일 덤프를 복원하는 경우:

      $ pg_restore -e
      Copy to Clipboard Toggle word wrap

    이 방법을 사용하면 약간의 오류라도 이미 여러 시간 동안 실행된 복원 작업을 취소할 수 있습니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat