스크립트를 사용하여 PostgreSQL 데이터베이스 백업 및 복원

다음 스크립트를 사용하여 PostgreSQL 데이터베이스에 대한 백업을 수행할 수 있습니다. 스크립트를 실행할 때 백업을 수행하기 위해 데이터베이스를 중지하지 않아도 됩니다.

전제 조건

백업을 시작하기 전에 다음 사항을 확인하십시오.

참고: 설정을 적용하려면 postgresql.conf 파일에서 이러한 설정을 구성한 후 서버를 재부팅하십시오.

다음 명령을 사용하면 재부팅 후 보관 모드 상태를 쉽게 확인할 수 있습니다.

스크립트 적용

다음 단계를 수행하십시오.

  1. LinuxPostgres.zip의 압축을 풉니다. 압축을 풀면 4개의 파일(postgresql_backup_pre.sh, postgresql_snapshot_post.sh, postgresql_settings, postgresql_backup_post.sh)이 있습니다.
  2. pre/post backup/snapshot에 있는 파일을 Linux 백업 서버상의 경로(/opt/Arcserve/d2dserver/usr/prepost)에 복사합니다.
  3. postgresql_settings를 소스 경로 path /root/backup에 복사합니다.
  4. postgresql_settings 파일에서 변수에 대해 설정된 모든 값을 확인하고 환경에 따라 변경할 사항이 있으면 적절히 수정합니다.
  5. UDP 콘솔에서 계획을 구성하고 PostgreSQL 노드를 소스로 선택합니다.
  6. 백업 상태를 확인합니다. PostgreSQL 백업의 상태를 확인하려면 arcserve_postgresql_backup_${DATE}.log 파일을 확인하십시오. 이 로그 파일은 사용자가 설정한 디렉터리에 생성됩니다. 디렉터리 구성에 대한 자세한 내용은 postgresql_settings 파일을 참조하십시오.

PostgreSQL 데이터베이스 복원

다음 단계를 수행하십시오.

  1. 데이터베이스 서버를 중지합니다.
  2. 원래 위치에 복원하려면 다음 단계를 수행하십시오.
    1. 현재 /data 폴더에서 파일 및 디렉터리를 삭제합니다.
    2. 전체 /data 폴더에 대한 복원을 수행합니다.
  3. /data 폴더에서 복원하는 작업을 완료한 후 다음 폴더에서 파일을 삭제합니다.
  4. WAL 보관 용도로 구성된 폴더로 이동한 후 다음을 수행하십시오.
    1. 복원된 pg_wal 디렉터리에 있는 파일을 삭제합니다. 이 디렉터리에는 백업 중 수행된 트랜잭션과 관련된 정보가 포함되어 있습니다.
    2. 데이터 일관성 및 특정 시점 복구를 위해 사용자 정의 보관 위치의 파일을 pg_wal 폴더에 복사합니다.
  5. 데이터베이스 서버를 시작합니다.

동일한 서버의 다른 위치에 복원

  1. 데이터베이스 서버를 중지합니다.
  2. PGDATA를 실행하여 경로를 새 " new_data_directory_path"로 구성합니다.
  3. 새로 만든 DB를 `Initdb` cmd를 사용하여 초기화합니다.
  4. 현재 /data 폴더에서 파일 및 디렉터리를 삭제합니다.
  5. 전체 /data 폴더에 대한 복원을 수행합니다.
  6. /data 폴더에서 복원하는 작업을 완료한 후 다음 폴더에서 파일을 삭제합니다.
  7. WAL 보관 용도로 구성된 폴더로 이동한 후 다음을 수행하십시오.
    1. 복원된 pg_wal 디렉터리에 있는 파일을 삭제합니다. 이 디렉터리에는 백업 중 수행된 트랜잭션과 관련된 정보가 포함되어 있습니다.
    2. 데이터 일관성 및 특정 시점 복구를 위해 사용자 정의 보관 위치의 파일을 pg_wal 폴더에 복사합니다.
  8. 데이터베이스 서버를 시작합니다.
  9. 참고: PGDATA가 업데이트되는 세션에서 데이터베이스 시작을 수행했는지 확인하십시오.

제한 사항

위의 스크립트는 PostgreSQL 데이터베이스가 기본 포트가 아닌 포트로 구성된 경우에는 백업을 수행하는 데 도움이 되지 않습니다. 위 스크립트는 기본 포트 번호 5432에서만 작동합니다.

이 문제를 해결하려면 다음 권장 사항에 따라 postgresql_backup_pre.sh 및 postgresql_snapshot_post.sh 스크립트를 수동으로 수정하십시오.