업그레이드 중
MongoDB 1.8 은 표준 증분 프로덕션 릴리스이며 다음을 제외하고 MongoDB 1.6 을(를) 바로 대체할 수 있습니다.
mapReduce명령이 1.8 에서 변경되어 이전 릴리스와 호환되지 않습니다.mapReduce는 더 이상 임시 컬렉션을 생성하지 않습니다(따라서keepTemp가 제거되었습니다). 이제 항상out값을 제공해야 합니다.mapReduce문서에서out필드 옵션을 참조하세요. MapReduce를 사용하는 경우 최신 버전의 클라이언트 드라이버가 필요할 수도 있습니다.
준비
업그레이드하기 전에 모든 출시하다 노트를 자세히 읽고 변경 사항이 배포서버 에 영향을 주지 않는지 확인합니다.
독립형 업그레이드 mongod
v1.8.x 다운로드 MongoDB 다운로드 페이지에서바이너리를 다운로드합니다.
mongod인스턴스를 종료합니다.기존 바이너리를 1.8.x
mongod바이너리.MongoDB를 다시 시작합니다.
복제본 세트 업그레이드
1.8.x 세컨더리 는 1.6.x에서 복제 할 수 있습니다 . 프라이머리.
1.6.x 세컨더리는 1.8.x에서 복제 할 수 없습니다 . 프라이머리.
따라서 복제본 세트 를 업그레이드 하려면 먼저 모든 세컨더리를 교체한 다음 프라이머리 를 교체해야 합니다.
예를 예시 , 프라이머리, 중재자 , 여러 개의 세컨더리가 있는 복제본 세트 가 있다고 가정해 보겠습니다. 설정하다 를 업그레이드 하려면 다음을 수행합니다.
중재자 의 경우:
중재자를 종료합니다.
1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.
새 프라이머리가 선택되지 않도록 구성(선택 사항)을 변경합니다.
설정하다 의 멤버를 종료하기 시작하면 새로운 프라이머리 가 선출될 수 있습니다. 이를 방지하려면 업그레이드하기 전에 모든 세컨더리에 우선 순위 를
0부여한 다음 나중에 다시 변경할 수 있습니다. 이렇게 하려면 다음을 수행합니다.현재 구성을 기록합니다.
rs.config()를 실행하고 결과를 텍스트 파일 에 붙여넣습니다.모든 세컨더리의 우선 순위 가
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)
각 세컨더리 의 경우:
세컨더리를 종료합니다.
1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.
구성을 변경한 경우 원래 상태 로 다시 변경합니다.
config = rs.conf() config.version++ config.members[0].priority = 1 config.members[3].priority = 1 config.members[4].priority = 1 rs.reconfig(config) 프라이머리 (최종 1.6 서버)를 종료한 다음 1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.
샤드 클러스터 업그레이드
밸런서 를 끕니다.
mongo <a_mongos_hostname> use config db.settings.update({_id:"balancer"},{$set : {stopped:true}}, true) 샤드 가 복제본 세트 인 경우 위 의 복제본 세트 업그레이드 지침을 따르세요.
샤드 단일
mongod프로세스 인 경우 종료했다가 1.8.x 명령으로 다시 시작합니다. MongoDB 다운로드 페이지.에서 바이너리를 다운로드합니다.
mongos프로세스를 종료합니다.1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.
각 config 서버에 대해 다음을 수행합니다.
config 서버 프로세스 를 종료합니다.
1.8.x 파일로 다시 시작합니다. MongoDB 다운로드 페이지에서 바이너리를 다운로드합니다.
밸런서를 켭니다:
use config db.settings.update({_id:"balancer"},{$set : {stopped:false}})
1.6으로 돌아가기
어떤 이유로든 다시 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 필드 옵션을 참조하세요.
추가 변경 사항 및 개선 사항
1.8.1
더 큰 청크를 이동할 때 샤딩 마이그레이션 수정.
백그라운드 인덱싱을 통한 내구성 수정.
많은 수신 연결에서 발생하는 mongos 동시성 문제를 수정했습니다.
1.8.0
1.7.x의 모든 변경 사항 시리즈.
1.7.6
버그 수정.
1.7.5
1.7.4
새로운
mapReduce출력 옵션.
1.7.3
초기 커버 인덱스 지원.
Distinct는 가능한 경우 인덱스의 데이터를 사용할 수 있습니다.
mapReduce결과를 기존 컬렉션 에 병합하거나 축소할 수 있습니다.mongod는 네트워크 사용량을 추적하고mongostat을 표시합니다. mongostat를 참조하세요.샤딩 안정성이 개선되었습니다.
1.7.2
$rename연산자를 사용하면 문서의 필드 이름을 바꿀 수 있습니다.db.eval()차단하지 않습니다.샤딩 이 있는 지리적 쿼리.
mongostat --discover옵션청크 분할 개선.
복제본은 nat 뒤에 있는 서버에 대한 네트워크 개선 사항을 설정합니다.
1.7.1
많은 샤딩 성능이 향상되었습니다.
포함된 배열의 기본 요소에 대한
$elemMatch지원 이 향상되었습니다.범위 쿼리에 대한 쿼리 옵티마이저가 개선되었습니다.
창 서비스 개선.
복제본 설정하다 설정 이 개선되었습니다.
$pull배열의 기본 요소에서 작동합니다.
1.7.0
과도한 삽입 로드에 대한 샤딩 성능이 개선되었습니다.
복제본 세트에 대한 슬레이브 지연 지원 .
local.system.replset.settings.getLastErrorDefaults복제본 세트의 경우.shell 에서 자동 완성.
지리적 검색 을 위한 구형 거리입니다.
1.6.1 및 1.6.2 의 모든 수정 사항.