Amazon Web Services 한국 블로그
Amazon RDS 스냅샷, Parquet 포맷 기반 Amazon S3 내보내기 기능 출시
오늘날 AWS 고객은 복잡한 애플리케이션을 더 작은 조각으로 나누어 다양한 목적으로 구축 된 데이터베이스를 사용하여 고도로 분산 된 애플리케이션을 구축하여 올바른 작업에 적합한 툴을 선택할 수 있습니다. 데이터 저장소 및 애플리케이션의 수가 증가함에 따라 여러 데이터 소스에서 분석을 실행하는 것은 어려울 수 있습니다.
최근 AWS는 데이터 분석가, 엔지니어 및 데이터 과학자가 관계형, 비 관계형, 객체 및 맞춤형 데이터 소스에 저장된 데이터에 대해 SQL 쿼리를 실행할 수있는 Amazon Athena Federated Query 를 출시했습니다 . 또한 Amazon Redshift Federated Query를 사용하면 운영 데이터베이스, 데이터웨어 하우스 및 데이터 레이크에서 데이터를 쿼리하고 분석 할 수 있습니다. 이제 Amazon RDS, Amazon Aurora 및 DynamoDB의 라이브 데이터에 대한 쿼리를 두 가지 새로운 기능으로 Amazon Redshift 및 Amazon S3 환경에 대한 쿼리와 통합 할 수 있습니다.
DB 스냅 샷 데이터를 Amazon S3로 내보내기
오늘 분석을위한 효율적인 개방형 컬럼 스토리지 형식 인 Apache Parquet 로 Amazon Relational Database Service (RDS) 또는 Amazon Aurora 스냅 샷을 Amazon S3 로 내보낼 수 있음을 알려드립니다 . Parquet 형식은 텍스트 형식에 비해 Amazon S3에서 내보내는 데 최대 2 배 더 빠르며 최대 6 배 적은 스토리지를 사용합니다. 내 보낸 데이터를 Amazon Athena, Amazon EMR (Spark) 및 Amazon SageMaker와 같은 다른 AWS 쿼리 서비스로 분석 할 수 있습니다.
수동 스냅 샷 및 자동 시스템 스냅 샷을 내보낼 수 있습니다. 기본적으로 스냅 샷의 모든 데이터가 내보내집니다. 그러나 특정 데이터베이스, 스키마 또는 테이블 세트를 내보내도록 선택할 수 있습니다. 내보내기 작업이 데이터베이스가 아닌 스냅 샷에서 수행되므로 스냅 샷에서 데이터를 추출해도 데이터베이스 성능에 영향을 미치지 않습니다.
RDS 관리 콘솔 스냅 샷을 클릭 하거나 AWS SDK 또는 CLI를 사용하여 몇 번의 클릭으로 내보내기를 생성 할 수 있습니다 .
내보내기를 식별하기위한 이름, 부분 (특정 스키마 또는 테이블) 또는 모두를 식별하기위한 이름을 지정할 수 있으며 스냅 샷을 내보낼 S3 버킷은 스냅 샷과 동일한 AWS 리전에 있어야합니다.
스냅 샷 내보내기 작업에 S3 버킷에 대한 액세스 권한을 부여하는 AWS Identity and Access Management (IAM) 역할을 생성해야 합니다. “Create a New Role (새 역할 생성)”을 선택하고 상자에 IAM 역할 이름을 할당하면 자동으로 생성됩니다. 서버 측 암호화를 위해 AWS KMS (AWS Key Management Service) 키를 고객이 만든 키로 만들어야 합니다. KMS 키는 스냅 샷 내보내기 작업에서 S3에 내보내기 데이터를 쓸 때 KMS 서버 측 암호화를 설정하는 데 사용됩니다.
“Amazon S3로 내보내기”버튼을 클릭하면 작업이 처리 중이며 스냅샷 크기에 따라 몇 분이 걸립니다. 이제 “Amazon S3로 내보내기”메뉴에서 내보내기 상태를 확인할 수 있습니다.
AWS CLI를 사용하여 DB 스냅 샷을 Amazon S3로 내보내기 하려면 start-export-task 명령을 사용하시면 됩니다. 다음 CLI 예제에서 스냅샷 내보내기 작업의 이름은 my_snapshot_export
, 원하는 S3 버킷 my_export_bucket
으로 스냅샷을 내 보냅니다.
$ aws rds start-export-task \
--export-task-identifier my_snapshot_export \
--source-arn arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot_name \
--s3-bucket-name my_export_bucket \
--iam-role-arn iam_role \
--kms-key-id master_key
자세한 내용은 Aurora 설명서 또는 Amazon RDS 설명서를 참고하시기 바랍니다.
Amazon Athena에서 내 보낸 스냅샷 데이터 질의하기
내보내기 작업을 마친 후 결과를 Parquet 형식으로 저장하는 것을 볼 수 있습니다. Parquet는 모든 데이터를 다음 기본 유형 중 하나로 저장합니다. BOOLEAN, INT32, INT64, INT96, FLOAT, DOUBLE, BYTE_ARRAY – 가변 길이 바이트 배열 (이진이라고도 함) 및 FIXED_LEN_BYTE_ARRAY – 고정 길이 바이트 배열 값의 크기는 일정합니다. 자세한 내용은 MySQL 데이터 형식 Parquet 매핑 및 PostgreSQL 데이터 형식 Parquet 매핑을 참조하시기 바랍니다 .
일부 문자 ( ,;{}()\n\t=
)는 데이터베이스 테이블 열 이름에서 지원되지 않습니다. 내보내기 중에 열 이름에 이러한 문자가 있는 테이블을 건너뛰게 됩니다. 데이터에 500MB 이상의 큰 값이 포함되어 있으면 내보내기에 실패합니다. 또한, 데이터베이스, 스키마 또는 테이블 이름에 공백이 있으면 부분 내보내기가 지원되지 않습니다. 이 때, 전체 DB 스냅샷을 내보낼 수 있습니다.
Amazon Athena 콘솔에서 export_tables_info-bucket-name.json과 같은 구성표를 참조하는 테이블을 만들 수 있습니다.
샘플 테이블 – employees 테이블을 만든 후 간단하게 쿼리 할 수 있습니다. Apache Parquet 는 더 나은 열 단위 압축 비율을 사용하거나 데이터 블록을 건너 뛰어 Amazon S3에서 더 적은 바이트를 읽음으로써 쿼리 성능을 향상 시켜 데이터를 효율적으로 저장하는 기능을 제공합니다. 자세한 내용은 Amazon Athe를 위한 10 가지 성능 튜닝 팁 의 블로그 게시물을 참조 하십시오.
또한, Amazon EMR에서 Spark 또는 Hive를 사용하여 기존 데이터를 Parquet 또는 ORC로 변환 할 수 있습니다. 자세한 내용은 Amazon Athena 기반 S3의 데이터 분석을 참조하십시오.
- AWS Glue 및 Amazon S3를 통한 Data Lake Foundation 구축
- aws-blog-spark-parquet-conversion Spark GitHub 리포지토리
- 열 형식으로 변환하기 (Hive를 사용하여 변환)
정식 출시
Amazon RDS 스냅샷 S3으로 내보내기는 PostgreSQL 용 Amazon RDS, MariaDB 용 Amazon RDS, MySQL 용 Amazon RDS, Amazon Aurora PostgreSQL 및 Amazon Aurora MySQL 스냅 샷에서 데이터를 내보낼 수 있으며, 현재 미국 동부 (버지니아 북부), 동부 (오하이오), 미국 서부 (오레곤), 유럽 (아일랜드) 및 아시아 태평양 (도쿄) 리전에서 사용할 수 있습니다.
테스트를 위해 DB 스냅 샷을 사용 가능한 리전으로 복사하고 Amazon S3로 내보낼 수 있으며 S3 버킷의 리전 간 복제를 통해 데이터를 질의 할 수도 있습니다. 앞으로 Amazon S3 및 Athena의 데이터베이스를 쉽게 분석 할 수 있도록 서울 지역을 포함한 더 많은 지역으로이 기능이 확장되기를 바랍니다.
– Channy(윤석찬);