PostgreSQL용 백업 및 DR 서비스

PostgreSQL은 SQL 언어를 사용하고 확장하며 가장 복잡한 데이터 워크로드를 안전하게 저장하고 확장하는 다양한 기능을 결합한 강력한 오픈소스 객체 관계형 데이터베이스 시스템입니다.

백업 및 DR에서 사용하는 PostgreSQL 백업 API

  • 볼륨 수준 (Linux 변경 블록 추적 및 LVM 스냅샷) 백업: 백업 및 DR은 Linux 변경 블록 추적 및 LVM 스냅샷으로 백업을 실행할 때 PostgreSQL pg_start_backup(label)pg_stop_backup() 명령어를 사용합니다.

  • 전체+증분 (파일 기반 기존) 백업: 백업 및 DR에서 PostgreSQL pg_dump 파일 기반 백업 명령어를 사용합니다. pg_dump 명령어에는 데이터베이스의 증분 변경사항을 캡처하는 옵션이 없으므로 각 백업은 전체 데이터베이스 덤프 백업입니다.

    데이터베이스 복원은 데이터 영역을 물리적으로 덮어써서 데이터베이스를 복구합니다.

  • PostgreSQL 로그 백업: 로그 백업 중에 백업 및 DR은 모든 PostgreSQL WAL (WriteAheadLog)을 물리적으로 복사합니다. 로그를 삭제하기 위해 백업 및 DR은 OS 수준 명령어를 사용합니다.

작동 방식: Linux CBT를 사용한 백업 및 DR 볼륨 기반 백업

변경된 블록만 비트맵에서 추적됩니다. 쓰기 전 복사나 I/O 집약적인 작업은 없습니다.

다음 단계에서는 데이터 백업 및 복구 프로세스를 설명합니다.

  1. 백업 및 DR 에이전트에는 데이터베이스 데이터 영역에서 변경된 블록을 추적하는 CBT가 있습니다.

  2. 에이전트는 데이터 백업을 위해 데이터베이스 API를 호출하여 데이터베이스를 정지하거나 일시중지합니다.

  3. 에이전트가 데이터베이스 데이터 영역의 LVM 스냅샷을 만들고 비트맵을 합성합니다.

  4. 데이터베이스 API를 호출하여 데이터베이스를 동결 해제하는 상담사

  5. 에이전트가 변경된 블록을 백업/복구 어플라이언스로 복사하면 어플라이언스가 스냅샷을 삭제하고 백업을 카탈로그화합니다.

  6. 어플라이언스는 내부 스냅샷을 발행하고 특정 시점의 가상 전체 백업을 종합합니다.

  7. 데이터 복구의 경우 백업 및 DR은 재기록 가능한 스테이징 디스크를 즉시 마운트하고 데이터베이스를 온라인으로 가져옵니다.

quiesce 또는 unquiesce 명령어는 볼륨 수준 스냅샷 작업의 기본에서 실행됩니다.

select pg_start_backup(<label>);
select pg_stop_backup();

quiesce 및 unquiesce 명령어는 볼륨 수준 스냅샷 작업의 대기 노드에서 실행됩니다.

PostgreSQL 버전이 10.x 이상인 경우:

select pg_wal_replay_pause();
select pg_wal_replay_resume();

PostgreSQL 버전이 9.x인 경우:

select pg_xlog_replay_pause();
select pg_xlog_replay_resume();

작동 방식: 파일 기반 백업

다음 단계에서는 파일 기반 백업 이미지로 데이터 백업 및 복구를 실행하는 방법을 설명합니다.

  1. 백업 및 DR 에이전트가 데이터베이스 서버에 배포됩니다.

  2. 데이터베이스 서버에 스테이징 디스크를 마운트합니다.

  3. 덤프 백업 명령어를 사용하여 전체 백업을 호출하여 마운트된 디스크에 백업을 씁니다.

  4. 백업 및 DR은 내부 스냅샷을 사용합니다. 로그 백업은 구성된 일정에 따라 파일 시스템에서 직접 비슷한 방식으로 실행됩니다.

  5. 데이터 복구의 경우 백업 및 DR은 스테이징 디스크를 데이터베이스 서버에 즉시 마운트하고 데이터베이스 복원 작업을 시작합니다. 데이터베이스가 복원된 후 로그를 원하는 지점까지 재생할 수 있습니다.

다음 단계

백업 및 DR을 위한 데이터베이스 준비하기

PostgreSQL용 백업 및 DR에 관한 기타 문서