Computer >> 컴퓨터 >  >> 프로그래밍 >> 데이터베이스

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

2020년 2월 6일 ObjectRocket.com/blog에 처음 게시된 글입니다.

ObjectRocket에서 PostgreSQL 백업 복원하기

데이터베이스 관리 업무에서 정기적인 백업 수행과 복원은 빼놓을 수 없는 핵심 요소입니다. ObjectRocket은 모든 데이터베이스 제품에 기본적으로 2주 보관 주기의 일일 백업을 제공하며, 이 기능은 별도 설정 없이 기본적으로 활성화됩니다.

특히 ObjectRocket PostgreSQL®(Postgres) 서비스는 여기에 더해 Write Ahead Log(WAL) 아카이빙 기능까지 제공하여, 보관 기간 내 원하는 특정 시점으로 자유롭게 복원할 수 있다는 장점이 있습니다.

이 글에서는 ObjectRocket 서비스에서 Postgres를 대상으로 시점 복원(Point-in-Time Recovery, PITR)을 수행하는 방법을 단계별로 안내합니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

번거로움 없는 자동 백업

백업 프로세스는 완전히 자동화되어 있어 사용자가 별도로 신경 쓸 부분이 없습니다. 모든 인스턴스 요금에 일일 백업 비용이 포함되어 있으며, 항상 최근 2주 치의 백업이 보관됩니다. 대시보드나 사용자 인터페이스(UI)를 통해 백업 시간과 이전 백업의 상태를 손쉽게 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

다양한 복원 옵션

복원이 필요한 상황이 발생했을 때 여러 가지 옵션 중에서 선택할 수 있습니다. 다음 세 가지 지점에서 복원이 가능합니다.

  • 저장된 가장 최근의 WAL 업데이트 지점
  • 특정 베이스 백업(base backup)
  • 특정 시점

모든 경우에 복구된 데이터는 새로운 Postgres 인스턴스로 복원됩니다. 이때 새 인스턴스의 스토리지 용량은 원본 인스턴스와 같거나 그보다 커야 한다는 점에 유의하세요. 이 과정은 흔히 '데이터베이스 포크(database fork)'라고 불리며, 데이터를 새롭고 독립적인 데이터베이스 인스턴스로 복원하는 방식입니다. 따라서 하나를 삭제하기 전까지는 기존 인스턴스와 새 인스턴스가 모두 활성 상태로 유지됩니다.

현재 복원 기능은 API를 통해서만 제공됩니다. API 사용이 어렵다면 언제든 지원 팀(Support team)에 문의하면 절차를 안내받을 수 있으며, 조만간 UI에도 복원 기능을 추가할 계획입니다.

최신 시점으로 복원

이 예제에서는 매분 타임스탬프와 시퀀스 값을 저장하는 간단한 데이터베이스를 사용하여, 어떤 시점까지 복원되었는지 쉽게 확인할 수 있도록 구성했습니다.

아래 이미지에서 데이터베이스의 마지막 타임스탬프가 16:00:58(UTC)인 것을 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

이 데이터베이스를 최신 데이터로 복원하려면 새 인스턴스 생성 호출에 소스 인스턴스 ID를 전달하면 됩니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

인스턴스 복원이 완료되면 연결하여 마지막 타임스탬프를 확인합니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

보시는 것처럼 모든 데이터가 그대로 존재하며, 새 Postgres 인스턴스가 소스 인스턴스와 완전히 동일한 상태까지 복구되었습니다.

이 시나리오는 현재 운영 데이터를 기반으로 테스트용 데이터베이스를 만들어, 원본 데이터에 영향을 주지 않고 새로운 기능을 안전하게 실험해볼 때 특히 유용합니다.

특정 백업으로 복원

베이스 백업에서 복원하려면 먼저 대상 백업을 선택해야 합니다. 백업 목록을 조회하면 각 백업마다 고유한 ID가 부여되어 있어 이를 식별자로 활용할 수 있습니다. 아래 이미지에서 15:36:15(UTC)에 생성된 백업을 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

이 백업 시점 그대로 복원하려면 인스턴스 생성 호출에 해당 백업 ID를 추가하면 됩니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

인스턴스가 로드되면 백업 시점인 15:36:15 이전의 데이터와 타임스탬프만 존재하는 것을 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

특정 시점으로 복원

복원하고자 하는 시간을 직접 지정하려면 소스 인스턴스 ID와 함께 복원 대상 시간을 전달하면 됩니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

여기서는 15:53:00 시점으로 복원해 보겠습니다. 복원이 완료되면 해당 시각까지만 데이터가 존재하는 것을 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 복원하는 방법: 시점 복원(PITR) 완벽 가이드

앞선 이미지들을 다시 살펴보면 15:53:00에 또 다른 타임스탬프가 있었고, 해당 기록은 15:53:00으로부터 약 0.8초가 지난 후 발생한 것을 알 수 있습니다. 따라서 이 레코드는 복원에 포함되지 않습니다. 이처럼 PITR을 활용하면 데이터베이스의 특정 시간과 상태를 초 단위까지 세밀하게 지정하여 복원할 수 있습니다.

결론

지금까지 소개한 데이터베이스 복구 기능을 모두 자유롭게 활용해 보시기 바랍니다. 앞으로 더 많은 기능과 역량을 지속적으로 추가할 예정이며, 항상 최신 소식을 전해 드리겠습니다. 필요한 기능이나 개선 사항이 있다면 언제든 요청해 주세요.

Rackspace DBA Services에 대해 더 자세히 알아보세요.

Feedback 탭을 통해 의견을 남기거나 질문할 수 있으며, 언제든 저희와 대화를 시작하실 수 있습니다.