MySQL 데이터 가져오기 고려 사항
MySQL 데이터 가져오기 고려 사항
AWS RDS 사용자 가이드의 이 페이지를 한국어로 설명합니다.
출처: 문서
본문
다음 내용은 MySQL로 데이터를 로드하는 것과 관련된 기술 정보를 담고 있습니다. 이 내용은 MySQL 서버 아키텍처에 익숙한 사용자를 대상으로 합니다.
바이너리 로깅
바이너리 로깅을 활성화하면 데이터 로드 성능이 저하되고 비활성화된 로깅에 비해 최대 4배의 추가 디스크 공간이 필요합니다. 데이터 로드에 사용되는 트랜잭션 크기는 시스템 성능과 디스크 공간 요구에 직접 영향을 미칩니다 — 더 큰 트랜잭션은 더 많은 리소스를 필요로 합니다.
트랜잭션 크기
트랜잭션 크기는 MySQL 데이터 로드의 다음 측면에 영향을 미칩니다.
- 리소스 소비
- 디스크 공간 활용
- 재개 프로세스
- 복구 시간
- 입력 형식(플랫 파일 또는 SQL)
이 섹션에서는 트랜잭션 크기가 바이너리 로깅에 어떤 영향을 미치는지 설명하고 대규모 데이터 로드 중에 바이너리 로깅을 비활성화해야 하는 이유를 제시합니다. Amazon RDS 자동 백업 보존 기간을 설정하여 바이너리 로깅을 활성화하거나 비활성화할 수 있습니다. 0이 아닌 값은 바이너리 로깅을 활성화하고 0은 비활성화합니다. 자세한 내용은 백업 보존 기간을 참조하세요.
이 섹션에서는 또한 대규모 트랜잭션이 InnoDB에 미치는 영향과 트랜잭션 크기를 작게 유지하는 것이 중요한 이유를 설명합니다.
소규모 트랜잭션
소규모 트랜잭션의 경우 바이너리 로깅은 데이터 로드에 필요한 디스크 쓰기 횟수를 두 배로 늘립니다. 이 효과는 다른 데이터베이스 세션의 성능을 심각하게 저하시키고 데이터 로드에 필요한 시간을 늘릴 수 있습니다. 발생하는 성능 저하는 부분적으로 다음 요인에 따라 달라집니다.
- 업로드 속도
- 로드 중 발생하는 다른 데이터베이스 활동
- Amazon RDS DB 인스턴스의 용량
바이너리 로그는 로드된 데이터의 양과 거의 같은 디스크 공간을 로그가 백업되어 제거될 때까지 소비합니다. Amazon RDS는 바이너리 로그를 자주 백업하고 제거하여 이를 최소화합니다.
대규모 트랜잭션
대규모 트랜잭션의 경우 바이너리 로깅은 다음 이유로 IOPS와 디스크 사용량을 3배로 늘립니다.
- 바이너리 로그 캐시가 트랜잭션 데이터를 디스크에 일시적으로 저장합니다.
- 이 캐시는 트랜잭션 크기에 따라 커지며 디스크 공간을 소비합니다.
- 트랜잭션(커밋 또는 롤백)이 완료되면 시스템은 캐시를 바이너리 로그로 복사합니다.
이 프로세스는 데이터의 복사본 세 개를 만듭니다.
- 원본 데이터
- 디스크의 캐시
- 최종 바이너리 로그 항목
각 쓰기 작업은 추가 I/O를 발생시켜 성능에 더욱 영향을 미칩니다.
이 때문에 바이너리 로깅은 비활성화된 로깅에 비해 3배의 디스크 공간이 필요합니다. 예를 들어 10GiB의 데이터를 단일 트랜잭션으로 로드하면 세 개의 복사본이 만들어집니다.
- 테이블 데이터용 10GiB
- 바이너리 로그 캐시용 10GiB
- 바이너리 로그 파일용 10GiB
필요한 총 임시 디스크 공간은 30GiB입니다.
중요한 디스크 공간 고려 사항:
- 캐시 파일은 세션이 종료되거나 새 트랜잭션이 다른 캐시를 만들 때까지 유지됩니다.
- 바이너리 로그는 백업될 때까지 남아 있으며, 잠시 동안 20GiB(캐시와 로그)를 보유할 수 있습니다.
LOAD DATA LOCAL INFILE을 사용하여 데이터를 로드하면 로드 전에 만든 백업에서 데이터베이스를 복구해야 하는 경우 데이터 복구가 네 번째 복사본을 만듭니다. 복구 중 MySQL은 바이너리 로그에서 데이터를 추출하여 플랫 파일로 만듭니다. 그런 다음 MySQL은 LOAD DATA LOCAL INFILE을 실행합니다. 앞의 예시를 바탕으로 이 복구에는 테이블, 캐시, 로그, 로컬 파일 각각에 10GiB씩 총 40GiB의 임시 디스크 공간이 필요합니다. 최소 40GiB의 여유 디스크 공간이 없으면 복구가 실패합니다.
대규모 데이터 로드 최적화
대규모 데이터 로드의 경우 바이너리 로깅을 비활성화하여 오버헤드와 디스크 공간 요구를 줄이세요. 백업 보존 기간을 0으로 설정하여 바이너리 로깅을 비활성화할 수 있습니다. 로드가 완료된 후 백업 보존 기간을 적절한 0이 아닌 값으로 복원하세요. 자세한 내용은 Amazon RDS DB 인스턴스 수정 및 설정 표의 백업 보존 기간을 참조하세요.
참고
DB 인스턴스가 읽기 복제본의 소스 DB 인스턴스인 경우 백업 보존 기간을 0으로 설정할 수 없습니다.