복붙노트

[MONGODB] 어떻게 데이터의 손실없이 MongoDB에 덮인 모음의 크기를 조정할 수 있습니까?

MONGODB

어떻게 데이터의 손실없이 MongoDB에 덮인 모음의 크기를 조정할 수 있습니까?

어떻게 데이터의 손실없이 MongoDB에 덮인 모음의 크기를 조정할 수 있습니까?

명령은 거기에, 아니면 누군가가 스크립트를 제공 할 수있다?

해결법

  1. ==============================

    1.당신은 기본적으로 새로운 덮인 컬렉션을 만들 필요가 있고 그것에 문서를 복사합니다. 이것은 자바 스크립트 (쉘)에 매우 쉽게 할, 또는 선택의 언어를 할 수 있습니다.

    당신은 기본적으로 새로운 덮인 컬렉션을 만들 필요가 있고 그것에 문서를 복사합니다. 이것은 자바 스크립트 (쉘)에 매우 쉽게 할, 또는 선택의 언어를 할 수 있습니다.

    db.createCollection("new", {capped:true, size:1073741824}); /* size in bytes */
    db.old.find().forEach(function (d) {db.new.insert(d)});
    db.old.renameCollection("bak", true);
    db.new.renameCollection("old", true);
    

    참고 : 그냥 확실히 아무도 당신이 전환 할 때 기존의 수집을 갱신 / 삽입하지되어 있는지 확인합니다. 당신이 db.eval에 그 코드를 실행하면 실행되는 동안 ( "....")는 서버를 잠급니다.

    기존 컬렉션의 크기를 증가시키는 기능 요청이 있습니다 : http://jira.mongodb.org/browse/SERVER-1864

  2. ==============================

    2.이것은 내가 덮인 컬렉션의 크기를 조정 할 것입니다 :

    이것은 내가 덮인 컬렉션의 크기를 조정 할 것입니다 :

    db.runCommand({"convertToCapped": "log", size: 1000000000});
    

    나는 이미 출장 컬렉션 "로그"라는있다. 그래서 난 그냥 새 크기를 지정, 다시에서 "convertToCapped"를 실행합니다. 나는 컬렉션의 크기를 줄이는 그것을 시도하지했습니다. 즉, 스콧 에르난데스의 버전을 사용할 필요가 거라고 뭔가 할 수있다. 하지만이 모든 데이터 또는 인덱스를 손실없이 덮인 컬렉션의 크기를 증가 작동합니다.

    편집 : @JMichal가 올바른지. 데이터는 보존되지만 인덱스는하지하고 다시 작성해야합니다.

  3. from https://stackoverflow.com/questions/4225535/how-can-i-resize-a-mongodb-capped-collection-without-losing-data by cc-by-sa and MIT license