Amazon S3로 DB 스냅샷 데이터 내보내기 - Amazon Aurora

Amazon S3로 DB 스냅샷 데이터 내보내기

DB 스냅샷 데이터를 Amazon S3 버킷으로 내보낼 수 있습니다. 데이터를 내보낸 후에는 Amazon Athena 또는 Amazon Redshift Spectrum 같은 도구를 통해 직접 내보낸 데이터를 분석할 수 있습니다. 내보내기 프로세스는 백그라운드에서 실행되며 활성 DB 클러스터의 성능에는 영향을 주지 않습니다.

DB 스냅샷을 내보낼 때 Amazon Aurora는 해당 스냅샷에서 데이터를 추출하여 계정의 Amazon S3 버킷에 저장합니다. 데이터는 압축되고 일관된 Apache Parquet 형식으로 저장됩니다.

수동 스냅샷 및 자동화된 시스템 스냅샷을 내보낼 수 있습니다. 기본적으로 스냅샷의 모든 데이터가 내보내집니다. 그러나 특정한 데이터베이스, 스키마 또는 테이블 집합을 내보내도록 선택할 수 있습니다.

Amazon RDS에서는 다음을 제외한 모든 AWS 리전에서 스냅샷 내보내기를 지원합니다.

  • AWS GovCloud(US-East)

  • AWS GovCloud (US-West)

  • 중국

다음 표에는 스냅샷 데이터를 Amazon S3으로 내보내는 것이 지원되는 Aurora MySQL 엔진 버전이 나와 있습니다. Aurora MySQL 엔진에 대한 자세한 정보는 Amazon Aurora MySQL에 대한 데이터베이스 엔진 업데이트 단원을 참조하십시오.

Aurora MySQL version MySQL 호환 버전
2.04.6 5.7
2.04.5 5.7
2.04.4 5.7
1.19.5 5.6
1.19.4 5.6
1.19.3 5.6
1.19.2 5.6

다음 표에는 스냅샷 데이터를 Amazon S3으로 내보내는 것이 지원되는 Aurora PostgreSQL 엔진 버전이 나와 있습니다. Aurora PostgreSQL 엔진에 대한 자세한 정보는 Amazon Aurora PostgreSQL의 엔진 버전 단원을 참조하십시오.

Aurora PostgreSQL version PostgreSQL 호환 버전
2.3 10.7
2.2 10.6
1.5 9.6.12
1.4 9.6.11

스냅샷 데이터 내보내기 개요

다음 절차에서는 DB 스냅샷 데이터를 Amazon S3 버킷으로 내보내는 방법을 간략하게 보여 줍니다. 자세한 내용은 다음 섹션을 참조하십시오.

DB 스냅샷 데이터를 Amazon S3로 내보내려면

  1. 내보낼 스냅샷을 식별합니다.

    기존의 자동 또는 수동 스냅샷을 사용하거나 DB 인스턴스의 수동 스냅샷을 생성합니다.

  2. Amazon S3 버킷에 대한 액세스를 설정합니다.

    버킷은 Amazon S3 객체 또는 파일에 대한 컨테이너입니다. 버킷에 액세스하기 위한 정보를 제공하려면 다음 단계를 수행하십시오.

    1. 스냅샷을 내보낼 S3 버킷을 식별합니다. S3 버킷이 스냅샷과 동일한 AWS 리전에 있어야 합니다. 자세한 내용은 내보낼 Amazon S3 버킷 식별 단원을 참조하십시오.

    2. 서버 측 암호화에 대한 AWS Key Management Service(AWS KMS) 고객 마스터 키(CMK)를 만듭니다. AWS KMS CMK는 스냅샷 내보내기 작업에서 S3에 내보내기 데이터를 기록할 때 AWS KMS 서버 측 암호화를 설정하는 데 사용됩니다. 자세한 내용은 Amazon Aurora 리소스 암호화 단원을 참조하십시오.

    3. 스냅샷 내보내기 작업에 S3 버킷에 대한 액세스 권한을 부여하는 AWS Identity and Access Management(IAM) 역할을 생성합니다. 자세한 내용은 IAM 역할을 사용하여 Amazon S3 버킷에 대한 액세스 권한 제공 단원을 참조하십시오.

  3. 콘솔 또는 start-export-task CLI 명령을 사용하여 Amazon S3로 스냅샷을 내보냅니다. 자세한 내용은 Amazon S3 버킷으로 스냅샷 내보내기 단원을 참조하십시오.

  4. Amazon S3 버킷에서 내보낸 데이터에 액세스하려면 Amazon Simple Storage Service 콘솔 사용 설명서객체 업로드, 다운로드 및 관리를 참조하십시오.

Amazon S3 버킷에 대한 액세스 권한 설정

DB 스냅샷 데이터를 Amazon S3 파일로 내보내려면 먼저 스냅샷에 Amazon S3 버킷에 액세스할 수 있는 권한을 부여합니다. 그런 다음 Amazon Aurora 서비스가 Amazon S3 버킷에 쓰기 작업을 할 수 있게 허용하는 IAM 역할을 생성합니다.

내보낼 Amazon S3 버킷 식별

DB 스냅샷을 내보낼 Amazon S3 버킷을 식별합니다. 기존 S3 버킷을 사용하거나 새 S3 버킷을 생성합니다.

참고

내보낼 S3 버킷은 스냅샷과 동일한 AWS 리전에 있어야 합니다.

Amazon S3 버킷 작업에 대한 자세한 내용은 Amazon Simple Storage Service 콘솔 사용 설명서에서 다음을 참조하십시오.

IAM 역할을 사용하여 Amazon S3 버킷에 대한 액세스 권한 제공

DB 스냅샷 데이터를 Amazon S3로 내보내기 전에 스냅샷 내보내기 작업에 Amazon S3 버킷에 대한 쓰기-액세스 권한을 부여하십시오.

이를 위해 해당 버킷에 대한 액세스 권한을 부여하는 IAM 정책을 생성합니다. 그런 다음 IAM 역할을 생성하여 정책을 이 역할에 연결합니다. 나중에 스냅샷 내보내기 작업에 IAM 역할을 할당합니다.

중요

AWS Management 콘솔을 사용하여 스냅샷을 내보내려는 경우 스냅샷을 내보낼 때 IAM 정책 및 역할을 자동으로 생성하도록 선택할 수 있습니다. 지침은 Amazon S3 버킷으로 스냅샷 내보내기을 참조하십시오.

DB 스냅샷 작업에 Amazon S3에 대한 액세스 권한을 부여하려면

  1. IAM 정책을 생성합니다. 이 정책은 스냅샷 내보내기 작업에서 Amazon S3 액세스를 허용하는 버킷 및 객체 권한을 제공합니다.

    Amazon Aurora에서 S3 버킷으로의 파일 전송을 허용하려면 정책에 다음과 같은 필수 작업을 포함시킵니다.

    • s3:PutObject*

    • s3:GetObject*

    • s3:ListBucket

    • s3:DeleteObject*

    • s3:GetBucketLocation

    버킷에서 S3 버킷 및 객체를 식별하려면 정책에 다음 리소스를 포함시킵니다. 다음 리소스 목록은 Amazon S3에 액세스하기 위한 Amazon 리소스 이름(ARN) 형식을 보여 줍니다.

    • arn:aws:s3:::your-s3-bucket

    • arn:aws:s3:::your-s3-bucket/*

    Amazon Aurora에 대한 IAM 정책을 생성하는 방법에 대한 자세한 내용은 IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용 단원을 참조하십시오. IAM 사용 설명서자습서: 첫 번째 고객 관리형 정책 생성 및 연결도 참조하십시오.

    다음 AWS CLI 명령은 이 옵션으로 ExportPolicy라는 IAM 정책을 생성합니다. your-s3-bucket이라는 버킷에 대한 액세스 권한을 부여합니다.

    참고

    정책을 생성한 후 정책의 ARN을 기록해 둡니다. IAM 역할에 정책을 연결할 때 이후 단계에 ARN이 필요합니다.

    aws iam create-policy --policy-name ExportPolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject*", "s3:GetObject*", "s3:DeleteObject*" ], "Resource": [ "arn:aws:s3:::your-s3-bucket", "arn:aws:s3:::your-s3-bucket/*" ] } ] }'
  2. IAM 역할 생성. 이렇게 하면 Aurora이 사용자 대신 이 IAM 역할을 수임하여 Amazon S3 버킷에 액세스할 수 있습니다. 자세한 내용은 IAM 사용 설명서IAM 사용자에게 권한을 위임하기 위한 역할 생성을 참조하십시오.

    다음 예제에서는 AWS CLI 명령을 사용해 rds-s3-export-role이라는 역할을 생성하는 방법을 보여줍니다.

    aws iam create-role --role-name rds-s3-export-role --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "export.rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'
  3. 생성한 IAM 역할에 생성한 IAM 정책을 연결합니다.

    다음 AWS CLI 명령은 앞서 생성한 정책을 rds-s3-export-role이라는 역할에 연결합니다. your-policy-arn을 이전 단계에서 기록해 둔 정책 ARN으로 바꿉니다.

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role

Amazon S3 버킷으로 스냅샷 내보내기

계정당 최대 5개의 DB 스냅샷 내보내기 작업을 동시에 수행할 수 있습니다.

참고

RDS 스냅샷 내보내기는 데이터베이스 유형 및 크기에 따라 다소 시간이 걸릴 수 있습니다. 내보내기 작업은 먼저 전체 데이터베이스를 복원하고 크기를 조정하여 Amazon S3로 데이터를 추출합니다. 이 단계 동안의 작업 진행 상황은 Starting으로 표시됩니다. 작업이 S3로 데이터 내보내기로 전환되면 진행 상황이 진행 중(In progress)으로 표시됩니다.

내보내기를 완료하는 데 걸리는 시간은 데이터베이스에 저장된 데이터에 따라 다릅니다. 예를 들어 숫자로 된 기본 키 또는 인덱스 열이 잘 분산되어 있는 테이블은 가장 빠르게 내보냅니다. 분할에 적합한 열을 포함하지 않는 테이블과 문자열 기반 열에 인덱스가 하나만 있는 테이블은 내보내기가 더 느린 단일 스레드 프로세스를 사용하기 때문에 더 오래 걸립니다.

AWS Management 콘솔, AWS CLI 또는 RDS API를 사용하여 DB 스냅샷을 Amazon S3로 내보낼 수 있습니다.

Amazon S3로 내보내기(Export to Amazon S3) 옵션은 Amazon S3로 내보낼 수 있는 스냅샷에 대해서만 나타납니다. 다음과 같은 이유로 스냅샷을 내보내기에 사용하지 못할 수 있습니다.

  • DB 엔진이 S3 내보내기를 지원하지 않습니다.

  • DB 인스턴스 버전이 S3 내보내기에 지원되지 않습니다.

  • 스냅샷이 생성된 AWS 리전에서 S3 내보내기가 지원되지 않습니다.

DB 스냅샷을 내보내려면

  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 Snapshots(스냅샷)을 선택합니다.

  3. 이 탭에서 내보낼 스냅샷 유형을 선택합니다.

  4. 스냅샷 목록에서 내보낼 스냅샷을 선택합니다.

  5. 작업에서 Export to Amazon S3(Amazon S3로 내보내기)를 선택합니다.

    Export to Amazon S3(Amazon S3로 내보내기) 창이 나타납니다.

  6. Export identifier(내보내기 식별자)에 내보내기 작업을 식별할 이름을 입력합니다. 이 값은 S3 버킷에 생성된 파일의 이름에도 사용됩니다.

  7. 내보낼 데이터의 양을 선택합니다.

    • 스냅샷의 모든 데이터를 내보내려면 모두를 선택합니다.

    • 스냅샷의 특정 부분을 내보내려면 Partial(부분)을 선택합니다. 스냅샷의 어떤 부분을 내보낼지 식별하려면 Identifiers(식별자)에 하나 이상의 테이블을 입력합니다.

  8. S3 버킷에서 내보낼 버킷을 선택합니다.

    내보낸 데이터를 S3 버킷의 폴더 경로에 할당하려면 S3 prefix(S3 접두사)에 선택적 경로를 입력합니다.

  9. IAM 역할에서 선택한 S3 버킷에 대한 쓰기 액세스 권한을 부여하는 역할을 선택하거나 새 역할을 생성합니다.

    • IAM 역할을 사용하여 Amazon S3 버킷에 대한 액세스 권한 제공의 단계에 따라 역할을 생성한 경우에는 해당 역할을 선택합니다.

    • 선택한 S3 버킷에 대한 쓰기 액세스 권한을 부여하는 역할을 생성하지 않은 경우 새 역할 생성을 선택하여 역할을 자동으로 생성합니다. 그런 다음 IAM 역할 이름에 해당 역할의 이름을 입력합니다.

  10. 마스터 키에 내보낸 데이터를 암호화하는 데 사용할 키의 ARN을 입력합니다.

  11. Export to Amazon S3(Amazon S3로 내보내기)를 선택합니다.

AWS CLI를 사용하여 DB 스냅샷을 Amazon S3로 내보내려면 start-export-task 명령을 다음과 같은 필수 옵션과 함께 사용합니다.

  • --export-task-identifier

  • --source-arn

  • --s3-bucket-name

  • --iam-role-arn

  • --kms-key-id

다음 예제에서 스냅샷 내보내기 작업의 이름은 my_snapshot_export이고, 이 작업은 스냅샷을 my_export_bucket이라는 S3 버킷으로 내보냅니다.

Linux, macOS 또는 Unix의 경우는 다음과 같습니다.

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

Windows의 경우:

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

샘플 출력은 다음과 같습니다.

{ "Status": "STARTING", "IamRoleArn": "iam_role", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "my_export_bucket", "PercentProgress": 0, "KmsKeyId": "master_key", "ExportTaskIdentifier": "my_snapshot_export", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:snapshot_name" }

스냅샷 내보내기를 위해 S3 버킷에 폴더 경로를 제공하려면 start-export-task 명령에 --s3-prefix 옵션을 포함시킵니다.

Amazon RDS API를 사용하여 DB 스냅샷을 Amazon S3로 내보내려면 다음 필수 파라미터와 함께 StartExportTask 작업을 사용합니다.

  • ExportTaskIdentifier

  • SourceArn

  • S3BucketName

  • IamRoleArn

  • KmsKeyId

스냅샷 내보내기 모니터링

AWS Management 콘솔, AWS CLI 또는 RDS API를 사용하여 DB 스냅샷 내보내기를 모니터링할 수 있습니다.

DB 스냅샷 내보내기를 모니터링하려면

  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 Snapshots(스냅샷)을 선택합니다.

  3. 스냅샷 내보내기 목록을 보려면 Amazon S3에서 내보내기 탭을 선택합니다.

  4. 특정 스냅샷 내보내기에 대한 정보를 보려면 해당 내보내기 작업을 선택합니다.

AWS CLI을 사용하여 DB 스냅샷 내보내기를 모니터링하려면 describe-export-tasks 명령을 사용합니다.

다음 예제에서는 모든 스냅샷 내보내기에 대한 현재 정보를 표시하는 방법을 보여 줍니다.

aws rds describe-export-tasks { "ExportTasks": [ { "Status": "CANCELED", "TaskEndTime": "2019-11-01T17:36:46.961Z", "S3Prefix": "something", "ExportTime": "2019-10-24T20:23:48.364Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "anewtest", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-25T19:10:58.885Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:parameter-groups-test" }, { "Status": "COMPLETE", "TaskEndTime": "2019-10-31T21:37:28.312Z", "WarningMessage": "{\"skippedTables\":[],\"skippedObjectives\":[],\"general\":[{\"reason\":\"FAILED_TO_EXTRACT_TABLES_LIST_FOR_DATABASE\"}]}", "S3Prefix": "", "ExportTime": "2019-10-31T06:44:53.452Z", "S3Bucket": "examplebucket1", "PercentProgress": 100, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "thursday-events-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 263, "TaskStartTime": "2019-10-31T20:58:06.998Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-31-06-44" }, { "Status": "FAILED", "TaskEndTime": "2019-10-31T02:12:36.409Z", "FailureCause": "The S3 bucket edgcuc-export isn't located in the current AWS Region. Please, review your S3 bucket name and retry the export.", "S3Prefix": "", "ExportTime": "2019-10-30T06:45:04.526Z", "S3Bucket": "examplebucket2", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/2Zp9Utk/h3yCo8nvbEXAMPLEKEY", "ExportTaskIdentifier": "wednesday-afternoon-test", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-10-30T22:43:40.034Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:rds:example-1-2019-10-30-06-45" } ] }

특정 스냅샷 내보내기에 대한 정보를 표시하려면 describe-export-tasks 명령과 함께 --export-task-identifier 옵션을 포함시킵니다. 출력을 필터링하려면 --Filters 옵션을 포함시킵니다. 자세한 옵션은 describe-export-tasks 명령을 참조하십시오.

Amazon RDS API를 사용하여 DB 스냅샷 내보내기에 대한 정보를 표시하려면 DescribeExportTasks 작업을 사용합니다.

내보내기 워크플로우의 완료를 추적하거나 다른 워크플로우를 트리거하려면 Amazon Simple Notification Service 주제를 구독할 수 있습니다. Amazon SNS에 대한 자세한 내용은 Amazon RDS 이벤트 알림 서비스 사용 단원을 참조하십시오.

스냅샷 내보내기 작업 취소

AWS Management 콘솔, AWS CLI 또는 RDS API를 사용하여 DB 스냅샷 내보내기 작업을 취소할 수 있습니다.

참고

스냅샷 내보내기 작업을 취소해도 Amazon S3로 내보낸 데이터는 제거되지 않습니다. 콘솔을 사용하여 데이터를 삭제하는 방법에 대한 자세한 내용은 S3 버킷에서 객체를 삭제하려면 어떻게 해야 합니까?를 참조하십시오. CLI를 사용하여 데이터를 삭제하려면 delete-object 명령을 사용합니다.

스냅샷 내보내기 작업을 취소하려면

  1. AWS Management 콘솔에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 Snapshots(스냅샷)을 선택합니다.

  3. Exports in Amazon S3(Amazon S3에서 내보내기) 탭을 선택합니다.

  4. 취소할 스냅샷 내보내기 작업을 선택합니다.

  5. 취소를 선택합니다.

  6. 확인 페이지에서 Cancel export task(내보내기 작업 취소)를 선택합니다.

AWS CLI를 사용하여 스냅샷 내보내기 작업을 취소하려면 cancel-export-task 명령을 사용합니다. 이 명령에는 --export-task-identifier 옵션이 필요합니다.

aws rds cancel-export-task --export-task-identifier my_export { "Status": "CANCELING", "S3Prefix": "", "ExportTime": "2019-08-12T01:23:53.109Z", "S3Bucket": "examplebucket", "PercentProgress": 0, "KmsKeyId": "arn:aws:kms:AWS_Region:123456789012:key/K7MDENG/bPxRfiCYEXAMPLEKEY", "ExportTaskIdentifier": "my_export", "IamRoleArn": "arn:aws:iam::123456789012:role/export-to-s3", "TotalExtractedDataInGB": 0, "TaskStartTime": "2019-11-13T19:46:00.173Z", "SourceArn": "arn:aws:rds:AWS_Region:123456789012:snapshot:export-example-1" }

Amazon RDS API를 사용하여 스냅샷 내보내기 작업을 취소하려면 ExportTaskIdentifier 파라미터와 함께 CancelExportTask 작업을 사용합니다.

PostgreSQL 권한 오류 문제 해결

PostgreSQL 데이터베이스를 Amazon S3으로 내보낼 때 특정 테이블을 건너뛰었다는 PERMISSIONS_DO_NOT_EXIST 오류가 표시될 수 있습니다. 이는 대개 DB 인스턴스를 생성할 때 지정하는 수퍼유저로 인해 발생하며, 이러한 테이블에 액세스할 수 있는 권한이 없습니다.

이 오류를 해결하려면 다음 명령을 실행합니다.

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA schema_name TO superuser_name

수퍼유저 권한에 대한 자세한 내용은 마스터 사용자 계정 권한 단원을 참조하십시오.

Amazon S3 버킷으로 내보내기를 할 때 데이터 변환

DB 스냅샷을 Amazon S3 버킷으로 내보낼 때 Amazon Aurora는 데이터를 Parquet 형식으로 변환하고, 데이터를 Parquet 형식으로 내보내며, 데이터를 Parquet 형식으로 저장합니다. Parquet에 대한 자세한 내용은 Apache Parquet 웹 사이트를 참조하십시오.

Apache Parquet은 다음과 같은 프리미티브 유형 중 하나로 모든 데이터를 저장합니다.

  • BOOLEAN

  • INT32

  • INT64

  • INT96

  • FLOAT

  • DOUBLE

  • BYTE_ARRAY – 가변 길이 바이트 배열(이진수라고도 함)

  • FIXED_LEN_BYTE_ARRAY – 값이 일정한 크기를 가질 때 사용되는 고정 길이 바이트 배열

Parquet 데이터 유형은 형식을 읽고 쓸 때 복잡성을 줄이기 위한 것입니다. Parquet은 프리미티브 유형을 확장할 수 있도록 논리적 유형을 제공합니다. 논리적 유형LogicalType 메타 데이터 필드의 데이터를 이용으로 주석으로 구현됩니다. 논리적 유형 주석은 프리미티브 유형을 해석하는 방법을 설명합니다.

STRING 논리적 유형에 BYTE_ARRAY 유형이 주석으로 달려 있으면 바이트 배열이 UTF-8로 인코딩된 문자열로 해석되어야 한다는 뜻입니다. 내보내기 작업이 완료되면 Amazon Aurora에서 문자열 변환이 발생했는지를 알려줍니다. 내보낸 기초 데이터는 항상 소스의 데이터와 동일합니다. 그러나 UTF-8에서의 인코딩 차이로 인해 일부 문자는 Athena 같은 도구에서 읽을 때 소스와 다르게 나타날 수 있습니다.

자세한 내용은 Parquet 설명서의 Parquet 논리적 유형 정의를 참고하십시오.

참고
  • 일부 문자는 데이터베이스 테이블 열 이름에서 지원되지 않습니다. 열 이름에 다음 문자가 포함되어 있는 테이블은 내보내기를 수행하는 동안 건너뛰기가 됩니다.

    ,;{}()\n\t=
  • 데이터에 500MB에 근접하거나 이 보다 큰 값이 포함되어 있으면 내보내기가 실패합니다.

  • 데이터베이스, 스키마 또는 테이블 이름에 공백이 포함되어 있으면 부분 내보내기가 지원되지 않습니다. 그러나 전체 DB 스냅샷을 내보낼 수는 있습니다.

Parquet로 MySQL 데이터 유형 매핑

다음 표는 데이터를 변환해 Amazon S3로 내보낼 때 MySQL 데이터 유형에서 Parquet 데이터 유형으로의 매핑을 보여줍니다.

소스 데이터 유형 Parquet 프리미티브 유형 논리적 유형 주석 변환 노트
숫자 데이터 유형
BIGINT INT64
BIGINT UNSIGNED FIXED_LEN_BYTE_ARRAY(9) DECIMAL(20,0) Parquet는 서명된 유형만 지원하므로 매핑에는 BIGINT_UNSIGNED 유형을 저장하기 위해 추가 바이트(8 + 1)가 필요합니다.
BIT BYTE_ARRAY
DECIMAL INT32 DECIMAL (p,s) 소스 값이 231 미만이면 INT32로 저장됩니다.
INT64 DECIMAL (p,s) 소스 값이 231 이상이지만 263 미만인 경우 INT64로 저장됩니다.
FIXED_LEN_BYTE_ARRAY(N) DECIMAL (p,s) 소스 값이 263 이상이면 FIXED_LEN_BYTE_ARRAY(N)로 저장됩니다.
BYTE_ARRAY STRING Parquet는 38보다 큰 십진수 정밀도를 지원하지 않습니다. 십진수 값은 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.
DOUBLE DOUBLE
FLOAT DOUBLE
INT INT32
INT UNSIGNED INT64
MEDIUMINT INT32
MEDIUMINT UNSIGNED INT64
NUMERIC INT32 DECIMAL (p,s)

소스 값이 231 미만이면 INT32로 저장됩니다.

INT64 DECIMAL (p,s) 소스 값이 231 이상이지만 263 미만인 경우 INT64로 저장됩니다.
FIXED_LEN_ARRAY(N) DECIMAL (p,s) 소스 값이 263 이상이면 FIXED_LEN_BYTE_ARRAY(N)로 저장됩니다.
BYTE_ARRAY STRING Parquet는 38보다 큰 숫자 정밀도를 지원하지 않습니다. 이 숫자 값은 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.
SMALLINT INT32
SMALLINT UNSIGNED INT32
TINYINT INT32
TINYINT UNSIGNED INT32
문자열 데이터 유형
BINARY BYTE_ARRAY
BLOB BYTE_ARRAY
CHAR BYTE_ARRAY
ENUM BYTE_ARRAY STRING
LINESTRING BYTE_ARRAY
LONGBLOB BYTE_ARRAY
LONGTEXT BYTE_ARRAY STRING
MEDIUMBLOB BYTE_ARRAY
MEDIUMTEXT BYTE_ARRAY STRING
MULTILINESTRING BYTE_ARRAY
SET BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TINYBLOB BYTE_ARRAY
TINYTEXT BYTE_ARRAY STRING
VARBINARY BYTE_ARRAY
VARCHAR BYTE_ARRAY STRING
날짜 및 시간 데이터 유형
DATE BYTE_ARRAY STRING 날짜는 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.
DATETIME INT64 TIMESTAMP_MICROS
TIME BYTE_ARRAY STRING TIME 유형은 BYTE_ARRAY의 문자열로 변환되고 UTF8로 인코딩됩니다.
TIMESTAMP INT64 TIMESTAMP_MICROS
YEAR INT32
기하학적 데이터 유형
GEOMETRY BYTE_ARRAY
GEOMETRYCOLLECTION BYTE_ARRAY
MULTIPOINT BYTE_ARRAY
MULTIPOLYGON BYTE_ARRAY
POINT BYTE_ARRAY
POLYGON BYTE_ARRAY
JSON 데이터 유형
JSON BYTE_ARRAY STRING

Parquet로 PostgreSQL 데이터 유형 매핑

다음 표는 데이터를 변환해 Amazon S3로 내보낼 때 PostgreSQL 데이터 유형에서 Parquet 데이터 유형으로의 매핑을 보여줍니다.

PostgreSQL 데이터 형식 Parquet 프리미티브 유형 논리적 유형 주석 매핑 노트
숫자 데이터 유형
BIGINT INT64
BIGSERIAL INT64
DECIMAL BYTE_ARRAY STRING DECIMAL 유형은 BYTE_ARRAY 유형의 문자열로 변환되고 UTF8로 인코딩됩니다.

이 변환은 데이터 정밀도와 숫자(NaN)가 아닌 데이터 값으로 인해 복잡해지는 것을 피하기 위한 것입니다.

DOUBLE PRECISION DOUBLE
INTEGER INT32
MONEY BYTE_ARRAY STRING
REAL FLOAT
SERIAL INT32
SMALLINT INT32 INT_16
SMALLSERIAL INT32 INT_16
문자열 및 관련 데이터 유형
ARRAY BYTE_ARRAY STRING

배열은 문자열로 변환되고 BINARY(UTF8)로 인코딩됩니다.

이 변환은 데이터 정밀도와 숫자(NaN)가 아닌 데이터 값, 그리고 시간 데이터 값으로 인해 복잡해지는 것을 피하기 위한 것입니다.

BIT BYTE_ARRAY STRING
BIT VARYING BYTE_ARRAY STRING
BYTEA BINARY
CHAR BYTE_ARRAY STRING
CHAR(N) BYTE_ARRAY STRING
ENUM BYTE_ARRAY STRING
NAME BYTE_ARRAY STRING
TEXT BYTE_ARRAY STRING
TEXT SEARCH BYTE_ARRAY STRING
VARCHAR(N) BYTE_ARRAY STRING
XML BYTE_ARRAY STRING
날짜 및 시간 데이터 유형
DATE BYTE_ARRAY STRING
INTERVAL BYTE_ARRAY STRING
TIME BYTE_ARRAY STRING
TIME WITH TIME ZONE BYTE_ARRAY STRING
TIMESTAMP BYTE_ARRAY STRING
TIMESTAMP(시간대 사용) BYTE_ARRAY STRING
기하학적 데이터 유형
BOX BYTE_ARRAY STRING
CIRCLE BYTE_ARRAY STRING
LINE BYTE_ARRAY STRING
LINESEGMENT BYTE_ARRAY STRING
PATH BYTE_ARRAY STRING
POINT BYTE_ARRAY STRING
POLYGON BYTE_ARRAY STRING
JSON 데이터 유형
JSON BYTE_ARRAY STRING
JSONB BYTE_ARRAY STRING
기타 데이터 유형
BOOLEAN BOOLEAN
CIDR BYTE_ARRAY STRING 네트워크 데이터 유형
COMPOSITE BYTE_ARRAY STRING
DOMAIN BYTE_ARRAY STRING
INET BYTE_ARRAY STRING 네트워크 데이터 유형
MACADDR BYTE_ARRAY STRING
OBJECT IDENTIFIER 해당 사항 없음
PG_LSN BYTE_ARRAY STRING
RANGE BYTE_ARRAY STRING
UUID BYTE_ARRAY STRING