2013-12-19 2 views
0

MongoDB를 사용하고 있습니다. 나는 7M 레코드와 가중 텍스트 검색 인덱스가있는 테이블을 가지고 있습니다.MongoRestore 색인 생성 단계 100 % 자원을 사용하고 데이터베이스를 잠급니다.

MongoRestore를 수행 할 때 복원 색인 작성 단계에서 데이터베이스의 자원을 100 % 사용합니다. MongoDB는 끝날 때까지 아무 반응이 없습니다. 내 DB는 들어오는 연결에 잠겨 있습니다. 실제로 인덱스 생성의 진행 상황을 내 출력에보고하지 않으며 mongodb 클라이언트는 요청 시간 초과 오류를 받기 시작합니다. 나는 여전히 색인 생성의 진행 상황을 확인하기 위해 서버 측 mongodb 로그에 미루어 볼 수있다.

이 프로세스가 진행되는 동안 데이터베이스가 응답해야합니다. 그것은 조금 더 작은 나의 모든 다른 테이블을 위해 잘 작동합니다. 그 다음으로 큰 테이블은 훌륭하게 작동하며 여전히 가중치가 적용된 텍스트 검색 인덱스를 사용합니다. 약 3M 레코드입니다.

내가 무엇을해야합니까?! 감사.

+0

대용량 컬렉션을 실제 실행중인 데이터베이스로 복원해야합니까? 당신이하고자하는 것을 처리하기위한 자원이 상자에 단순히 부족할 수도 있습니다. 색인을 작성하지 않고 mongorestore를 수행 한 다음 배경 옵션 (배경 옵션 포함)으로 색인 빌드를 개별적으로 시작할 수 있습니다. –

답변

0

시도한 적이 없지만 { background: true }으로 만든 인덱스는 mongodump에 의해이 속성으로 버려진 것으로 보입니다. 이 속성은 인덱스 생성 단계에서 mongorestore으로 전달됩니다.

배경 옵션으로 전략 색인을 다시 만든 다음 데이터베이스를 덤프 할 수도 있습니다. 그런 다음 복원 프로세스를 통해 서버에 부담을 덜고 더 빨리 완료해야합니다. MondoDB가 백그라운드 인덱스를 다시 빌드하는 동안 읽기 및 쓰기 작업이 허용되어야합니다.

백그라운드 인덱스 빌드를 완료하는 데 시간이 오래 걸리며 인덱스가 커집니다. 또한 백그라운드 인덱스 생성 작업이 백그라운드에서 전경되기 때문에 보조 복제 세트 멤버와 함께 작동하지 않습니다.

http://docs.mongodb.org/manual/tutorial/build-indexes-in-the-background/ http://docs.mongodb.org/manual/tutorial/build-indexes-on-replica-sets/

HTH.