명령줄을 사용하여 MySQL 데이터 복사 - AWS Data Pipeline

AWS Data Pipeline 신규 고객은 더 이상 이용할 수 없습니다. 의 기존 고객 AWS Data Pipeline 정상적으로 서비스를 계속 사용할 수 있습니다. 자세히 알아보기

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

명령줄을 사용하여 MySQL 데이터 복사

MySQL 테이블의 데이터를 Amazon S3 버킷의 파일로 복사할 파이프라인을 생성할 수 있습니다.

필수 조건

시작하기 전에 다음 단계를 완료해야 합니다.

  1. 명령줄 인터페이스(CLI)를 설치하고 구성합니다. 자세한 내용은 액세스 AWS Data Pipeline 섹션을 참조하세요.

  2. DataPipelineDefaultRoleDataPipelineDefaultResourceRole이라는 이름의 IAM 역할이 존재하는지 확인하십시오. AWS Data Pipeline 콘솔은 자동으로 이러한 역할을 생성합니다. AWS Data Pipeline 콘솔을 한 번 이상 사용하지 않았다면 수동으로 이러한 역할을 생성해야 합니다. 자세한 내용은 AWS Data Pipeline의 IAM 역할 섹션을 참조하세요.

  3. Amazon S3 버킷과 Amazon RDS 인스턴스를 설정합니다. 자세한 내용은 시작하기 전 섹션을 참조하세요.

JSON 형식으로 파이프라인 정의

이 예제 시나리오는 JSON 파이프라인 정의와 AWS Data PipelineCLI를 사용하여 MySQL 데이터베이스에 있는 테이블의 데이터(행)를 Amazon S3 버킷에 있는 CSV(쉼표로 구분된 값) 파일로 지정된 시간 간격에 복사하는 방법을 설명합니다.

전체 파이프라인 정의 JSON 파일마다 각 부분의 설명이 뒤따릅니다.

참고

JSON 형식 파일의 구문을 확인하고 .json 파일 확장자로 파일 이름을 지정할 수 있는 텍스트 편집기를 사용할 것을 권장합니다.

{ "objects": [ { "id": "ScheduleId113", "startDateTime": "2013-08-26T00:00:00", "name": "My Copy Schedule", "type": "Schedule", "period": "1 Days" }, { "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" }, { "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://example-bucket/rds-output/output.csv", "name": "My S3 Data", "type": "S3DataNode" }, { "id": "MySqlDataNodeId115", "username": "my-username", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password", "table": "table-name", "connectionString": "jdbc:mysql://your-sql-instance-name.id.region-name.rds.amazonaws.com:3306/database-name", "selectQuery": "select * from #{table}", "type": "SqlDataNode" }, { "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "This is a success message.", "id": "ActionId1", "subject": "RDS to S3 copy succeeded!", "name": "My Success Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic", "type": "SnsAlarm" }, { "id": "Default", "scheduleType": "timeseries", "failureAndRerunMode": "CASCADE", "name": "Default", "role": "DataPipelineDefaultRole", "resourceRole": "DataPipelineDefaultResourceRole" }, { "message": "There was a problem executing #{node.name} at for period #{node.@scheduledStartTime} to #{node.@scheduledEndTime}", "id": "SnsAlarmId117", "subject": "RDS to S3 copy failed", "name": "My Failure Alarm", "role": "DataPipelineDefaultRole", "topicArn": "arn:aws:sns:us-east-1:123456789012:example-topic", "type": "SnsAlarm" } ] }

MySQL 데이터 노드

입력 MySqlDataNode 파이프라인 구성요소는 입력 데이터의 위치를 정의하며, 이 경우 위치는 Amazon RDS 인스턴스입니다. 입력 MySqlDataNode 구성요소는 다음 필드로 정의됩니다.

{ "id": "MySqlDataNodeId115", "username": "my-username", "schedule": { "ref": "ScheduleId113" }, "name": "My RDS Data", "*password": "my-password", "table": "table-name", "connectionString": "jdbc:mysql://your-sql-instance-name.id.region-name.rds.amazonaws.com:3306/database-name", "selectQuery": "select * from #{table}", "type": "SqlDataNode" },
Id

참조용 라벨인 사용자 정의 이름입니다.

Username

데이터베이스 테이블에서 데이터를 검색할 권한이 있는 데이터베이스 계정의 사용자 이름입니다. my-username을 사용자 이름으로 바꿉니다.

Schedule

JSON 파일의 이전 라인에서 생성한 일정 구성요소에 대한 참조입니다.

이름

참조용 라벨인 사용자 정의 이름입니다.

*비밀번호

AWS Data Pipeline이 암호 값을 암호화해야 한다는 것을 나타내는 별표 접두사가 있는 데이터베이스 계정의 암호입니다. my-password를 사용자 계정의 정확한 암호로 바꿉니다. 암호 필드 앞에 별표 특수 문자가 있습니다. 자세한 내용은 특수 문자 섹션을 참조하세요.

복사할 데이터가 있는 데이터베이스 테이블의 이름입니다. table-name을 데이터베이스 테이블 이름으로 바꿉니다.

connectionString

데이터베이스에 연결할 CopyActivity 객체의 JDBC 연결 문자열입니다.

selectQuery

데이터베이스 테이블에서 복사할 데이터를 지정하는 유효 SQL SELECT 쿼리입니다. #{table}은 JSON 파일에서 앞 줄의 "table" 변수로 제공되는 테이블 이름을 다시 사용하는 표현식입니다.

유형

SqlDataNode 유형은 이 예제에서는 MySQL을 사용하는 Amazon RDS 인스턴스입니다.

참고

MySqlDataNode 유형은 사용되지 않습니다. MySqlDataNode는 계속 사용할 수 있지만 SqlDataNode 사용을 권장합니다.

Amazon S3 데이터 노드

그 다음에 S3Output 파이프라인 구성요소는 출력 파일의 위치를 정의하며, 이 경우는 Amazon S3 버킷 위치에 있는 CSV 파일입니다. 출력 S3DataNode 구성요소는 다음 필드로 정의됩니다.

{ "id": "S3DataNodeId114", "schedule": { "ref": "ScheduleId113" }, "filePath": "s3://example-bucket/rds-output/output.csv", "name": "My S3 Data", "type": "S3DataNode" },
Id

참조용 레이블인 사용자 정의 ID입니다.

Schedule

JSON 파일의 이전 라인에서 생성한 일정 구성요소에 대한 참조입니다.

filePath

이 예제에서 CSV 출력 파일인 데이터 노드와 연결된 데이터로 가는 경로입니다.

이름

참조용 라벨인 사용자 정의 이름입니다.

유형

파이프라인 객체 유형은 Amazon S3 버킷에서 데이터가 상주하는 위치와 일치해야 하는 S3DataNode입니다.

리소스

이것은 복사 작업을 수행할 전산 리소스의 정의입니다. 이 예제에서는 AWS Data Pipeline이 복사 작업을 수행하고 작업 완료 후 리소스를 종료할 EC2 인스턴스를 자동으로 생성해야 합니다. 여기에 정의된 필드는 작업할 EC2 인스턴스의 생성과 기능을 제어합니다. EC2Resource는 다음 필드로 정의됩니다.

{ "id": "Ec2ResourceId116", "schedule": { "ref": "ScheduleId113" }, "name": "My EC2 Resource", "role": "DataPipelineDefaultRole", "type": "Ec2Resource", "resourceRole": "DataPipelineDefaultResourceRole" },
Id

참조용 레이블인 사용자 정의 ID입니다.

Schedule

이 전산 리소스를 생성할 일정입니다.

이름

참조용 라벨인 사용자 정의 이름입니다.

역할

리소스에 액세스할 계정의 IAM 역할입니다(예: Amazon S3 버킷에 액세스하여 데이터 검색).

유형

작업을 수행할 전산 리소스 유형입니다. 이 경우는 EC2 인스턴스입니다. 다른 리소스 유형도 있습니다(예: EmrCluster 유형).

resourceRole

리소스를 생성할 계정의 IAM 역할입니다(예: 사용자 대신 EC2 인스턴스 생성 및 구성). Role과 ResourceRole은 동일한 역할일 수 있지만 보안 구성에서 각각 더 세분화됩니다.

활동

수행할 작업을 나타내는 활동의 정의인 JSON 파일에 있는 마지막 선택입니다. 이 경우. CopyActivity 구성요소를 사용하여 Amazon S3 버킷에 있는 파일의 데이터를 다른 파일로 복사합니다. CopyActivity 구성요소는 다음 필드로 정의됩니다.

{ "id": "CopyActivityId112", "input": { "ref": "MySqlDataNodeId115" }, "schedule": { "ref": "ScheduleId113" }, "name": "My Copy", "runsOn": { "ref": "Ec2ResourceId116" }, "onSuccess": { "ref": "ActionId1" }, "onFail": { "ref": "SnsAlarmId117" }, "output": { "ref": "S3DataNodeId114" }, "type": "CopyActivity" },
Id

참조용 레이블인 사용자 정의 ID입니다.

입력

복사할 MySQL 데이터의 위치입니다.

Schedule

이 활동을 실행할 일정입니다.

이름

참조용 라벨인 사용자 정의 이름입니다.

runsOn

이 활동이 정의하는 작업을 수행할 전산 리소스입니다. 이 예제에서는 이전에 정의한 EC2 인스턴스의 참조를 제공합니다. runsOn 필드를 사용하면 AWS Data Pipeline이 EC2 인스턴스를 생성합니다. [runsOn] 필드는 AWS 인프라에 리소스가 있음을 나타내며, workerGroup 값은 자체 온프레미스 리소스를 사용하여 작업을 수행해야 한다는 것을 나타냅니다.

onSuccess

활동이 성공적으로 완료될 경우에 전송할 SnsAlarm

onFail

활동이 실패할 경우에 전송할 SnsAlarm

출력

CSV 출력 파일의 Amazon S3 위치

유형

실행할 활동의 유형입니다.

파이프라인 정의 업로드 및 활성화

파이프라인 정의를 업로드하고 파이프라인을 활성화해야 합니다. 다음 예제 명령에서 pipeline_name을 파이프라인의 레이블로 대체하고, pipeline_file을 파이프라인 정의 .json 파일의 정규화된 경로로 대체하십시오.

AWS CLI

파이프라인 정의를 생성하고 파이프라인을 활성화하려면 다음 create-pipeline 명령을 사용하십시오. 대부분의 CLI 명령에서 이 값을 사용하므로 파이프라인 ID는를 기록하십시오.

aws datapipeline create-pipeline --name pipeline_name --unique-id token { "pipelineId": "df-00627471SOVYZEXAMPLE" }

파이프라인 정의를 업로드하려면 다음 put-pipeline-definition 명령을 사용하십시오.

aws datapipeline put-pipeline-definition --pipeline-id df-00627471SOVYZEXAMPLE --pipeline-definition file://MyEmrPipelineDefinition.json

파이프라인 유효성 검사에 성공하면 validationErrors 필드가 비게 됩니다. 경고가 있으면 검토해야 합니다.

파이프라인을 활성화하려면 다음 activate-pipeline 명령을 사용하십시오.

aws datapipeline activate-pipeline --pipeline-id df-00627471SOVYZEXAMPLE

다음 list-pipelines 명령을 사용하면 파이프라인 목록에 파이프라인이 표시되는지 확인할 수 있습니다.

aws datapipeline list-pipelines