2012-11-15 4 views
1

로컬 MongoDB 컬렉션 A를 캡핑했으며, 클라우드 서버의 MongoDB 컬렉션 B에 복제하고 싶습니다. 이제 나는 A의 크기가 제한되어서 삭제 될 문서를 A로 유지하려고합니다.MongoDB 필터링 복제 컬렉션

 
Collection A  replicate  Collection B 
-------------- ----------> -------------- 
Capped at 50MB     Infinite size! 
local       cloud server 

MongoDB에서 가능한가요? (필터를 사용하는 CouchDB에서 가능한 것처럼)?

아니면 완전히 다른 접근 방식을 찾아야합니까?

귀하의 조언에 감사드립니다.

답변

1

capped 컬렉션의 삭제는 작업이 아니므로 oplog를 통해 복제되지 않습니다. 따라서 콜렉션을 2 차적으로 캡슐화하지 않고 콜론 콜렉션에 데이터를 추가하고 해당 작업을 복제 할 때 콜렉션이 계속 커지기 만하면됩니다. 이런 식으로 뭔가를 시도 :

  1. 더 replset 인수
  2. 를 드롭 덮인 컬렉션 집합 외부를 보조 새로운 다시 시작하는 것이 정상
  3. 정지로 클라우드 서버에 보조를 추가, 같은 이름으로 다시 일반 비 캡핑 컬렉션
  4. (선택 사항)를 수동으로 다시 가져 mongodump/mongorestore
  5. 다시 원래 복제 세트 파라미터
  6. 새로운 정상 컬렉션 w와 보조 데이터를 사용하여 아플 그냥 성장 계속

컬렉션을 삭제하거나 다른 변경 사항을 적용하려면 매번 보조 프로그램을 실행해야하지만 그렇지 않은 경우 원하는대로 동작해야합니다. 나는 이것을 명백하게하지 않았지만 실수로 일어난 것을 보았고 그 반대를해야했다.

관련 문제