Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

백업 작업

Amazon RDS는 DB 인스턴스의 자동 백업을 생성하여 저장합니다. Amazon RDS는 개별 데이터베이스가 아닌 전체 DB 인스턴스를 백업하여 DB 인스턴스의 스토리지 볼륨 스냅샷을 생성합니다.

Amazon RDS는 DB 인스턴스 백업 기간 동안 DB 인스턴스의 자동 백업을 생성합니다. Amazon RDS는 사용자가 지정한 백업 보존 기간에 따라 DB 인스턴스의 자동 백업을 저장합니다. 필요할 경우 백업 보존 기간 중 어느 특정 시점으로든 데이터베이스를 복구할 수 있습니다.

자동 백업은 이 규칙을 따릅니다.

  • 자동 백업이 실행되려면 DB 인스턴스가 ACTIVE 상태여야 합니다. DB 인스턴스가 ACTIVE 외의 상태인 경우, 예컨대 STORAGE_FULL 상태인 경우 자동 백업이 실행되지 않습니다.

  • 동일 리전에서 동일 DB 인스턴스에 복제본을 실행하는 동안 자동 백업과 자동 스냅샷은 실행되지 않습니다.

또한 수동으로 DB 스냅샷을 생성하여 DB 인스턴스를 백업할 수도 있습니다. DB 스냅샷 생성에 대한 자세한 내용은 DB 스냅샷 생성 단원을 참조하십시오.

DB 인스턴스의 첫 번째 스냅샷에는 전체 DB 인스턴스에 대한 데이터가 포함됩니다. 동일한 DB 인스턴스의 후속 스냅샷은 증분식이며, 마지막 스냅샷 이후 변경된 데이터만 저장됩니다.

자동 및 수동 DB 스냅샷을 모두 복사하고 수동 DB 스냅샷을 공유할 수 있습니다. DB 스냅샷 복사에 대한 자세한 내용은 스냅샷 복사 단원을 참조하십시오. DB 스냅샷 공유에 대한 자세한 내용은 DB 스냅샷 공유 단원을 참조하십시오.

참고

또한 AWS Backup을 사용해 Amazon RDS DB 인스턴스의 백업 데이터를 관리하는 방법도 있습니다. AWS Backup이 관리하는 백업은 수동 스냅샷 제한을 위한 수동 스냅샷으로 간주됩니다. AWS Backup에 대한 자세한 내용은 AWS 백업 개발자 안내서를 참조하십시오.

백업 스토리지

각 리전의 Amazon RDS 백업 스토리지는 해당 리전의 자동 백업 및 수동 DB 스냅샷으로 구성됩니다. 백업 스토리지는 해당 리전의 모든 인스턴스에 대한 데이터베이스 스토리지 합계와 동일합니다. DB 스냅샷을 다른 리전으로 이동하면 대상 리전의 백업 스토리지가 증가합니다.

백업 스토리지 비용에 대한 자세한 내용은 Amazon RDS 요금을 참조하십시오.

DB 인스턴스를 삭제할 때 자동 백업을 유지하기로 선택한 경우, 자동 백업이 최대 보존 기간 동안 저장됩니다. DB 인스턴스를 삭제할 때 자동 백업 보존을 선택하지 않은 경우, 모든 자동 백업이 DB 인스턴스와 함께 삭제됩니다. 자동 백업은 삭제된 후에는 복구할 수 없습니다. Amazon RDS가 DB 인스턴스를 삭제하기 전에 최종 DB 스냅샷을 생성하도록 선택한 경우 이 스냅샷을 사용하여 DB 인스턴스를 복구할 수 있습니다. 또는 이전에 생성한 수동 스냅샷을 사용할 수 있습니다. 수동 스냅샷은 삭제되지 않습니다. 리전당 최대 100개의 수동 스냅샷을 보유할 수 있습니다.

백업 기간

자동 백업은 기본 백업 기간 동안 매일 실행됩니다. 백업 시간이 백업 기간에 할당된 시간보다 오래 걸릴 경우 백업은 백업 기간이 종료한 후에도 완료 시까지 계속 실행됩니다. 백업 기간은 해당 DB 인스턴스에 대한 주간 유지 보수 기간과 겹칠 수 없습니다.

자동 백업 기간 중에 백업 프로세스가 시작될 때 스토리지 I/O가 일시적으로 중단될 수 있습니다(일반적으로 몇 초). 다중 AZ 배포에 대한 백업 시 지연 시간이 몇 분으로 증가할 수도 있습니다.  MariaDB, MySQL, Oracle 및 PostgreSQL의 경우, 다중 AZ 배포에 대한 백업 시 기본 AZ에서는 I/O 작업이 중단되지 않습니다. 백업이 예비 복제본으로부터 수행되기 때문입니다. SQL Server의 경우, 다중 AZ 배포에 대한 백업 도중 I/O 작업이 일시적으로 중단됩니다.

DB 인스턴스를 생성할 때 원하는 백업 기간을 지정하지 않을 경우에는 Amazon RDS이 기본 30분 백업 기간을 할당합니다. 이 기간은 각 AWS 리전에 대해 8시간 블록 시간 중에서 임의로 선택됩니다. 다음 표는 기본 백업 기간이 할당된 각 지역별 시간 블록 목록입니다.

리전 시간 블록
미국 서부(오레곤) 지역 06:00–14:00 UTC
미국 서부(캘리포니아 북부) 리전 06:00–14:00 UTC
미국 동부(오하이오) 리전 03:00–11:00 UTC
미국 동부(버지니아 북부) 지역 03:00–11:00 UTC
아시아 태평양(뭄바이) 리전 16:30–00:30 UTC
아시아 태평양(서울) 리전 13:00–21:00 UTC
아시아 태평양(싱가포르) 리전 14:00–22:00 UTC
아시아 태평양(시드니) 리전 12:00–20:00 UTC
아시아 태평양(도쿄) 리전 13:00–21:00 UTC
캐나다(중부) 리전 06:29–14:29 UTC
EU(프랑크푸르트) 리전 20:00–04:00 UTC
EU(아일랜드) 지역 22:00–06:00 UTC
EU(런던) 리전 06:00–14:00 UTC
남아메리카(상파울루) 리전 23:00–07:00 UTC
AWS GovCloud(미국 서부) 03:00–11:00 UTC

백업 보존 기간

또한 DB 인스턴스를 생성하면서 백업 보존 기간도 설정할 수 있습니다. 백업 보존 기간을 설정하지 않으면 Amazon RDS API 또는 AWS CLI를 사용하여 DB 인스턴스를 생성하는 경우 기본 백업 보존 기간은 1일입니다. 콘솔을 사용하여 DB 인스턴스를 생성하는 경우 기본 백업 보존 기간은 7일입니다. DB 인스턴스를 생성한 후 백업 보존 기간을 수정할 수 있습니다. 백업 보존 기간은 1일에서 35일 사이로 설정할 수 있습니다. 백업 보존 기간을 0으로 설정하면 자동 백업이 비활성화됩니다. 수동 스냅샷 한도(리전당 100개)는 자동 백업에 적용되지 않습니다.

중요

백업 보존 기간을 0에서 0이 아닌 값으로 또는 0이 아닌 값에서 0으로 변경할 경우 인스턴스가 중단됩니다.

자동 백업 비활성화

대량의 데이터를 로드하는 등 특정 상황에서는 자동 백업을 일시적으로 비활성화해야 하는 경우가 있습니다.

중요

특정 시점으로 복구가 어렵기 때문에 자동 복구의 비활성화는 최대한 자제하는 것이 좋습니다. DB 인스턴스 자동 백업을 비활성화하면 해당 인스턴스에 대한 기존 자동 백업이 모두 삭제됩니다. 자동 백업을 비활성화한 후 다시 활성화하면 자동 백업을 다시 활성화한 시점부터만 복구할 수 있습니다.

이 예시에서는 백업 보존 파라미터를 0으로 설정하여 DB 인스턴스 mydbinstance의 자동 백업을 비활성화하겠습니다.

콘솔

자동 백업을 즉시 비활성화하려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

  3. [Modify]를 선택합니다. [Modify DB Instance] 페이지가 나타납니다.

  4. 백업 보존 기간으로 0일을 선택합니다.

  5. [Continue]를 선택합니다.

  6. Apply Immediately(즉시 적용)를 선택합니다.

  7. 확인 페이지에서 [Modify DB Instance]를 선택하여 변경 내용을 저장하고 자동 백업을 비활성화합니다.

AWS CLI

자동 백업을 즉시 비활성화하려면, modify-db-instance 명령을 사용하고 --apply-immediately를 사용하여 백업 보존 기간을 0으로 설정합니다.

다음은 자동 백업을 즉시 비활성화하는 예제입니다.

Linux, OS X, Unix의 경우:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --backup-retention-period 0 \ --apply-immediately

Windows의 경우:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --backup-retention-period 0 ^ --apply-immediately

수정 사항이 적용되는 시점을 알아보려면 백업 보존 기간 값이 0이 되고, mydbinstance가 이용 가능한 상태가 될 때까지 DB 인스턴스에 대해 describe-db-instances를 호출합니다.

aws rds describe-db-instances --db-instance-identifier mydbinstance
RDS API

자동 백업을 즉시 비활성화하려면 다음 파라미터를 사용하여 ModifyDBInstance 작업을 호출합니다.

  • DBInstanceIdentifier = mydbinstance

  • BackupRetentionPeriod = 0

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=0 &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

자동 백업 활성화

DB 인스턴스에 자동 백업이 활성화되어 있지 않더라도 언제든지 활성화할 수 있습니다. 백업 보존 기간을 0이 아닌 양수 값으로 설정하여 자동 백업을 활성화합니다. 자동 백업을 활성화하면 RDS 인스턴스 및 데이터베이스가 오프라인으로 설정되고 백업이 즉시 생성됩니다.

이 예시에서는 백업 보존 기간을 0이 아닌 다른 양수 값(여기서는 3)으로 설정하여 DB 인스턴스 mydbinstance의 자동 백업을 활성화하겠습니다.

콘솔

자동 백업을 즉시 활성화하려면

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택한 다음 변경하려는 DB 인스턴스를 선택합니다.

  3. [Modify]를 선택합니다. [Modify DB Instance] 페이지가 나타납니다.

  4. 백업 보존 기간으로 0이 아닌 양수 값(예: 3일)을 선택합니다.

  5. [Continue]를 선택합니다.

  6. Apply Immediately(즉시 적용)를 선택합니다.

  7. 확인 페이지에서 [Modify DB Instance]를 선택하여 변경 내용을 저장하고 자동 백업을 활성화합니다.

AWS CLI

자동 백업을 즉시 활성화하려면, AWS CLI modify-db-instance 명령을 사용합니다.

이 예에서는 백업 보존 기간을 3일로 설정하여 자동 백업을 활성화합니다.

다음 파라미터를 포함합니다.

  • --db-instance-identifier

  • --backup-retention-period

  • --apply-immediately 또는 --no-apply-immediately

Linux, OS X, Unix의 경우:

aws rds modify-db-instance \ --db-instance-identifier mydbinstance \ --backup-retention-period 3 \ --apply-immediately

Windows의 경우:

aws rds modify-db-instance ^ --db-instance-identifier mydbinstance ^ --backup-retention-period 3 ^ --apply-immediately
RDS API

자동 백업을 즉시 활성화하려면, RDS API ModifyDBInstance 작업을 사용합니다.

이 예에서는 백업 보존 기간을 3일로 설정하여 자동 백업을 활성화합니다.

다음 파라미터를 포함합니다.

  • DBInstanceIdentifier

  • BackupRetentionPeriod

  • ApplyImmediately = true

https://rds.amazonaws.com/ ?Action=ModifyDBInstance &DBInstanceIdentifier=mydbinstance &BackupRetentionPeriod=3 &ApplyImmediately=true &SignatureVersion=2 &SignatureMethod=HmacSHA256 &Timestamp=2009-10-14T17%3A48%3A21.746Z &AWSAccessKeyId=<AWS Access Key ID> &Signature=<Signature>

자동 백업 보존

DB 인스턴스를 삭제할 때 자동 백업을 보존할 수 있습니다.

보존된 자동 백업에는 DB 인스턴스의 시스템 스냅샷 및 트랜잭션 로그가 포함되어 있습니다. 여기에는 할당된 스토리지 및 DB 인스턴스 클래스와 같은 DB 인스턴스 속성이 포함되는데, 이러한 속성은 활성 인스턴스로 복원하는 데 필요합니다.

MySQL, MariaDB, PostgreSQL, Oracle 및 Microsoft SQL Server 엔진을 실행 중인 RDS 인스턴스에 대한 자동 백업을 보존할 수 있습니다.

AWS Management 콘솔, RDS API 및 AWS CLI를 사용하여 보존된 자동 백업을 복원하거나 제거할 수 있습니다.

보존 기간

보존된 자동 백업의 시스템 스냅샷 및 트랜잭션 로그는 원본 DB 인스턴스에 대해 만료될 때와 동일한 방식으로 만료됩니다. 이 인스턴스에 대해 생성된 새 스냅샷이나 로그가 없으므로 보존 자동 백업은 결국 완전히 만료됩니다. 사실상 보존된 자동 백업은 삭제 시 원본 인스턴스에 지정되었던 보존 기간에 대한 설정에 따라 마지막 시스템 스냅샷이 수행될 동안 유지됩니다. 보존된 자동 백업은 마지막 시스템 스냅샷이 만료된 후 시스템에 의해 제거됩니다.

DB 인스턴스를 삭제할 때와 동일한 방식으로 보존된 자동 백업을 제거할 수 있습니다. 콘솔이나 RDS API 작업 DeleteDBInstanceAutomatedBackup을 사용하여 보존된 자동 백업을 제거할 수 있습니다.

마지막 스냅샷은 보존된 자동 백업과 무관합니다. 보존된 자동 백업도 결국 만료되므로 자동 백업을 보존하더라도 가급적이면 최종 스냅샷을 생성하는 것이 좋습니다 최종 스냅샷은 만료되지 않습니다.

복원

보존된 자동 백업을 보려면 자동 백업 페이지로 전환합니다. 콘솔의 데이터베이스 스냅샷 페이지에서 보존된 자동 백업과 연결된 개별 스냅샷을 볼 수 있습니다. 또는 보존된 자동 백업과 연결된 개별 스냅샷을 설명할 수 있습니다. 그런 다음 이러한 스냅샷 중 하나에서 DB 인스턴스를 직접 복원할 수 있습니다.

복원된 DB 인스턴스는 기본 파라미터 및 옵션 그룹과 자동으로 연결됩니다. 하지만 복원 중에 사용자 지정 파라미터 그룹 및 옵션 그룹을 지정하여 적용할 수 있습니다.

이 예제에서는 보존된 자동 백업을 사용하여 DB 인스턴스를 특정 시점으로 복원합니다. 먼저 보존된 자동 백업을 설명하여 복원할 자동 백업을 표시할 수 있습니다.

RDS API를 사용하여 보존된 자동 백업을 설명하려면 다음 파라미터 중 하나를 사용하여 DescribeDBInstanceAutomatedBackups 작업을 호출합니다.

  • DBInstanceIdentifier

  • DbiResourceId

aws rds describe-db-instance-automated-backups --db-instance-identifier DBInstanceIdentifier OR aws rds describe-db-instance-automated-backups --dbi-resource-idDbiResourceId

그런 다음 RDS API를 사용하여 보존 자동 백업을 특정 시점으로 복원하려면 다음 파라미터를 사용하여 RestoreDBInstanceToPointInTime 작업을 호출합니다.

  • SourceDbiResourceId

  • TargetDBInstanceIdentifier

aws rds restore-db-instance-to-point-in-time --source-dbi-resource-id SourceDbiResourceId --target-db-instance-identifier TargetDBInstanceIdentifier --use-latest-restorable-time

보존 비용

보존된 자동 백업의 비용은 연결된 시스템 스냅샷의 총 스토리지 비용입니다. 트랜잭션 로그나 인스턴스 메타데이터에 대해 추가 요금이 부과되지 않습니다. 백업에 대한 기타 모든 요금 규칙이 복원 가능한 인스턴스에 적용됩니다.

예를 들어 실행 중인 인스턴스에 할당된 총 스토리지가 100GB라고 가정하겠습니다. 또한 수동 스냅샷 50GB와 보존된 자동 백업과 연결된 시스템 스냅샷 75GB가 있다고 가정하겠습니다. 이 경우 백업 스토리지의 추가 25GB에 대해서만 요금이 부과됩니다. 즉, (50GB + 75GB) – 100GB = 25GB입니다.

제한 및 권장 사항

다음 제한은 보존된 자동 백업에 적용됩니다.

  • 한 리전에서 보존된 자동 백업의 최대 개수는 20개입니다. 이 개수는 DB 인스턴스 제한에 포함되지 않습니다. 실행 중인 DB 인스턴스 20개와 추가로 보존된 자동 백업 20개를 동시에 보유할 수 있습니다.

  • 보존된 자동 백업에는 파라미터나 옵션 그룹에 대한 정보가 포함되지 않습니다.

  • 삭제된 인스턴스를 삭제할 때의 보존 기간 내 특정 시점으로 복원할 수 있습니다.

  • 보존된 자동 백업은 원본 인스턴스를 삭제할 때 존재했던 시스템 백업, 트랜잭션 로그 및 DB 인스턴스 속성으로 구성되므로 수정할 수 없습니다.

지원되지 않는 MySQL 스토리지 엔진에 대한 자동 백업

MySQL DB 엔진의 경우, 자동 백업은 InnoDB 스토리지 엔진에만 지원됩니다. MyISAM 등의 다른 MySQL 스토리지 엔진에서 이러한 기능을 사용하는 경우 백업 복원 시에 작동이 불안정할 수 있습니다. 특히 MyISAM과 같은 스토리지 엔진은 안정적인 충돌 복구를 지원하지 않으므로 충돌 시 테이블이 손상될 수 있습니다. 이 같은 이유로 InnoDB 스토리지 엔진을 사용할 것을 권장합니다.

  • 기존 MyISAM 테이블을 InnoDB 테이블로 변환하려면 ALTER TABLE명령을 사용하면 됩니다(예: ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;).

  • MyISAM을 사용하는 경우 REPAIR 명령을 사용하여 충돌 후 손상된 테이블을 수동으로 복구할 수 있습니다. 자세한 내용은 MySQL 설명서에서 REPAIR TABLE 구문을 참조하십시오. 그러나 MySQL 문서에 기재된 바와 같이 데이터를 전부 복원하지 못할 수도 있습니다.

  • MyISAM 테이블을 복원하기 전에 테이블의 스냅샷을 생성하려면 다음 단계를 따릅니다.

    1. MyISAM 테이블의 모든 활동을 중지합니다(모든 세션 닫기).

      SHOW FULL PROCESSLIST 명령에서 반환되는 각 프로세스에 대해 mysql.rds_kill 명령을 호출하여 모든 세션을 닫을 수 있습니다.

    2. 각 MyISAM 테이블에 잠금 및 플러시를 수행합니다. 예를 들어, 다음 명령은 myisam_table1myisam_table2라는 두 테이블을 잠그고 플러시합니다.

      mysql> FLUSH TABLES myisam_table, myisam_table2 WITH READ LOCK;
    3. DB 인스턴스의 DB 스냅샷을 만듭니다. 스냅샷을 완료하면 MyISAM 테이블에서 잠금을 해제하고 활동을 다시 시작합니다. 다음 명령을 사용하여 테이블의 잠금을 해제할 수 있습니다.

      mysql> UNLOCK TABLES;

    이러한 단계를 통해 MyISAM에서 메모리에 저장된 데이터를 디스크로 강제 플러시하여 DB 스냅샷 복원 시 깨끗한 상태에서 시작할 수 있습니다. DB 스냅샷을 만드는 방법에 대한 자세한 내용은 DB 스냅샷 생성 단원을 참조하십시오.

지원되지 않는 MariaDB 스토리지 엔진에 대한 자동 백업

MariaDB DB 엔진의 경우, 자동화된 백업은 InnoDB 스토리지 엔진(버전 10.2 이상) 및 XtraDB 스토리지 엔진(버전 10.0과 10.1)에서만 지원됩니다. Aria 등의 다른 MariaDB 스토리지 엔진에서 이러한 기능을 사용하는 경우 백업 복원 시에 작동이 불안정할 수 있습니다. Aria가 충돌 안정성을 개선한 MyISAM 대체 스토리지 엔진이지만, 충돌 이벤트가 발생하는 경우 여전히 테이블이 손상될 수 있습니다. 이 같은 이유로 XtraDB 스토리지 엔진을 사용할 것을 권장합니다.

  • 기존 Aria 테이블을 InnoDB 테이블로 변환하려면 ALTER TABLE 명령을 사용합니다. 예: ALTER TABLE table_name ENGINE=innodb, ALGORITHM=COPY;

  • 기존 Aria 테이블을 XtraDB 테이블로 변환하려면 ALTER TABLE 명령을 사용합니다. 예: ALTER TABLE table_name ENGINE=xtradb, ALGORITHM=COPY;

  • Aria를 사용하는 경우 REPAIR TABLE 명령을 사용하여 충돌 후 손상된 테이블을 수동으로 복구할 수 있습니다. 자세한 내용은 http://mariadb.com/kb/en/mariadb/repair-table/ 단원을 참조하십시오.

  • Aria 테이블을 복원하기 전에 테이블의 스냅샷을 생성하려면 다음 단계를 따릅니다.

    1. Aria 테이블의 모든 활동을 중지합니다(모든 세션 닫기).

    2. 각 Aria 테이블에 잠금 및 플러시를 수행합니다.

    3. DB 인스턴스의 DB 스냅샷을 만듭니다. 스냅샷을 완료하면 Aria 테이블에서 잠금을 해제하고 활동을 다시 시작합니다. 이러한 단계를 통해 Aria에서 메모리에 저장된 데이터를 디스크로 강제 플러시하여 DB 스냅샷 복원 시 깨끗한 상태에서 시작할 수 있습니다.