AWS DMS 없이 실시간으로 MongoDB 데이터를 S3에 동기화

Dec 22 2022
Redshift 또는 기타 서비스에서 사용하기 위해 AWS DMS를 사용하여 MongoDB 데이터를 S3에 동기화했습니다. 그러나 현재로서는 MongoDB 버전 4까지만 지원합니다.

Redshift 또는 기타 서비스에서 사용하기 위해 AWS DMS를 사용하여 MongoDB 데이터를 S3에 동기화했습니다. 그러나 현재로서는 MongoDB 버전 4.2까지만 지원하며 최신 버전에 대한 지원은 당분간 제공되지 않을 수 있습니다.

MongoDB의 최신 주요 릴리스는 6.0이며 놀라운 새 기능을 활용하기 위해 이 새 버전으로 업그레이드하고 싶지만 현재 DMS를 통해 실행 중인 데이터 파이프라인이 걱정됩니다.

괜찮아요.

Atlas Developer Data Platform은 이를 위해 필요한 모든 요소를 ​​제공합니다. 그리고 이 기사에서는 이러한 재료를 혼합하는 올바른 레시피를 살펴볼 것입니다.

재료:

  • MongoDB 아틀라스 클러스터
  • 스트림 변경
  • ADF(아틀라스 데이터 연합)
  • 예약된 트리거(Atlas App Services)
  • Atlas 관리 API / Atlas CLI
  • MongoDB Change Streams는 소스 클러스터에서 변경 사항을 선택하는 데 사용됩니다.
  • 이러한 변경 사항은 다른 Atlas 클러스터에서 준비됩니다.
  • Atlas Data Federation을 사용하여 이러한 변경 사항을 S3 버킷에 대량으로 읽고 쓸 수 있습니다.
  • 새 백업 스냅샷이 생성되고 Atlas Admin API / Atlas CLI를 사용하여 S3 버킷에 복사됩니다.
  • 그림: Atlas 클러스터에서 S3 버킷으로의 스냅샷 + CDC
  1. BizProd라는 샘플 프로덕션 환경을 위한 전용 Atlas 클러스터 와 이 환경에서 캡처된 변경 사항을 유지하기 위한 CSPersistentStore라는 또 다른 작은 Atlas 클러스터 를 만듭니다.
  2. 아틀라스 클러스터

전자는 소스 클러스터에서 캡처된 변경 사항을 유지하고 후자는 이러한 변경 사항이 S3 버킷에 게시된 마일스톤을 기록합니다.

컬렉션: 변경 흐름 및 이정표

3. 클러스터의 변경 사항을 감시하고 영구 저장소에 기록하는 Change Streams 앱을 Python으로 생성합니다.

암호:https://github.com/Ankur10gen/cdccapture/blob/main/main.py

4. 데이터 소스 로 persist.changestreams 를 사용하여 ADF 끝점을 만듭니다 . 또한 S3 버킷을 데이터 소스로 추가하십시오 .

Atlas 데이터 연합 데이터 소스

4. ADF Atlas 소스 컬렉션에서 이벤트를 선택하고 ADF S3 버킷으로 푸시하는 pickAndDeliver 함수를 호출 하는 예약된 트리거를 만듭니다 .

암호:https://github.com/Ankur10gen/cdccapture/blob/main/AtlasAppService/functions/pickAndDeliver.js

5. 소스 BizProd 클러스터 의 백업 스냅샷을 생성 하고 S3 버킷으로 내보냅니다.

암호:https://github.com/Ankur10gen/cdccapture/blob/main/CreateExportSnapshot/main.py

S3의 레이아웃:

GitHub 저장소: https://github.com/Ankur10gen/cdccapture

이 경우 스냅샷은 json.gz 형식이고 변경 사항은 Parquet 형식입니다. 필요한 경우 ADF를 다시 사용하여 json.gz에서 Parquet으로 스냅샷을 처리할 수 있습니다.

TimeSeries 컬렉션은 아직 변경 스트림을 지원하지 않으므로 이 워크플로를 통해 복사할 수 없습니다. 그러나 항상 시간 필드가 있기 때문에 먼저 중간 위치에 변경 사항을 기록하지 않고 예약된 트리거를 사용하여 소스 클러스터에서 S3 버킷으로 직접 복사할 수 있습니다.

이 기사가 프로세스에서 구성 요소와 배열을 이해하는 데 도움이 되었기를 바랍니다. 질문이 있으면 의견을 남겨주세요.