Amazon RDS 지정 시간 복구(PITR) 사용하기

HYEONG HWAN, MUN/ 10월 23, 2020/ 미분류/ 0 comments

https://blog.lael.be/post/10475

글을 틈틈히 작성/수정중입니다.

이 글에서는 RDS 특정 시점 복구(PITR)의 원리 및 수행하는 방법에 대해 설명하도록 하겠습니다.

 

특정 시점 복구(PITR)가 필요한 이유

PITRPoint in Time Recovery 의 약자입니다.
한글로 번역하자면 시점(Point in time) 복구(Recovery)라는 의미입니다.

치명적인 서비스 장애예고를 하지 않고 일어나고 피해가 크기 때문에, 이 상황에 대한 대비책을 마련해 두어야 합니다.
PITR은 예기치 않은 장애를 예방하는 것이 목적이 아니고, 장애가 일어났을때 효율적으로 대처하기 위한 것이 목적입니다.

위험 관리 전략RMMM (https://blog.lael.be/post/205 또는 자세한 내용은 구글 참조)의 Management 에 해당하는 것으로 위험이 이미 일어났으며 이 때의 처리 방법에 대해 논의해야 합니다.

 

서비스 장애가 발생 했을 경우 대처 방법

시스템 서비스 엔지니어(SE)는 장애가 발생했을 경우, RPO(복원시점목표), RTO(복원시간목표)를 결정하고 내부에 통보해야 합니다.
예를 들어서, 1시간마다 백업하는 시스템에서, 10:30에 장애가 발생했다면, “30분전에 백업한 데이터로 복구하겠습니다. 정상화까지 10분이 걸립니다.” 라고 말하는 것입니다.
이 경우 RPO는 30분전이고, RTO는 10분입니다.

 

최적의 장애처리 목표는 RTO는 최대한 빨리(즉시), RPO는 장애발생 바로 직전 시점이 됩니다.
RTO는 별도의 Stand-by 머신을 두지 않는 이상, 물리적인 리소스 복구 시간이 소요됩니다. 줄이는 것은 순전히 운과, 시스템 엔지니어의 역량에 달려있습니다.
ISMS 가이드라인에 따르면, 연 1회이상 재해복구 훈련을 하도록 되어 있습니다. (RTO를 측정하고 줄이는 훈련)

< 한국 금융결제원은 1년에 2회 재해복구훈련을 실시한다. 이 기간에는 은행/증권의 업무가 중단된다. >

- 파일의 경우 (File) : 요즘 파일은 git 으로 관리하거나 S3 Versioning 을 사용하기 때문에, 삭제가 되어도 복구하기 수월하다.

- 데이터베이스의 경우 (DB) : 치명적인 것은 이것이다. DB는 백업이 되어 있지 않는 이상 복구가 어렵다. 하지만 이 AWS RDS PITR을 사용하면 RPO를 1초 이내로 줄일 수 있다!

 

온 프레미스의 특정 시점 복구(PITR)

아마존 관계형 데이터베이스 서비스 (AWS RDS)는 여러 데이터베이스 엔진을 지원할 수 있는 완전 관리 데이터베이스 서비스입니다. 지원되는 것 중에는 PostgreSQL , MySQL 및 MariaDB가 있습니다.

RDS는 많은 회사에서 널리 채택되어 왔지만 일부는 PITR (Point-in-time Recovery)의 작동 방식과 사용 방법에 익숙하지 않을 수 있습니다.

 

AWS RDS를 사용한 특정 시점 복구 (PITR)

AWS RDS는 온 프레미스 데이터베이스에 일반적으로 사용되는 기존 방식과는 다르게 PITR을 처리합니다. 최종 결과는 동일한 개념을 공유하지만 AWS RDS에서는 전체 백업이 스냅 샷이고 PITR (S3에 저장 됨)을 적용한 다음 새로운 (다른) 데이터베이스 인스턴스를 시작합니다.

일반적인 방법은 PITR 을 적용하기 전에 전체 백업을 위해 논리적 ( pg_dump , mysqldump , mydumper 사용) 또는 물리적 ( Percona Xtrabackup , Mariabackup , pg_basebackup, pg_backrest )을 사용해야합니다.

AWS RDS를 사용하려면 새 DB 인스턴스를 시작해야하지만 기존 접근 방식을 사용하면 백업을 수행 한 동일한 데이터베이스 노드에 PITR을 유연하게 저장하거나 복구가 필요한 다른 (기존) DB 인스턴스 또는 새 DB 인스턴스를 대상으로 지정할 수 있습니다. .

AWS RDS 인스턴스 생성시 자동 백업이 켜집니다. Amazon RDS는 데이터의 전체 일일 스냅 샷을 자동으로 수행합니다. 스냅 샷 일정은 원하는 백업 창에서 생성하는 동안 설정할 수 있습니다. 자동 백업이 켜져있는 동안 AWS는 또한 모든 DB 업데이트를 기록하는 5 분마다 Amazon S3에 트랜잭션 로그를 캡처합니다. 특정 시점 복구를 시작하면 DB 인스턴스를 특정 요청 시간으로 복원하기 위해 가장 적절한 일일 백업에 트랜잭션 로그가 적용됩니다.

 

AWS RDS에서 PITR을 적용하는 방법

PITR 을 적용 하는 방법은 세 가지입니다. DB 인스턴스를 사용할 수있게되면 AWS Management Console, AWS CLI 또는 Amazon RDS API를 사용할 수 있습니다. 또한 트랜잭션 로그가 5 분마다 캡처 된 다음 AWS S3에 저장된다는 점을 고려해야합니다.

DB 인스턴스를 복원하면 기본 DB 보안 그룹 (SG)이 새 DB 인스턴스에 적용됩니다. 사용자 지정 db SG가 필요한 경우 DB 인스턴스를 사용할 수있게 된 후 AWS Management Console, AWS CLI modify-db-instance 명령 또는 Amazon RDS API ModifyDBInstance 작업을 사용하여이를 명시 적으로 정의 할 수 있습니다.

PITR에서는 DB 인스턴스에 대해 가장 최근의 복원 가능한 시간을 식별해야합니다. 이를 위해 AWS CLI describe-db-instances 명령을 사용하고 DB 인스턴스의 LatestRestorableTime 필드에 반환 된 값을 볼 수 있습니다.

 

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*