전용 로그 볼륨(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를 활성화하려면
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/rds/ 에서 Amazon RDS 콘솔을 엽니다.
- Create database를 선택합니다.
- Create DB instance 페이지에서 DLV를 지원하는 DB 엔진을 선택합니다.
- Storage에서:
- Provisioned IOPS SSD (io1) 또는 Provisioned IOPS SSD (io2) 중 하나를 선택합니다.
- 원하는 Allocated storage와 Provisioned IOPS를 입력합니다.
- Dedicated Log Volume을 펼친 다음 Turn on Dedicated Log Volume을 선택합니다.
- 필요에 따라 다른 설정을 선택합니다.
- 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를 활성화하려면
- AWS Management Console에 로그인하고 https://console.aws.amazon.com/rds/ 에서 Amazon RDS 콘솔을 엽니다.
- 탐색 창에서 Databases를 선택합니다.
- DB 인스턴스 목록을 필터링하려면 Filter databases에 Amazon RDS가 결과를 필터링하는 데 사용할 텍스트 문자열을 입력합니다. 이름에 해당 문자열이 포함된 DB 인스턴스만 표시돼요.
- 수정하려는 Provisioned IOPS 스토리지 DB 인스턴스를 선택합니다.
- Modify를 선택합니다.
- Modify DB instance 페이지에서:
- Storage에서 Dedicated Log Volume을 펼친 다음 Turn on Dedicated Log Volume을 선택합니다.
- Continue를 선택합니다.
- 변경 사항을 DB 인스턴스에 즉시 적용하려면 Apply immediately를 선택합니다. 또는 다음 예약된 유지 관리 창에 적용하려면 Apply during the next scheduled maintenance window를 선택합니다.
- 변경될 파라미터를 검토하고 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 상태가 되어 다운타임이 발생해요.