MongoDB.local SF, Jan 15: See the speaker lineup & ship your AI vision faster. Use WEB50 to save 50%
Find out more >
Docs Menu
Docs Home
/
데이터베이스 매뉴얼

MongoDB 1.8 릴리스 노트

MongoDB 1.8 은 표준 증분 프로덕션 릴리스이며 다음을 제외하고 MongoDB 1.6 을(를) 바로 대체할 수 있습니다.

업그레이드하기 전에 모든 출시하다 노트를 자세히 읽고 변경 사항이 배포서버 에 영향을 주지 않는지 확인합니다.

  1. v1.8.x 다운로드 MongoDB 다운로드 페이지에서바이너리를 다운로드합니다.

  2. mongod 인스턴스를 종료합니다.

  3. 기존 바이너리를 1.8.x mongod 바이너리.

  4. MongoDB를 다시 시작합니다.

1.8.x 세컨더리 는 1.6.x에서 복제 할 수 있습니다 . 프라이머리.

1.6.x 세컨더리는 1.8.x에서 복제 할 수 없습니다 . 프라이머리.

따라서 복제본 세트 를 업그레이드 하려면 먼저 모든 세컨더리를 교체한 다음 프라이머리 를 교체해야 합니다.

예를 예시 , 프라이머리, 중재자 , 여러 개의 세컨더리가 있는 복제본 세트 가 있다고 가정해 보겠습니다. 설정하다 를 업그레이드 하려면 다음을 수행합니다.

  1. 중재자 의 경우:

    1. 중재자를 종료합니다.

    2. 1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.

  2. 새 프라이머리가 선택되지 않도록 구성(선택 사항)을 변경합니다.

    설정하다 의 멤버를 종료하기 시작하면 새로운 프라이머리 가 선출될 수 있습니다. 이를 방지하려면 업그레이드하기 전에 모든 세컨더리에 우선 순위 를 0 부여한 다음 나중에 다시 변경할 수 있습니다. 이렇게 하려면 다음을 수행합니다.

    1. 현재 구성을 기록합니다. rs.config() 를 실행하고 결과를 텍스트 파일 에 붙여넣습니다.

    2. 모든 세컨더리의 우선 순위 가 0 가 되도록 구성을 업데이트합니다. 예를 예시 다음과 같습니다.

      config = rs.conf()
      {
      "_id" : "foo",
      "version" : 3,
      "members" : [
      {
      "_id" : 0,
      "host" : "ubuntu:27017"
      },
      {
      "_id" : 1,
      "host" : "ubuntu:27018"
      },
      {
      "_id" : 2,
      "host" : "ubuntu:27019",
      "arbiterOnly" : true
      }
      {
      "_id" : 3,
      "host" : "ubuntu:27020"
      },
      {
      "_id" : 4,
      "host" : "ubuntu:27021"
      },
      ]
      }
      config.version++
      3
      rs.isMaster()
      {
      "setName" : "foo",
      "ismaster" : false,
      "secondary" : true,
      "hosts" : [
      "ubuntu:27017",
      "ubuntu:27018"
      ],
      "arbiters" : [
      "ubuntu:27019"
      ],
      "primary" : "ubuntu:27018",
      "ok" : 1
      }
      // for each secondary
      config.members[0].priority = 0
      config.members[3].priority = 0
      config.members[4].priority = 0
      rs.reconfig(config)
  3. 각 세컨더리 의 경우:

    1. 세컨더리를 종료합니다.

    2. 1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.

  4. 구성을 변경한 경우 원래 상태 로 다시 변경합니다.

    config = rs.conf()
    config.version++
    config.members[0].priority = 1
    config.members[3].priority = 1
    config.members[4].priority = 1
    rs.reconfig(config)
  5. 프라이머리 (최종 1.6 서버)를 종료한 다음 1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.

  1. 밸런서 를 끕니다.

    mongo <a_mongos_hostname>
    use config
    db.settings.update({_id:"balancer"},{$set : {stopped:true}}, true)
  2. 샤드 대해 다음을 수행합니다.

  3. mongos 대해 다음을 수행합니다.

    1. mongos 프로세스를 종료합니다.

    2. 1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.

  4. 각 config 서버에 대해 다음을 수행합니다.

    1. config 서버 프로세스 를 종료합니다.

    2. 1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.

  5. 밸런서를 켭니다:

    use config
    db.settings.update({_id:"balancer"},{$set : {stopped:false}})

어떤 이유로든 다시 1.6 로 이동해야 하는 경우 위의 단계를 역순으로 따르세요. 1.8 에서 실행하는 동안 4MB보다 큰 문서를 삽입하지 않도록 주의하세요(최대 크기가 16MB로 증가된 경우). 있는 경우 서버가 해당 문서를 읽으려고 할 때 오류가 발생합니다.

1.8 사용 후 1.6 로 돌아가기 저널링 은 데이터 파일 형식을 변경하지 않으므로 정상적으로 작동합니다. 저널링을 활성화한 상태에서 1.8.x를 실행 중이며 1.6 으로 다시 전환하기로 결정했다고 가정해 보겠습니다. 두 가지 시나리오가 있습니다.

  • 1.8.x로 완전히 종료하면, 1.6 mongod 바이너리로 다시 시작하면 됩니다.

  • 1.8.x인 경우 비정상적으로 종료된 경우, 1.8.x를 다시 시작하고 저널 파일을 실행하여 충돌 시 존재했을 수 있는 손상(불완전한 쓰기)을 수정합니다. 그런 다음 1.8.x를 종료합니다. 삭제하고 1.6 mongod 바이너리로 다시 시작합니다.

MongoDB 이제 storage engine 는 에서 빠른 충돌 복구와 내구성을 용이하게 하기 위해 미리 쓰기 저널링 을 지원합니다. 저널링을 활성화하면 충돌 후 컬렉션 을 복구할 필요 없이 mongod 를 빠르게 다시 시작할 있습니다. 집계 파이프라인을 사용하면 애그리게이션을 수행할 수 있습니다.

희소 인덱스 는 인덱스에 지정된 필드가 포함된 문서만 포함하는 인덱스 입니다. 필드 가 누락된 문서는 인덱스 에 전혀 나타나지 않습니다. 이렇게 하면 컬렉션 내에 문서의 하위 집합만 포함된 필드의 인덱스에 대한 인덱스 크기를 크게 줄일 수 있습니다 .

포함된 인덱스 를 사용하면 쿼리가 인덱스에 포함된 필드만 선택할 때 MongoDB가 인덱스에서 쿼리에 완전히 응답할 수 있습니다.

mapReduce 명령은 기존 컬렉션 을 점진적으로 업데이트 활성화 있는 새로운 옵션을 지원합니다. 이전에는 맵리듀스 작업 이 임시 컬렉션 또는 명명된 영구 컬렉션 으로 출력될 수 있었으며, 이 컬렉션은 새 데이터로 덮어쓰였습니다.

이제 MapReduce 작업의 출력에 대한 몇 가지 옵션이 있습니다.

  • 맵리듀스 출력을 기존 컬렉션 에 병합할 수 있습니다. 출력 컬렉션 에 기존 키가 이미 있는 경우 Reduce 단계의 출력은 기존 키를 대체합니다. 다른 키는 컬렉션 에 남아 있습니다.

  • 이제 기존 컬렉션 의 내용으로 출력을 다시 줄일 수 있습니다. 축소 단계의 각 키 출력은 출력 컬렉션 의 기존 문서 와 함께 축소됩니다.

  • 기존 출력 컬렉션 을 맵리듀스 작업 의 새 결과로 바꿀 수 있습니다(이전 릴리스에서 영구 출력 컬렉션 을 설정하는 것과 동일).

  • 작업 결과를 유지하지 않고도 MapReduce를 인라인으로 계산하고 결과를 호출자에게 반환할 수 있습니다. 결과가 8MB로 제한된다는 점을 제외하면 이전 릴리스에서 생성된 임시 컬렉션과 유사합니다.

자세한 내용은 mapReduce 문서의 out 필드 옵션을 참조하세요.

  • 더 큰 청크를 이동할 때 샤딩 마이그레이션 수정.

  • 백그라운드 인덱싱을 통한 내구성 수정.

  • 많은 수신 연결에서 발생하는 mongos 동시성 문제를 수정했습니다.

  • 1.7.x의 모든 변경 사항 시리즈.

  • 버그 수정.

  • 초기 커버 인덱스 지원.

  • Distinct는 가능한 경우 인덱스의 데이터를 사용할 수 있습니다.

  • mapReduce 결과를 기존 컬렉션 에 병합하거나 축소할 수 있습니다.

  • mongod 는 네트워크 사용량을 추적하고 mongostat 을 표시합니다. mongostat를 참조하세요.

  • 샤딩 안정성이 개선되었습니다.

  • $rename 연산자를 사용하면 문서의 필드 이름을 바꿀 수 있습니다.

  • db.eval() 차단하지 않습니다.

  • 샤딩 이 있는 지리적 쿼리.

  • mongostat --discover 옵션

  • 청크 분할 개선.

  • 복제본은 nat 뒤에 있는 서버에 대한 네트워크 개선 사항을 설정합니다.

  • 많은 샤딩 성능이 향상되었습니다.

  • 포함된 배열의 기본 요소에 대한 $elemMatch 지원 이 향상되었습니다.

  • 범위 쿼리에 대한 쿼리 옵티마이저가 개선되었습니다.

  • 창 서비스 개선.

  • 복제본 설정하다 설정 이 개선되었습니다.

  • $pull 배열의 기본 요소에서 작동합니다.

  • 과도한 삽입 로드에 대한 샤딩 성능이 개선되었습니다.

  • 복제본 세트에 대한 슬레이브 지연 지원 .

  • local.system.replset.settings.getLastErrorDefaults 복제본 세트의 경우.

  • shell 에서 자동 완성.

  • 지리적 검색 을 위한 구형 거리입니다.

  • 1.6.1 및 1.6.2 의 모든 수정 사항.

다음

MongoDB란 무엇입니까?

이 페이지의 내용