Amazon RDS DB 인스턴스의 사용 가능한 스토리지 공간이 부족한 이유는 무엇이며, 스토리지 Auto Scaling을 활성화했는데 DB 인스턴스가 스토리지가 가득 찬 상태인 이유는 무엇입니까?

최종 업데이트 날짜: 2020년 3월 5일

Amazon Relational Database Service(Amazon RDS) DB 인스턴스에 대해 스토리지 Auto Scaling을 활성화했지만 사용 가능한 스토리지 공간이 10% 미만이거나 인스턴스의 스토리지가 가득 찬 상태인 것으로 나타납니다. 이 문제가 발생하는 이유는 무엇이고, 어떻게 해결할 수 있습니까?

간략한 설명

최근에 수동으로 또는 Auto Scaling을 통해 RDS DB 인스턴스의 스토리지를 늘린 경우 DB 인스턴스의 스토리지 최적화가 완료된 후 6시간(휴지 기간)동안 더 이상 스토리지를 수정할 수 없습니다. 휴지 기간은 작업이 완료된 후에만 시작되기 때문에 스토리지 수정 휴지 기간은 총 6시간을 초과할 수 있으며, 스토리지 최적화를 완료하는 데 몇 시간이 걸릴 수 있습니다. 스토리지 수정 휴지 기간 중에는 사용 가능한 스토리지 공간이 10% 미만이더라도 Auto Scaling으로 DB 인스턴스의 스토리지를 늘릴 수 없습니다. 자세한 내용은 DB 인스턴스 스토리지 용량 늘리기를 참조하십시오.

Auto Scaling을 사용하여 RDS DB 인스턴스의 스토리지를 늘릴 경우 스토리지는 5GiB, 현재 할당된 스토리지의 10% 또는 지난 1시간 동안의 FreeStorageSpace 지표를 기준으로 한 예상 증가량 중 가장 큰 값을 기준으로 확장됩니다.

데이터 로드가 증가할 것으로 예상되는 경우(예: RDS DB 인스턴스의 현재 스토리지 크기의 20%를 초과하는 로드), 모범 사례로서 데이터 로드가 발생하기 전에 RDS DB 스토리지의 크기를 수동으로 늘리는 것이 좋습니다. 예를 들어 RDS DB 인스턴스의 스토리지 크기가 100GiB이고 사용 가능한 공간이 10.1GiB이며 스토리지 사용량이 일반적으로 시간당 100MB인 경우, Auto Scaling을 통해 스토리지가 10%(10GiB) 확장됩니다. 하지만 1시간 이내에 50GiB의 데이터를 로드할 것으로 예상되는 경우에는 스토리지를 10% 늘리는 것으로 충분하지 않습니다. 이전 Auto Scaling 작업 시점이 스토리지 수정 휴지 기간에 해당하기 때문에 최소 6시간 동안 RDS DB 인스턴스의 스토리지를 수정할 수 없고, 따라서 RDS DB 인스턴스의 스토리지가 몇 시간 동안 가득 찬 상태로 유지됩니다.

해결 방법

RDS DB 인스턴스의 스토리지 크기를 늘릴 수 없는 경우, 다음 징후가 나타나는지 살펴 인스턴스가 스토리지 수정 휴지 기간의 영향을 받는지 먼저 확인하십시오.

  • RDS DB 인스턴스의 상태가 Storage-optimization(스토리지 최적화)입니다.
  • RDS DB 인스턴스의 상태가 Storage-full(스토리지 가득 참) 또는 Available(사용 가능)이지만 최근에 스토리지가 수정되었습니다. 스토리지 확장 작업이 최근에 수행되었는지 확인하려면 RDS DB 인스턴스의 이벤트에 "Finished applying to allocated storage(할당된 스토리지에 적용 완료)" 또는 "Finished applying autoscale initiated modification to allocated storage(자동 조정으로 시작된 수정 사항을 할당된 스토리지에 적용 완료)"라는 메시지가 있는지 확인하십시오. 휴지 기간은 스토리지 최적화가 완료된 후 시작되고 작업을 완료하는 데 몇 시간이 걸릴 수 있으므로 이전 24시간 동안의 스토리지 수정 사항을 확인하는 것이 가장 좋습니다.

최근 스토리지 수정 사항이 있고 휴지 기간이 지날 때까지 기다릴 수 없는 경우, 데이터베이스를 Amazon Elastic Block Store(Amazon EBS) 스토리지가 더 많은 새 RDS DB 인스턴스에 복원할 수 있습니다. 하지만 RDS DB 인스턴스가 Storage-full(스토리지 가득 참) 상태인 경우에는 먼저 RDS DB 인스턴스에서 데이터 로드를 중지해야 합니다. 그런 다음 데이터베이스 엔진의 프로세스에 따라 RDS DB 인스턴스에서 스토리지 공간을 해제할 수 있습니다. RDS DB 인스턴스에서 모든 데이터 로드를 중지하면 Amazon RDS 자동화 기능이 로그 파일에 사용되는 공간도 해제하려고 시도합니다. 하지만 이 프로세스는 인스턴스가 Storage-full(스토리지 가득 참) 상태를 벗어날 때까지 몇 분에서 몇 시간 정도 걸릴 수 있습니다.

RDS DB 인스턴스가 Storage-full(스토리지 가득 참) 상태가 아닌 경우 다음 방법 중 하나를 사용하여 DB 인스턴스 스토리지 크기를 늘릴 수 있습니다.

  • 옵션 1: RDS DB 인스턴스의 읽기 복제본 생성 및 승격
  • 옵션 2: 수동 DB 스냅샷을 생성하고 RDS DB 인스턴스를 특정 시점으로 복원

이 두 옵션 모두 데이터베이스 가동 중지가 발생하지만 읽기 복제본을 생성하고 승격하면 가동 중지 시간이 단축됩니다. Amazon RDS 읽기 복제본은 MySQL, MariaDB 및 PostgreSQL 엔진의 모든 버전에서 지원됩니다. Oracle 데이터베이스 인스턴스의 경우 읽기 복제본은 Oracle Enterprise Edition 버전 12.1.0.2.v10 이상에서만 지원됩니다. Oracle 읽기 복제본을 사용하려면 Active Data Guard 라이선스가 있어야 합니다.

옵션 1: RDS DB 인스턴스의 읽기 복제본 생성 및 승격

  1. RDS DB 인스턴스의 읽기 복제본을 생성합니다(아직 없는 경우).
  2. 읽기 복제본의 스토리지 용량을 수동으로 늘립니다. 기본적으로 읽기 복제본에 대해서는 Amazon RDS 스토리지 Auto Scaling이 비활성화되어 있습니다.
  3. 활성 RDS DB 인스턴스의 이름을 다른 이름으로 바꾸어 모든 수신 트래픽을 중지합니다.
  4. 읽기 복제본의 이름을 활성 RDS DB 인스턴스에서 이전에 사용한 이름으로 바꿉니다. 이렇게 하면 읽기 복제본 엔드포인트가 활성 RDS DB 인스턴스와 동일하게 변경되므로 애플리케이션을 다시 구성할 필요가 없습니다.
  5. 읽기 복제본을 승격합니다.

참고: 애플리케이션 또는 클라이언트의 경우 3~5단계를 진행하는 중에 데이터베이스 가동 중지가 발생합니다.

옵션 2: 수동 DB 스냅샷을 생성하고 RDS DB 인스턴스를 특정 시점으로 복원

  1. 활성 RDS DB 인스턴스의 이름을 바꾸어 모든 수신 트래픽을 중지합니다. 이렇게 하면 RDS DB 인스턴스가 Storage-full(스토리지 가득 참) 상태가 되는 것을 방지할 수 있습니다. RDS DB 인스턴스가 Storage-full(스토리지 가득 참) 상태인 경우 다음 단계로 진행하여 수동 스냅샷을 생성할 수 없습니다.
  2. RDS DB 인스턴스의 DB 스냅샷을 생성합니다. 복원된 RDS DB 인스턴스까지 스토리지 수정 휴지 기간의 영향을 받는 일이 없도록 새 스냅샷을 만들어야 합니다.
  3. 복원 가능한 최근 시간을 선택하여 RDS DB 인스턴스를 특정 시점으로 복원합니다. 그런 다음 활성 RDS DB 인스턴스에서 사용한 이름을 인스턴스 식별자로 입력합니다. 참고: 휴지 기간이 발생하는 Auto Scaling 작업이 더 이상 증가하지 않도록 하려면 지금은 Auto Scaling을 활성화하지 마십시오.
  4. 필요한 경우, 복원된 RDS DB 인스턴스를 사용자 지정 보안 그룹을 포함하도록 수정합니다. 기본 데이터베이스 보안 그룹이 새 RDS DB 인스턴스에 적용됩니다. 사용자 지정 보안 그룹을 사용하는 경우 지금 설정합니다.
  5. 새 RDS DB 인스턴스의 스토리지 용량을 수동으로 늘립니다.

참고: 애플리케이션 또는 클라이언트의 경우 1~4단계를 진행하는 중에 데이터베이스 가동 중지가 발생합니다.