2017-02-07 8 views
0

내가 다음 "삭제" "덤프"대용량 데이터 MongoDB를 함께 문제가MongoDB를, 덤프와 함께 붙어 삭제 대용량 데이터

dB 이미 인덱스 필드

전체 데이터 ~ 50m 기록을 조회 할 필요가

몽고의 t2.medium

- - SIDEK
:

필터링 된 데이터는 5m에게

3 서버를 덤프 ~ 삭제해야 IQ t2.small

- 다른 서버 t2.small (멀티)

나는 트래픽이 적게시 cronjob를 실행합니다. 하지만 작업을 완료하는 데 너무 많은 시간이 필요합니다 ~ 6 ~ 8 시간 그리고 다른 서버가 MONGODB를 연결할 수없는 경우 다른 서버가 상태 저하로 변경됩니다 (도커가있는 elasticbeantalk)

서버가 다운되면 I MONGODB mongostat : cpu ~ 95 ~ 96 %를 확인하십시오. 다른 서버 로그는 "db에 연결할 수 없습니다"입니다.

, 누군가가 나를이

답변

1

는 아마도 다른 전략을 시도해야 밖으로 작업 할 수 있도록하여 MongoDB의 경험을하시기 바랍니다. 몇 단계로 시도해보십시오. 또한이 작업을 많은 작은 작업으로 분할해야합니다. 낮은 우선 순위의 백그라운드에서이 작업을 실행할 수 있습니다.

1 단계 :
1) 임시 DB (컬렉션을 만들) 덤프
2) 작은 부분에 원래의 컬렉션에서 필요한 데이터를 선택하기위한 데이터를 저장하기위한 당신의 장소에 나는 다음 단계를 만들 수 있습니다. 얼마나 큰? 서버에 따라 다릅니다. 예를 들어 시간당 5000 개의 항목 (한도, 오프셋).
3) 임시 데이터베이스에 데이터 저장

이제 임시 db를 덤프 할 수 있습니다. 작동하지 않으면 partitioning을 사용해보십시오.

+0

나는 귀하의 방법이 실제로 적용하기가 어렵다고 생각합니다. 데이터가 5m 이상의 레코드이기 때문입니다. 가능한 한 빨리 쿼리 필드를 인덱싱했는데 정렬 및 계산은 mongodb에서 많은 시간이 걸리고 데이터를 스플릿으로 가져 오면 다시 가져 오기가 불편합니다. –