문서 메뉴
문서 홈
/
MongoDB 매뉴얼

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는 자체 관리 배포서버를 위한 미리 쓰기 저널링을 지원하여 스토리지 엔진의 빠른 충돌 복구와 내구성을 용이하게 합니다. 저널링을 활성화하면 mongod 충돌 후 컬렉션 을 복구할 필요 없이 를 빠르게 다시 시작할 수 있습니다. 집계 파이프라인을 사용하면 애그리게이션을 수행할 수 있습니다.

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

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

mapReduce 명령은 기존 collection 을 점진적으로 업데이트할 수 있는 새로운 옵션을 지원합니다. 이전에는 맵리듀스 job을 임시 collection이나 새 데이터로 덮어쓰는 명명된 영구 collection으로 출력할 수 있었습니다.

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

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

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

  • 기존 출력 collection을 맵리듀스 job의 새 결과로 바꿀 수 있습니다(이전 릴리스에서 영구 출력 collection을 설정한 것과 동일).

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

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

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

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

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

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

  • 버그 수정.

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

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

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

  • mongostat --discover 옵션

  • 청크 분할 기능이 향상되었습니다.

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

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

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

  • 범위 쿼리에 대한 쿼리 옵티마이저 개선.

  • 창 서비스 개선.

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

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

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

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

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

  • shell에서 자동 완성.

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

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

다음

MongoDB란 무엇입니까?