예를 들어, MySQL과 Redshift에 사이의 중간 저장을 추가하다 AWS Data Pipeline은 바로 사용할 수있는 템플릿, 재시도 메커니즘 및 내장 된 로깅 및 모니터링 기능을 갖추고 있기 때문에이를위한 것입니다. 그것은 다음과 같을 수 있습니다 :
MySQL을 -> S3 -> Redshift에 (준비) -> SQL -> Redshift에 (생산)
MySQL을 -> S3
이 데이터 파이프 라인은 "Incremental copy of RDS MySQL to S3"템플릿으로 시작됩니다.
MySQL의 증분 데이터를 저장하는 S3 경로를 매개 변수화 할 수 있으므로 S3 접두어를 사용하여 시간 경과에 따라 해당 증분을 관리하는 것이 더 쉽습니다. S3의 데이터를 다시 사용하지 않을 경우 S3 Object Lifecycle Management를 사용하여 해당 객체를 정기적으로 삭제할 수 있습니다.
그러나 S3의 데이터를 사용하면 AWS Athena로 쿼리하거나 QuickSight를 사용하여 시각화하거나 임시 액세스 또는 빙하 스토리지 클래스를 사용하여 저장 비용을 줄이거 나 추후 사용을 위해 보관할 수 있습니다.
S3 -> Redshift에 사용 사례에 대한 (준비) 물론
는, 그것은 Redshift에 가야한다, 그래서 AWS Redshift에 로더 람다하는 것이 좋습니다. 설정은 조금 복잡하지만 성공적으로 완료되면 0 번 행정에 매우 가깝습니다. this
AWS Redshift Loader를 사용하면 데이터가 정의 된 S3 접두어에 도착할 때마다 Redshift 클러스터 (하나 이상)에로드되고 SNS에서 사용자 또는 일부 로깅 시스템에 알리도록 구성 할 수 있습니다. 로드하기 전에 x 파일을 기다리거나 y 분마다로드하는 등의 다른 옵션이 있습니다.
또한 S3의 데이터 중 일부만을 테스트 또는 개발 환경으로 Redshift로로드해야 할 수도 있습니다. AWS Redshift Loader를 사용하면 특정 S3 프리픽스 만 정의 할 수 있습니다./data/2017/11을 사용하여 Redshift에로드하십시오.
Redshift Loader를 사용하면 데이터를 비동기 적으로로드하므로 사소한 작업을 더 어렵게 만들고 프로세스를 제어하기가 더 쉽습니다. 이것은 귀하의 사건에 대한 문제 일 수 있습니다.
Redshift에 대한 데이터로드가 실패하면 Redshfit Loader 명령 줄 도구를 사용하여 특정 개체를 Redshfit으로 다시로드합니다.
Redshift에 (준비) -> Redshift에 (생산) Redshift에 당신이 Redshift에 테이블에 중복 행을 삽입 방지하는 메커니즘을 가지고해야 의미, 예를 고유 키에 대한 참조 무결성을 적용하지 않는
주 . 중복에 대해 걱정하지 않는다면 이는 중요하지 않습니다. 데이터가 이미 Redshift에 있습니다.
왜 중요한가요? 소스, 즉 MySQL에서 검색된 데이터가 이미 Redshift에있는 경우 취해야하는 조치를 알아야합니다. 그것을 덮어 쓰거나 그냥 무시하십시오.
Redshift 자체에서 수행하면 고유 한 열을 사용하여 새 행과 기존 행을 비교하고 삭제 및 삽입 또는 업데이트 만하는 것이 쉽습니다. Redshfit 외부에서 작업하는 것은 아마도 이미 Redshift에서 사용할 수있는 고유 한 키를 추적하여 비교하는 것입니다. 어디에? 언제 업데이트할까요? 방법? 어쩌면 당신은 이미 그것을위한 해결책을 가지고있을 것입니다.
이전 단계에서 Redshift (준비)에 데이터를 삽입합니다. 프로덕션 테이블로 이동할 때 데이터 무결성을 보장하기 위해 병합을 수행해야합니다. AWS에서는 following 기술을 사용하여 Redsift에서 데이터를 병합하는 것이 좋습니다.
그렇다면 SQL을 사용하여 변환을 수행하면 관리 할 구성 요소가 줄어들지 않으십니까?
SQL을 사용하여 변환 작업을 정의하고 해당 SQL 스크립트를 S3에 저장하고 데이터 병합 스크립트와 함께 Redsshift 클러스터에서 실행하기 위해 SQLActivity에서 참조 할 수 있습니다.
AWS Kinesis는 S3 기능에 대한 변환 및 저장을 고려하여 적합 할 수도 있습니다. 위에서 제기 한 요점 중 일부는 Kinesis 사용에도 적용됩니다.
당신은 redshift에 mysql 테이블의 정확한 사본을 만들고 redshift 안에 etl을 실행하는 것을 고려 했습니까? DMS를 사용하여 mysql-> redshift를 동기화 할 수 있습니다. DMS는 binlog를 사용하므로 효율적이고 최신 상태가 될 수 있습니다. –