백업/복구 어플라이언스의 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 관련 기타 문서