전용 로그 볼륨(DLV) 사용

전용 로그 볼륨(DLV) 사용

전용 로그 볼륨(DLV)은 데이터베이스 테이블이 있는 볼륨과 분리된 별도 스토리지 볼륨으로 트랜잭션 로그를 옮겨주는 기능이에요. 로그 쓰기를 더 효율적이고 일관되게 만들어 주기 때문에, 대용량 스토리지나 높은 IOPS, 지연에 민감한 워크로드에 특히 좋아요.

출처: 문서

본문

Provisioned IOPS(PIOPS) 스토리지를 사용하는 DB 인스턴스에 전용 로그 볼륨(DLV)을 사용할 수 있어요. DLV는 PostgreSQL 데이터베이스 트랜잭션 로그와 MySQL/MariaDB redo 로그 및 바이너리 로그를, 데이터베이스 테이블이 포함된 볼륨과 분리된 스토리지 볼륨으로 이동시켜요. DLV는 트랜잭션 쓰기 로깅을 더 효율적이고 일관되게 만들어 줘요. DLV는 할당 스토리지가 크거나, 초당 I/O(IOPS) 요구량이 높거나, 지연에 민감한 워크로드가 있는 데이터베이스에 이상적이에요.

DLV는 PIOPS 스토리지(io1 및 io2 Block Express)에서 지원되며 1,024 GiB 고정 크기와 3,000 Provisioned IOPS로 생성돼요.

Amazon RDS는 모든 AWS 리전에서 다음 버전에 대해 DLV를 지원해요.

  • MariaDB 10.6.7 이상 10 버전
  • MySQL 8.0.28 이상 8.0 버전, MySQL 8.4.3 이상 8.4 버전
  • PostgreSQL 13.10 이상 13 버전, 14.7 이상 14 버전, 15.2 이상 15 버전

RDS는 Multi-AZ 배포에서 DLV를 지원해요. Multi-AZ 인스턴스를 수정하거나 만들면 기본(primary)과 보조(secondary) 양쪽에 DLV가 생성돼요.

RDS는 읽기 전용 복제본에서 DLV를 지원해요. 기본 DB 인스턴스에서 DLV가 활성화되어 있으면, DLV 활성화 후 생성된 모든 읽기 전용 복제본에도 DLV가 생겨요. DLV로 전환하기 전에 생성된 읽기 전용 복제본은 명시적으로 수정하지 않는 한 DLV가 활성화되지 않아요. DLV 활성화 전에 기본 인스턴스에 연결된 모든 읽기 전용 복제본도 수동으로 수정해 DLV를 갖도록 권장해요.

참고

5 TiB 이상의 데이터베이스 구성에는 DLV를 권장해요.

DLV의 이점에 대한 자세한 내용은 다음 블로그 게시물을 참고하세요.

  • Amazon RDS 전용 로그 볼륨으로 데이터베이스 성능 향상
  • 전용 로그 볼륨으로 Amazon RDS for PostgreSQL 벤치마킹
  • Percona 문서에서 전용 로그 볼륨으로 AWS RDS for MySQL 성능 극대화

각 데이터베이스 엔진에서 사용 가능한 할당 스토리지, Provisioned IOPS, 스토리지 처리량 범위에 대한 내용은 Provisioned IOPS SSD 스토리지를 참고하세요.

주제

  • DLV 활성화 및 비활성화 시 고려 사항
  • DB 인스턴스 생성 시 DLV 활성화
  • 기존 DB 인스턴스에서 DLV 활성화
  • DLV 스토리지 모니터링

DLV 활성화 및 비활성화 시 고려 사항

DLV 활성화와 비활성화는 시간이 걸리고 다운타임을 유발할 수 있어요. 이 과정은 활성화할 때 모든 트랜잭션 로그 또는 redo 및 바이너리 로그(데이터베이스 엔진에 따라 다름)를 새 볼륨으로, 비활성화할 때는 원래 스토리지로 다시 복사하는 작업을 수반해요. 이 작업 시간은 여러 요인의 영향을 받아요.

  • 트랜잭션 로그 수
    • 트랜잭션이 많은 대규모 데이터베이스는 더 많은 로그를 생성해 복사에 필요한 시간이 늘어나요.
    • 복제 슬롯이 비활성화되거나 복제가 지연되고 있으면 트랜잭션 로그가 기본 DB 인스턴스에 쌓여 복사에 필요한 시간이 늘어날 수 있어요. 복제가 최신 상태인지 확인하고 불필요한 슬롯을 제거하세요.
  • 스토리지 구성
    • DB 인스턴스 EBS 대역폭 – 대역폭이 높을수록 데이터 전송이 빨라져요.
    • Provisioned IOPS 수 – 초당 I/O 작업 수(IOPS)가 많을수록 복사 과정이 빨라질 수 있어요.
    • 데이터베이스 활동 – 구성 중 데이터베이스 활동이 많으면 과정이 느려질 수 있어요.

다운타임을 최소화하려면 활동이 적은 시간이나 유지 관리 창에 계획하고 예약하는 것을 권장해요.

DB 인스턴스 생성 시 DLV 활성화

AWS Management Console, AWS CLI, 또는 RDS API를 사용해 DLV가 활성화된 DB 인스턴스를 만들 수 있어요.

새 DB 인스턴스에서 DLV를 활성화하려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/rds/ 에서 Amazon RDS 콘솔을 엽니다.
  2. Create database를 선택합니다.
  3. Create DB instance 페이지에서 DLV를 지원하는 DB 엔진을 선택합니다.
  4. Storage에서:
    • Provisioned IOPS SSD (io1) 또는 Provisioned IOPS SSD (io2) 중 하나를 선택합니다.
    • 원하는 Allocated storage와 Provisioned IOPS를 입력합니다.
    • Dedicated Log Volume을 펼친 다음 Turn on Dedicated Log Volume을 선택합니다.
  5. 필요에 따라 다른 설정을 선택합니다.
  6. Create database를 선택합니다.
    • 데이터베이스가 생성된 후 데이터베이스 세부 페이지의 Configuration 탭에 Dedicated Log Volume 값이 나타나요.

CLI로 생성 시 DLV 활성화

Provisioned IOPS 스토리지를 사용해 DB 인스턴스를 만들 때 DLV를 활성화하려면 AWS CLI 명령 create-db-instance를 사용하세요. 다음 파라미터를 설정해요.

  • --dedicated-log-volume – 전용 로그 볼륨을 활성화.
  • --storage-type – Provisioned IOPS의 경우 io1 또는 io2로 설정.
  • --allocated-storage – DB 인스턴스에 할당할 스토리지 양(GiB).
  • --iops – DB 인스턴스의 Provisioned IOPS 양(초당 I/O 작업 수).

API로 생성 시 DLV 활성화

Provisioned IOPS 스토리지를 사용해 DB 인스턴스를 만들 때 DLV를 활성화하려면 Amazon RDS API 작업 CreateDBInstance를 사용하세요. 다음 파라미터를 설정해요.

  • DedicatedLogVolume – 전용 로그 볼륨을 활성화하려면 true로 설정.
  • StorageType – Provisioned IOPS의 경우 io1 또는 io2로 설정.
  • AllocatedStorage – DB 인스턴스에 할당할 스토리지 양(GiB).
  • Iops – DB 인스턴스의 IOPS 속도(초당 I/O 작업 수).

기존 DB 인스턴스에서 DLV 활성화

AWS Management Console, AWS CLI, 또는 RDS API를 사용해 DB 인스턴스를 수정해 DLV를 활성화할 수 있어요.

DB 인스턴스의 DLV 설정을 수정한 후에는 DB 인스턴스를 재부팅해야 해요.

기존 DB 인스턴스에서 DLV를 활성화하려면

  1. AWS Management Console에 로그인하고 https://console.aws.amazon.com/rds/ 에서 Amazon RDS 콘솔을 엽니다.
  2. 탐색 창에서 Databases를 선택합니다.
  3. DB 인스턴스 목록을 필터링하려면 Filter databases에 Amazon RDS가 결과를 필터링하는 데 사용할 텍스트 문자열을 입력합니다. 이름에 해당 문자열이 포함된 DB 인스턴스만 표시돼요.
  4. 수정하려는 Provisioned IOPS 스토리지 DB 인스턴스를 선택합니다.
  5. Modify를 선택합니다.
  6. Modify DB instance 페이지에서:
    • Storage에서 Dedicated Log Volume을 펼친 다음 Turn on Dedicated Log Volume을 선택합니다.
  7. Continue를 선택합니다.
  8. 변경 사항을 DB 인스턴스에 즉시 적용하려면 Apply immediately를 선택합니다. 또는 다음 예약된 유지 관리 창에 적용하려면 Apply during the next scheduled maintenance window를 선택합니다.
  9. 변경될 파라미터를 검토하고 Modify DB instance를 선택해 수정을 완료합니다.
    • Dedicated Log Volume의 새 값이 데이터베이스 세부 페이지의 Configuration 탭에 나타나요.

CLI로 기존 인스턴스 DLV 활성화/비활성화

Provisioned IOPS 스토리지를 사용하는 기존 DB 인스턴스에서 DLV를 활성화하거나 비활성화하려면 AWS CLI 명령 modify-db-instance를 사용하세요. 다음 파라미터를 설정해요.

  • --dedicated-log-volume – 전용 로그 볼륨을 활성화.
    • --no-dedicated-log-volume(기본값)을 사용해 전용 로그 볼륨을 비활성화.
  • --apply-immediately – --apply-immediately를 사용해 변경 사항을 즉시 적용.
    • --no-apply-immediately(기본값)을 사용해 다음 유지 관리 창에 변경 사항을 적용.

API로 기존 인스턴스 DLV 활성화/비활성화

Provisioned IOPS 스토리지를 사용하는 기존 DB 인스턴스에서 DLV를 활성화하거나 비활성화하려면 Amazon RDS API 작업 ModifyDBInstance를 사용하세요. 다음 파라미터를 설정해요.

  • DedicatedLogVolume – 전용 로그 볼륨을 활성화하려면 true로 설정.
    • 전용 로그 볼륨을 비활성화하려면 false로 설정. 기본값이에요.
  • ApplyImmediately – True로 설정하면 변경 사항을 즉시 적용.
    • False(기본값)로 설정하면 다음 유지 관리 창에 적용.

DLV 스토리지 모니터링

CloudWatch의 FreeStorageSpaceLogVolume 지표를 사용해 DLV 스토리지 사용량을 모니터링할 수 있어요.

RDS for PostgreSQL에서 트랜잭션 로그가 차지하는 크기를 확인하려면 다음 쿼리를 사용할 수 있어요.

SELECT pg_size_pretty(COALESCE(sum(size), 0)) AS total_wal_generated_size
FROM pg_catalog.pg_ls_waldir();

DLV의 스토리지가 부족해지면 DB 인스턴스가 storage-full 상태가 되어 다운타임이 발생해요.

더 알아보기 (Learn more)