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

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

원문은 2020년 2월 6일 ObjectRocket.com/blog에 게시되었습니다.

정기적인 백업과 이를 복원하는 기능은 데이터베이스 시스템 운영의 핵심 요소입니다. Rackspace Technology 계열사인 ObjectRocket에서는 모든 데이터베이스 제품에 대해 기본적으로 2주 보관 기간을 갖는 일일 백업을 제공합니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

특히 저희 PostgreSQL® 서비스는 WAL(Write Ahead Log) 아카이빙과 함께 보관 기간 내 임의의 시점으로 복원할 수 있는 기능을 추가로 제공합니다. 이를 일반적으로 PITR(Point-in-Time Recovery, 시점 복구)라고 부르며, 이 글에서는 저희 서비스에서 이 기능이 실제로 어떻게 작동하는지 단계별로 살펴보겠습니다.

번거로움 없는 자동 백업

핵심 구성 요소는 완전 자동화된 백업 프로세스입니다. 모든 인스턴스 요금에 일일 백업이 포함되어 있으며, 항상 최근 2주 치 백업을 보관합니다. 대시보드나 사용자 인터페이스(UI)를 통해 백업 시간과 진행 상태를 손쉽게 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

다양한 복원 옵션

저희는 백업을 복원할 수 있는 여러 가지 옵션을 제공합니다.

  • 저장된 가장 최근의 WAL 업데이트 지점으로 복원
  • 특정 베이스 백업(base backup)으로 복원
  • 특정 시점(point in time)으로 복원

모든 경우에 데이터는 새로운 PostgreSQL 인스턴스로 복원됩니다. 이때 새 인스턴스의 스토리지 용량은 원본 인스턴스와 같거나 그 이상이어야 합니다. 저희는 이 과정을 '데이터베이스 포크(database fork)'라고 부릅니다. 이상적으로는 데이터를 새롭고 별도의 인스턴스로 복원하여, 하나를 삭제하기 전까지 기존 인스턴스와 새 인스턴스가 모두 활성 상태로 유지되도록 하는 것이 좋습니다.

참고: 현재 복원 기능은 API를 통해서만 제공됩니다. API 사용에 익숙하다면 직접 진행하시면 되고, 그렇지 않다면 지원 팀이 절차 전반을 도와드립니다. 조만간 UI에도 복원 기능을 추가할 예정입니다.

1. 최신 시점으로 복원

설명을 위해 매분 타임스탬프와 시퀀스 값만 저장하는 간단한 데이터베이스를 예로 들어 보겠습니다. 이렇게 하면 백업이 어느 시점까지 반영되었는지 쉽게 확인할 수 있습니다. 데이터베이스를 조회해 보면 마지막 타임스탬프가 16:00:58(UTC)인 것을 알 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

이 데이터베이스의 최신 데이터로 복원하려면, 새 인스턴스 생성(create) 호출에 소스 인스턴스의 id를 지정하기만 하면 됩니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

복원이 완료된 인스턴스에 접속해 마지막 타임스탬프를 확인해 보겠습니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

보시다시피 모든 데이터가 그대로 존재하며, 소스 Postgres 인스턴스의 최신 상태까지 완전히 반영된 새로운 Postgres 인스턴스가 생성되었습니다. 이 시나리오는 원본 데이터에 영향을 주지 않고 새로운 기능을 실험해 볼 수 있는 테스트 데이터베이스를 만들 때 특히 유용합니다.

2. 특정 백업으로 복원

두 번째 옵션은 베이스 백업에서 복원하는 것입니다. 백업 목록을 조회하면 각 백업마다 복원에 사용할 수 있는 고유한 id가 부여되어 있습니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

앞선 예시의 백업은 15:36:15(UTC)에 생성된 것입니다. 이 정확한 백업 지점으로 복원하려면 인스턴스 생성 호출에 해당 백업 id를 추가하기만 하면 됩니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

인스턴스 로딩이 완료되면, 백업에 15:36:15 이전 시점의 데이터와 타임스탬프가 포함되어 있는 것을 확인할 수 있습니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

3. 특정 시점으로 복원

마지막 방법은 복원하고자 하는 시간을 직접 지정하는 것입니다. 소스 인스턴스 ID와 함께 복원 시각을 전달하면 됩니다.

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

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

ObjectRocket에서 PostgreSQL 백업 및 복원하는 방법 완벽 가이드

앞선 이미지를 다시 살펴보면 15:53:00 근처에 또 다른 타임스탬프가 있었음을 알 수 있습니다. 하지만 그 기록은 15:53:00에서 약 0.8초 이후에 발생한 것이므로 복원된 인스턴스에는 포함되지 않습니다. 이처럼 PITR(Point-in-Time Recovery)을 활용하면 데이터베이스의 특정 시간과 상태를 초 단위까지 매우 세밀하게 지정하여 복원할 수 있습니다.

앞으로의 계획

위에서 소개한 백업 및 복원 기능은 지금 바로 사용하실 수 있습니다. 물론 저희는 끊임없이 더 많은 기능과 역량을 추가하고 있으니, 필요한 기능이나 요청 사항이 있다면 언제든지 알려주세요.

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

피드백(Feedback) 탭을 통해 의견을 남기거나 질문할 수 있습니다. 또한 Sales Chat 버튼을 클릭해 지금 바로 상담을 시작하실 수도 있습니다.

여기를 클릭하여 Rackspace Cloud 서비스 약관(Terms of Service)을 확인하세요.