문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
MongoDB 5.0 릴리스 노트
이 페이지의 내용
참고
MongoDB 5.0 출시일: 2021년 7월 13일
패치 릴리스
경고
과거 릴리스 제한 사항
아래의 중요 공지는 일부 이전 MongoDB 버전에 영향을 미칩니다. 배포가 중요 주의보의 영향을 받는 기능에 따라 달라지는 경우 사용 가능한 최신 패치 릴리스로 업그레이드하십시오.
이슈 | 영향을 받는 버전 |
---|---|
5.0.0 - 5.0.2 | |
5.0.0 - 5.0.2 | |
5.0.0 - 5.0.14(ARM64 또는 POWER 시스템 아키텍처) | |
5.0.2 - 5.0.17(Ops Manager 또는 Cloud Manager 클러스터의 증분 백업) | |
5.0.0 - 5.0.1 | |
5.0.0 - 5.0.21 | |
5.0.0 - 5.0.10 | |
5.0.6 - 5.0.21(메타필드 내장 개체에 의해 샤딩된 시계열 컬렉션) |
5.0.26 - 3월 26, 2024
5.0.25 - 2월 28, 2024
중요
MongoDB Server가 신뢰할 수 없는 연결에 성공할 수 있는 문제를 수정했습니다.
MongoDB 5 에서 CVE-2024-1351 로 인해.0 이전의 {3 5.0.25 --tlsCAFile
및 CAFile
의 특정 구성에서 MongoDB Server는 피어 인증서 유효성 검사를 건너뛰어 신뢰할 수 없는 연결이 성공할 수 있습니다.
이렇게 하면 인증서 유효성 검사 실패로 인해 닫혔어야 하는 연결 및 TLS에서 제공하는 보안 보장을 효과적으로 줄일 수 있습니다. 이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
7.0.0 - 7.0.5
6.0.0 - 6.0.13
5.0.0 - 5.0.24
4.4.0 - 4.4.28
CVSS 점수: 8.8
CWE: CWE-295: 부적절한 인증서 유효성 검사
서버-64444 listIndexes가 유효하지 않은5 0 사전 에서 실패합니다. 업그레이드 후 인덱스 사양
서버-82353 다중 문서 트랜잭션은 movePrimary가 동시에 실행될 때 문서를 놓칠 수 있습니다.
서버-83564 프로세스 필드가 config.locks에 인덱싱되어 있는지 확인합니다.
서버- 밸런서는85419 배출 중에 적합한 수신자를 찾을 수 없는 경우 로그를 오염시킵니다.
WT-10017 안정적인 롤백이 끝날 때 불안정한 기록 버전을 제거합니다.
5.0.24 - 2024년 1월 18일
서버-50792 shardCollection/refineCollectionShardKey에 대한 샤드 키 인덱스를 찾을 수 없는 경우 더 유용한 오류를 반환합니다.
서버-77506 샤딩된 다중 문서 트랜잭션은 데이터와 ShardVersion이 일치하지 않을 수 있습니다.
서버-81878 startupRecoveryForRestore가 시작 복구 중에 컬렉션 삭제를 적용하면 제대로 재생되지 않을 수 있습니다.
서버-83091 $or 쿼리는 계획 열거 중에 무한 루프를 트리거할 수 있습니다.
WT-7929 체크포인트 중 FTDC 중단을 방지하는 솔루션 조사
5.0.23 - 2023년 11월 27일
5.0.22 - 2023년 10월 26일
서버-68548 MongoDB Shell 버전 4.4.15 --quiet 플래그에도 불구하고 ASIO 메시지 로깅
서버-80021 더블과 문자열 간에 $convert를 올바르게 왕복하도록 합니다.
서버-80703 MigrationDestinationManager에서 라우팅 테이블 트래버스 방지
서버- 수신자 샤드는81106 복제 단계를 시작하기 전에 컬렉션 버전이 로컬로 유지될 때까지 기다리지 않습니다.
WT-11064 업데이트 구식 확인의 일환으로 전역적으로 표시되는 툼스톤 건너뛰기
5.0.21 - 2023년 9월 12일
서버- addShard가 실행되기 전에 드라이버가 서명된 $clusterTimes를 복제본 세트 --shardsvrs에 가십하는것을 지원합니다.60466
서버-71627 캐시된 컬렉션 경로 정보를 새로 고침하면 클러스터에 1 청크가 백만 개 있는 경우 모든 클라이언트 요청이 심각하게 차단됩니다.
서버-78813 lastCommitted optime이 null인 배출 커서로 커밋 지점 전파가 무기한 실패합니다.
WT-10759 조정 중에 기록 저장소 페이지를 강제로 제거하려고 다시 시도하지 않음
WT-11051 집계 타임스탬프 유효성 검사에서 최신 시작 지속형 타임스탬프 비교 수정
5.0.20 - 2023년 8월 14일
5.0.19 - 2023년 7월 13일
5.0.18 - 2023년 5월 18일
수정된 문제:
5.0.17 - 2023년 4월 27일
수정된 문제:
서버- 논리적 세션 캐시 새로 고침은 세션 문서 업데이트로 인한 쓰기 오류를무시하여 커서가 조기에 종료되도록 함73229
서버-74647 리샤딩 상태 머신 생성은 중단 후 다시 시도해야 합니다.
서버-75261 'listCollections' 명령이 실패하고 BSONObjectTooLarge 오류가 발생합니다.
서버-75431 샤드 클러스터의 이름 변경 경로에서 프라이머리 db에 대한 최선의 노력 검사 제거 또는 수정
서버-76098 $search 및 단순하지 않은 데이터 정렬을 사용한 쿼리 허용
5.0.16 - 2023년 4월 10일
수정된 문제:
5.0.15 - 2023년 2월 27일
수정된 문제:
서버- 네트워킹 호출을 차단하면 동기화 소스 확인이 무기한 지연될 수있습니다.54900
서버-72416 find 및 findAndModify 프로젝션 코드가 컬렉션 수준 데이터 정렬을 따르지 않음
서버-71759 dataSize 명령이 양보하지 않습니다.
서버-72222 분할된 클러스터에서 결과를 병합할 때 단일 축소 최적화를 사용한 MapReduce가 실패합니다.
WT-9268 조정을 위해 기록 저장 기록의 삭제를 연기합니다.
5.0.14 - 2022년 11월 21일
수정된 문제:
5.0.13 - 2022년 9월 29일
수정된 문제:
서버-69611 기본적으로 -ffp-contract=off 컴파일러 옵션을 설정합니다.
서버-69220 RefineCollectionShardKey를 사용하면 현재 샤드 키 필드를 범위 기반과 해시 간에 토글할 수 있으므로 데이터 불일치가 발생할 수 있습니다.
서버-67650 리샤딩 수신자는0 oplog 적용자가 oplog 페처를 따라잡지 못한 경우 retentionOperationTimeEstimatedSecs= 를 반환할 수 있습니다.
서버-68094 사용자 지정 생성 _id를 사용한 리샤딩이 프로젝션 오류로 인해 실패합니다.
WT-9870 복구 중에 가장 오래된 타임스탬프가 업데이트될 때마다 고정된 타임스탬프가 업데이트되는 문제를 수정합니다.
5.0.12 - 2022년 9월 5일
수정된 문제:
5.0.11 - 2022년 8월 19일
수정된 문제:
서버- 항목의68511 MovePrimary
config.databases
업데이트는 점으로 구분된 필드 표기법을 사용해야 합니다.서버-61321 텍스트 인덱스 버전에 대한 큰/NaN 값 처리 개선
서버-60607 지역 인덱스 버전에 대한 큰/NaN 값 처리 개선
서버-68628 프라이머리 페일오버 후 실패한 리샤딩 작업을 다시 시도하면 서버 충돌 또는 쓰기 손실이 발생할 수 있습니다.
68522 50 4서버-4 방지 . 바이너리를 fCV 에서 시작합니다. TTL 인덱스가 잘못 구성된
WT-9500 HS 업데이트의 키/값 타임스탬프 대신 셀 시간 창을 사용하도록 RTS 수정
5.0.10 - 2022년 7월 29일
수정된 문제:
5.0.9 - 2022년 5월 31일
수정된 문제:
5.0.8 - 2022년 4월 25일
수정된 문제:
서버-63531 commitQuorum에 buildIndexes:false 노드가 잘못 포함되고 투표 노드만 자격이 있다는 오류 메시지가 잘못 표시됨
서버-63387 1 StreamingCursor는 WiredTiger 백업 커서에서 검색된 순서대로 백업 블록을 반환해야 합니다.
서버-62229 recoverFromOplogAsStandalone=true일 때 인덱스 빌드 항목을 적용할 때 발생하는 불변성 수정
서버-61879 마이그레이션을 복구하기 위한 새로 고침은 진행 중인 새로 고침에 참여하지 않아야 합니다.
WT-8924 행 저장소에서 충돌을 확인할 때 삽입 목록이 있는 경우 디스크 시간 창을 확인하지 않습니다.
5.0.7 - 2022년 4월 11일
수정된 문제:
5.0.6 - 2022년 1월 31일
수정된 문제:
5.0.5 - 2021년 12월 6일
수정된 문제:
5.0.4 - 2021년 11월 15일
수정된 문제:
5.0.3 - 2021년 9월 21일
수정된 문제:
5.0.2 - 2021년 8월 4일
수정된 문제:
5.0.1 - 2021년 7월 22일
수정된 문제:
5.0.0 - 2021년 7월 13일
이 페이지의 나머지 부분에서는 5.0.0 릴리스 정보를 제공합니다.
Time Series 컬렉션
MongoDB 5.0은 일정 기간 동안의 측정 시퀀스를 효율적으로 저장하는 시계열 컬렉션을 도입했습니다. 일반 컬렉션과 비교하여 시계열 데이터를 시계열 컬렉션에 저장하면 쿼리 효율성이 향상되고 데이터 및 인덱스의 디스크 사용량이 줄어듭니다.
집계
새로운 집계 연산자
MongoDB 5.0에는 다음과 같은 집계 연산자가 도입되었습니다.
연산자 | 설명 |
---|---|
참고명확화2}는 파이프라인 단계와 | |
지정된 시간 단위만큼 Date 객체를 증가시킵니다. | |
두 날짜의 차이를 반환합니다. | |
Date 객체를 지정된 시간 단위만큼 감소시킵니다. | |
날짜를 자릅니다. | |
문서에서 지정된 필드의 값을 반환합니다. 2}를 사용하여 마침표( )가 포함되거나 달러 기호( )로 시작하는 이름의 필드 값을 검색할 $getField 수 있습니다.. $ | |
$rand 메서드는 호출될 때마다 0 ~ 1 사이의 임의의 실수 값을 생성합니다. 새로운 $sampleRate 연산자는 $rand 기반으로 합니다. | |
2} 메서드를 추가하여 $sampleRate 파이프라인에서 주어진 비율로 문서를 확률적으로 선택합니다. | |
문서에서 지정된 필드를 추가, 업데이트 또는 제거합니다. 2}를 사용하여 마침표( )가 포함되거나 달러 기호( )로 시작하는 이름을 가진 필드를 추가, 업데이트 또는 제거할 $setField 수 있습니다.. $ | |
문서에서 지정된 필드를 제거합니다. 마침표( . )가 포함되거나 달러 기호($ )로 시작하는 이름을 가진 필드를 제거하기 위한 $setField 의 별칭입니다. |
창 연산자
MongoDB 5.0에는 $setWindowFields
파이프라인 단계가 도입되어 컬렉션의 지정된 문서 범위(창이라고 함)에서 작업을 수행할 수 있습니다. 이 작업은 선택한 창 연산자에 따라 결과를 반환합니다.
예를 들어 $setWindowFields
단계를 사용하여 다음을 출력할 수 있습니다.
컬렉션에 있는 두 문서 간의 판매량 차이입니다.
판매 순위.
누적 판매 총액입니다.
데이터를 외부 데이터베이스로 내보내지 않고도 복잡한 시계열 정보를 분석합니다.
일반 집계 개선 사항
$expr
연산자: 비교 연산자 인덱스 사용
MongoDB 5.0부터 $eq
, $lt
, $lte
, $gt
, $gte
연산자($expr
연산자 내 배치)는 성능 향상을 위해 인덱스를 사용할 수 있습니다.
$ifNull
여러 입력 표현식을 허용하는 표현식
MongoDB 5.0부터 대체 표현식을 반환하기 전에 $ifNull
표현식에 대해 여러 입력 표현식을 지정할 수 있습니다.
let
집계 옵션
MongoDB 5.0부터 aggregate
명령과 db.collection.aggregate()
헬퍼 메서드에 집계 파이프라인의 다른 곳에서 사용할 수 있는 변수 목록을 지정하는 let
옵션이 추가되었습니다. 이를 통해 쿼리 텍스트에서 변수를 분리하여 명령 가독성을 향상시킬 수 있습니다.
$lookup
Stage: 간결한 상관관계 하위 쿼리
MongoDB 5.0부터 집계 파이프라인 $lookup
단계는 컬렉션 간의 조인을 개선하는 간결한 상관관계 하위 쿼리를 지원합니다.
$lookup
Stage: 관련 없는 하위 쿼리
MongoDB 5.0부터는 단계, 연산자 $lookup
$sampleRate
또는 $sample
연산자를 포함하는 파이프라인 단계에서 $rand
상관 관계가 없는 하위 쿼리의 경우 반복되는 경우 항상 하위 쿼리가 다시 실행됩니다. 이전에는 하위 쿼리 출력 크기에 따라 하위 쿼리 출력이 캐시되거나 하위 쿼리가 다시 실행되었습니다.
$lookup
사용하여 상관관계가 없는 하위 쿼리 수행을 참조하십시오.
$sort
무대: 성능 개선
MongoDB 5.0부터 쿼리 최적화 도구는 $project
단계의 결과를 $sort
단계로 푸시 다운합니다. 따라서 $sort
작업은 project
단계와 함께 사용할 때 더 적은 RAM을 필요로 하고 Sort exceeded memory limit
오류를 방지할 수 있습니다.
Auditing
런타임 감사 필터 구성
MongoDB 5.0에는 런타임에 감사 필터를 구성하는 기능이 추가되었습니다.
연산자 | 설명 |
---|---|
감사 구성을 확인하기 위한 폴링 간격을 정의합니다 | |
2} 및 에서 mongod 감사 구성을 mongos 검색합니다. | |
일반 감사 업데이트
MongoDB 5.0부터 도입됨:
시스템 이벤트 감사에는 다음이 포함됩니다.
새로운 감사 메시지 유형: clientMetadata, directAuthMutation, 로그아웃, 시작.
기존 감사 메시지 유형에 대한 추가 정보 및 로깅 시나리오: authCheck, authenticate, createCollection, createIndex 및 dropCollection.
보조 복제본 에 대한 DDL 작업 감사가 변경되었습니다. Audit Events and Filter항목을 참조하십시오.
고정 사이즈 컬렉션
컬렉션 삭제 제한이 보조 항목에 복제됨
MongoDB 5.0부터는 복제 세트 제한 컬렉션에 대한 암시적 삭제 작업이 주 멤버에서 처리되고 보조 멤버에 복제됩니다.
제한된 컬렉션에서 허용되는 명시적 삭제(Explicit Deletes Allowed on Capped Collections)
변경 스트림
이벤트 출력 변경
MongoDB 5.0부터 변경 이벤트에는 배열 잘림을 기록하는 updateDescription.truncatedArrays
필드가 포함됩니다.
인덱스
부분 인덱스 동작 변경
MongoDB 5.0부터는 partialFilterExpression 필드가 동등한 필터를 표현하지 않는 한 동일한 키 패턴을 사용하여 여러 부분 인덱스 를 만들 수 있습니다.
이전 버전의 MongoDB에서는 서로 다른 partialFilterExpressions에 동일한 키 패턴을 사용할 때 여러 개의 부분 인덱스를 만들 수 없습니다.
고유한 스파스 인덱스 동작 변경
MongoDB 5.0부터는 동일한 키 패턴을 가진 고유한 스파스 인덱스와 고유한 비스파스 인덱스가 단일 컬렉션에 존재할 수 있습니다.
진행 중인 인덱스 빌드 중에 Ready
인덱스를 삭제할 수 없습니다.
2} 명령은 진행 중인 인덱스 db.collection.dropIndexes()
빌드가 있는 경우 준비된 인덱스를 삭제할 수 없습니다.
MongoDB 4.4.0~4.4.4 버전에서는 버그로 인해 이 논리가 적용되지 않았습니다.
전경 유효성 검사로 다중 키 메타데이터 불일치를 수정할 수 있음
MongoDB 배포에서 실행되는 경우 db.collection.validate()
는 독립 실행형 배포의 멀티키 메타데이터 불일치를 수정하려고 시도합니다.
geoHaystack
인덱스 및 geoSearch
명령 제거
MongoDB 5.0은 더 이상 사용되지 않는 geoHaystack 인덱스와 geoSearch
명령을 제거합니다. 대신 또는 지원되는 지리 $geoNear
공간적 쿼리 연산자 중 하나가 포함된 2D 인덱스 를 사용합니다.
MongoDB 인스턴스를 5.0으로 업그레이드하고 featureCompatibilityVersion을 5.0
로 설정하면 기존의 모든 geoHaystack 인덱스가 삭제됩니다.
새로운 오류 메시지
db.collection.createIndex()
db.collection.createIndexes()
2} 및 작업에는 옵션을 잘못 지정할 때 새로운 오류 메시지가 표시됩니다.
중단된 인덱스 빌드
인덱스 빌드 중에 복제본 세트의 노드가 완전히 종료되거나 롤백되는 경우, 이제 인덱스 빌드 진행률이 디스크에 저장됩니다. 서버가 다시 시작되면 저장된 위치에서 인덱스 생성이 다시 시작됩니다.
reIndex
행동 변화
MongoDB 5.0부터 reIndex
명령과 db.collection.reIndex()
셸 메서드는 독립 실행형 인스턴스에서만 실행할 수 있습니다.
제거된 명령
MongoDB 5.0부터는 다음 데이터베이스 명령과 mongo
셸 헬퍼 메서드가 제거되었습니다.
제거된 명령 | 대안 |
---|---|
사용 불가 | |
사용 불가 | |
사용 불가 | |
$geoNear 또는 지원되는 지리적 공간 쿼리 연산자중 하나를 입력합니다. |
복제본 세트
비트랜잭션 읽기 config.transactions
MongoDB 5.0부터는 config.transactions
컬렉션에서 다음과 같은 읽기 우려 사항 및 옵션이 있는 경우 트랜잭션이 아닌 읽기가 허용되지 않습니다.
"majority"
이고 afterClusterTime 옵션이 설정되어 있습니다.인과적으로 일관적인 세션
"majority"
내에서 MongoDB 드라이버및 를 사용하는 경우
hello
명령
MongoDB 5 부터 시작.0, hello
명령 및 db.hello()
메서드가 isMaster
명령 및 db.isMaster()
메서드를 대체하기 위해 도입되었습니다. 새로운 토폴로지 메트릭 connections.exhaustHello
은 connections
에서 이를 추적합니다.
휴면 기간
MongoDB 5.0부터 mongod
및 mongos
는 종료하기 전에 진행 중인 모든 데이터베이스 작업이 완료될 수 있도록 대기 기간을 입력합니다.
members[n]._id
값에 대한 제한이 제거되었습니다.
MongoDB 5.0부터 members[n]._id
필드는 0
보다 크거나 같은 정수 값일 수 있습니다. 이전에는 이 값이 0
부터 255
까지의 정수로 제한되었습니다.
enableMajorityReadConcern
구성할 수 없음
MongoDB 5.0부터는 스토리지 엔진 개선으로 인해 enableMajorityReadConcern
및 --enableMajorityReadConcern
는 변경할 수 없으며 항상 true
으로 설정됩니다.
이전 버전의 MongoDB에서는 enableMajorityReadConcern
및 --enableMajorityReadConcern
를 구성할 수 있으며 false
으로 설정하여 스토리지 캐시 압력으로 인해 3멤버 PSA(Primary-Secondary-Arbiter) 아키텍처를 사용하는 배포가 고정되지 않도록 방지할 수 있습니다.
프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용 중이라면 다음을 고려하세요.
쓰기 고려
"majority"
는 세컨더리를 사용할 수 없거나 지연되었을 때 성능 문제를 일으킬 수 있습니다. 이러한 문제를 완화하는 방법은 PSA 복제본 세트의 성능 문제 완화를 참조하세요.글로벌 기본값
"majority"
를 사용하고 있고, 쓰기 고려가 과반수 크기보다 작으면 쿼리가 오래된 (완전히 복제되지 않은) 부실 데이터를 반환할 수 있습니다.
향상된 스레드 풀 시간 초과 제어
MongoDB 5.0부터는 새로운 replWriterMinThreadCount
서버 매개 변수를 사용하여 이 최소값을 초과하는 유휴 스레드를 닫도록 허용할 수 있습니다. replWriterMinThreadCount
5}가 replWriterThreadCount
보다 작은 값으로 구성되면 replWriterMinThreadCount
을 초과하는 유휴 스레드는 시간 초과됩니다.
PSA 복제본 세트 재구성하기
이제 1차-보조-알비터(PSA) 복제본 세트를 재구성하거나 PSA 아키텍처로 변경할 때 경우에 따라 2단계 변경으로 재구성을 수행해야 합니다. MongoDB 5.0은 두 단계를 모두 수행하는 rs.reconfigForPSASet()
메서드를 도입했습니다. 도우미 방법을 사용할 수 없는 경우 PSA 복제본 세트 안전하게 수정하기의 절차를 따르세요.
동기화 소스 재평가 제한
maxNumSyncSourceChangesPerHour
노드가 동기화 소스 재평가를 일시적으로 중지하기 전에 시간당 동기화 소스 변경이 발생할 수 있는 횟수를 결정합니다. 이 매개변수는 노드에 동기화 소스가 없는 경우 노드가 다른 노드에서 동기화를 시작하는 것을 방지하지 않습니다.
enableOverrideClusterChainingSetting
서버 매개변수
MongoDB 부터 5 시작.0.2, 새 enableOverrideClusterChainingSetting
서버 매개 변수를 로 설정하여 이 인 경우에도 true
세컨더리 멤버가 다른 세컨더리 멤버의 데이터를 복제할 수 있도록 할 settings.chainingAllowed
수 false
있습니다.
보안
온라인 인증서 교체 지원
MongoDB 5.0부터는 실행 중인 mongod
또는 mongos
인스턴스를 먼저 중지할 필요 없이 필요에 따라 다음 TLS 인증서를 교체할 수 있습니다.
CRL (Certificate Revocation List) files
(Linux 및 Windows 플랫폼에서)
이러한 인증서를 순환하려면 파일 시스템의 인증서 파일을 업데이트된 버전으로 바꾼 다음 rotateCertificates
명령 또는 db.rotateCertificates()
셸 메서드를 사용하여 인증서 순환을 트리거합니다.
이러한 방식으로 인증서를 회전하는 데 가동 중지 시간이 필요하지 않으며 활성 원격 연결이 끊어지지 않습니다.
자세한 내용은 온라인 인증서 순환을 참조하십시오.
TLS 1.3 암호 모음 구성 지원
MongoDB 5.0은 opensslCipherSuiteConfig
매개변수를 도입하여 TLS 1.3 암호화를 사용할 때 OpenSSL이 허용해야 하는 지원되는 암호 집합을 구성할 수 있도록 합니다.
TLS 연결 X509 인증서 시작 경고
MongoDB 5.0부터 mongod
및 mongos
는 이제 인증서에 주체 대체 이름 특성이 포함되지 않은 경우 시작 경고를 발행합니다.
다음 플랫폼은 일반 이름 유효성 검사를 지원하지 않습니다:
iOS 13 이상
MacOS 10.15 이상
Go 1.15 이상
이러한 플랫폼을 사용하는 클라이언트는 호스트 이름이 CommonName 속성으로 지정된 x.509 인증서를 사용하는 MongoDB 서버에 인증하지 않습니다.
ApplyOps 권한 작업
MongoDB 5.0은 applyOps
dbAdminAnyDatabase
가 상속하는 권한 작업을 도입했습니다.
샤드 클러스터
리샤딩
이상적인 샤드 키를 사용하면 MongoDB가 클러스터 전체에 문서를 고르게 분산하는 동시에 일반적인 쿼리 패턴을 용이하게 할 수 있습니다. 샤드 키가 최적화되지 않으면 고르지 않은 데이터 분산으로 인해 성능 또는 확장 문제를 일으킬 수 있습니다. MongoDB 5.0부터는 reshardCollection
명령을 사용하여 컬렉션의 샤드 키를 변경하여 클러스터 전체에 대한 데이터 배포를 변경할 수 있습니다.
currentOp
진행 중인 리샤딩 작업 보고
MongoDB 5.0부터 $currentOp
집계 단계(및 currentOp
명령어와 db.currentOp()
셸 메서드)에는 리샤딩 코디네이터와 도너 및 리시버 샤드의 진행 중인 리샤딩 작업 상태에 대한 추가 정보가 포함되어 있습니다.
db.currentOp
메서드에서 이제 집계 단계를 사용합니다. mongosh
MongoDB 5 부터 시작.0, $currentOp
애그리게이션 단계는mongosh
와 함께 헬퍼 메서드 db.currentOp()
를 실행할 때 사용됩니다
mongos
/ mongod
연결 풀
MongoDB 5 부터 시작.0, MongoDB는 ShardingTaskExecutorPoolReplicaSetMatching
에 대한 새로운 기본값으로 매개 변수 옵션 "automatic"
를 추가합니다. mongos
로 설정하면 인스턴스는 "matchPrimaryNode"
옵션에 지정된 동작을 따릅니다. mongod
로 설정하면 인스턴스는 "disabled"
옵션에 지정된 동작을 따릅니다.
renameCollection
샤드 컬렉션과 호환
MongoDB 5.0부터는 renameCollection
명령을 사용하여 샤딩된 컬렉션의 이름을 변경할 수 있습니다.
샤딩된 클러스터에서 샤딩된 컬렉션이나 샤딩되지 않은 컬렉션의 이름을 변경할 때 소스 및 대상 컬렉션은 모든 샤드에서만 독점적으로 잠깁니다. 소스 및 대상 컬렉션에 대한 후속 작업은 이름 바꾸기 작업이 완료될 때까지 기다려야 합니다.
movePrimary
작업 중 쓰기 시 오류 메시지
MongoDB 5.0부터 movePrimary
명령을 사용하여 샤드 클러스터에서 샤드를 제거할 때, 원본 샤드에 쓰면 오류 메시지가 생성됩니다.
청크 분할 및 병합 변경 로그에 소유 샤드 표시
MongoDB 부터 5 시작.0,config.changelog
분할 및 병합 작업을 위한 owningShard
컬렉션의 문서에 필드가 포함되어 있습니다.owningShard
필드에는 shardId
분할되거나 병합된 청크를 소유한 샤드의 가 표시됩니다.
owningShard
0} 필드는 분할 또는 병합 작업이 자주 발생하는 샤드를 식별하는 데 도움이 됩니다.
maxCatchUpPercentageBeforeBlockingWrites
서버 매개변수
MongoDB 5 부터 시작.0 maxCatchUpPercentageBeforeBlockingWrites
를 설정하여 전송 중인 청크의 총 크기(MB)와 비교했을 때 moveChunk
작업 중에 아직 마이그레이션되지 않은 데이터의 최대 허용 비율을 지정할 수 있습니다.
이 매개변수는 다음의 동작에 영향을 줄 수 있습니다.
moveChunk
명령을 수동으로 실행합니다.로드 밸런서 기능은 여러 개의
moveChunk
명령을 자동으로 실행하여 샤드 전체에 청크를 균등하게 분배합니다. Sharded Cluster Balancer를 참조하십시오.
셸 변경
새로운 MongoDB 셸: mongosh
mongo
셸은 MongoDB v5 에서 더 이상 사용되지 않습니다.0. 대체 셸은 mongosh
입니다. 레거시 mongo
셸은 향후 릴리스에서 제거될 예정입니다.
셸 패키징도 MongoDB v5 에서 변경되었습니다.0. 자세한 내용은 설치 지침 을 참조하세요.
GCP 및 Azure KMS 공급자를 위한 Shell 지원
MongoDB 5 0부터 시작. , Google Cloud Platform KMS 및 Azure Key Vault는 mongosh
및 레거시 mongo
셸 모두에서 클라이언트측 필드 레벨 암호화 를 위한 키 관리 서비스(KMS) 제공자로 지원됩니다.
KMS를 사용하면 클라이언트 측 필드 수준 암호화 워크플로우의 일부로 데이터 암호화 키를 암호화 및 복호화하는 데 사용되는 고객 마스터 키(CMK)를 중앙에서 안전하게 저장할 수 있습니다.
또한 구성된 KMS를 사용하면 MongoDB Enterprise와 함께 사용할 때 CSFLE가 데이터 필드의 문서를 해독하는 방법을 활용할 수 있습니다.
자세한 내용은 mongosh를 사용하여 KMS 제공자 구성을 참조하세요.
스냅샷
읽기 우려에 대한 확장 지원 "snapshot"
MongoDB 5.0부터 기본 및 보조 노드의 다중 문서 트랜잭션 이외의 일부 읽기 작업에 대해 읽기 문제 "snapshot"
가 지원됩니다. 장기 실행 스냅샷 쿼리 수행을 참조하십시오.
minSnapshotHistoryWindowInSeconds
서버 매개변수
MongoDB 5.0부터는 minSnapshotHistoryWindowInSeconds
매개변수를 사용하여 WiredTiger가 스냅샷 기록을 보관하는 기간을 제어할 수 있습니다.
트랜잭션
coordinateCommitReturnImmediatelyAfterPersistingDecision
매개변수
서버 매개변수 coordinateCommitReturnImmediatelyAfterPersistingDecision
는 트랜잭션 커밋 결정이 클라이언트에 반환되는 시기를 제어합니다.
이 매개 변수는 MongDB 5.0에서 기본값이 true
로 도입되었습니다. MongoDB 6.0 및 5.0.10에서는 기본값이 false
으로 변경됩니다.
coordinateCommitReturnImmediatelyAfterPersistingDecision
0}이 false
일 때,샤드 트랜잭션 코디네이터는 모든 구성원이 다중 문서 트랜잭션 커밋을 승인할 때까지 기다렸다가 클라이언트에게 커밋 결정을 반환합니다.
이름 변경
2022년 2월부터 " 버전이 지정된 API " 용어가 " 스테이블 API " 로 변경되었습니다. 이름은 변경되나 모든 개념과 기능은 동일하게 유지됩니다.
일반 변경 사항
파이프라인 단계가 $lookup
인 쿼리에 대한 실행 계획 통계
MongoDB 5.0은 파이프라인 단계를 $lookup
사용하는 쿼리에 대한 실행 계획 통계를 추가합니다.
필드 이름에서 ($
) 및 (.
) 처리 개선
MongoDB 5.0은 접두사가 ($
)이거나 (.
) 문자가 포함된 필드 이름에 대한 지원이 개선되었습니다. 이러한 문자를 사용하는 데이터 소스로 더 쉽게 작업할 수 있도록 데이터 저장에 대한 유효성 검사 규칙이 업데이트되었습니다.
클러스터 전체 기본 쓰기 우려
MongoDB 5.0부터는 setDefaultRWConcern
명령을 통해 클러스터 전체 쓰기 우려(CWWC)가 설정되면 쓰기 우려를 해제할 수 없습니다.
자세한 내용은 암시적 기본 쓰기 고려를 참조하세요.
MongoDB 5.0부터 암시적 기본 쓰기 우려는 w: majority
입니다. 그러나 중재자가 포함된 배포의 경우 특별히 고려해야 할 사항이 있습니다.
복제 세트의 투표 과반수는 1에 투표 회원 수의 절반을 반올림한 값입니다. 데이터를 포함하는 투표 구성원의 수가 투표 과반수보다 많지 않은 경우 기본 쓰기 문제는
{ w: 1 }
입니다.다른 모든 시나리오에서 기본 쓰기 우려는
{ w: "majority" }
입니다.
특히 MongoDB는 다음 공식을 사용하여 기본 쓰기 문제를 결정합니다.
if [ (#arbiters > 0) AND (#non-arbiters <= majority(#voting-nodes)) ] defaultWriteConcern = { w: 1 } else defaultWriteConcern = { w: "majority" }
예를 들어 다음 배포와 해당 기본 쓰기 문제를 고려해보세요.
비중재인 | 중재자 | 투표 노드 | 과반수 투표 노드 | 자세한 내용은 암시적 기본 쓰기 고려를 참조하세요. |
---|---|---|---|---|
2 | 1 | 3 | 2 | { w: 1 } |
4 | 1 | 5 | 3 | { w: "majority" } |
첫 번째 예제에서는
총 3개의 투표 노드에는 2명의 비중재자와 1명의 중재자가 있습니다.
투표 노드의 대다수(1 + 3의 절반, 반내림)는 2입니다.
비중재자 수(2)는 대다수의 투표 노드(2)와 동일하므로
{ w: 1 }
의 암시적 쓰기 문제가 발생합니다.
두 번째 예제에서는
총 5개의 투표 노드에는 4명의 비중재자와 1명의 중재자가 있습니다.
투표 노드의 대다수(1 + 5의 절반, 반내림)는 3입니다.
비 중재자 (4) 의 수가 투표 노드 (3) 의 과반수보다 많아서 암묵적인 쓰기 문제가
{ w: "majority" }
발생합니다.
{ w: "majority" }
2} 기본 쓰기 우려는 선거가 발생하거나 복제본 세트 구성원을 사용할 수 없게 되는 경우 더 강력한 지속성을 보장합니다.
mongosShutdownTimeoutMillisForSignaledShutdown
매개변수
MongoDB 5.0부터 새로운 매개변수 mongosShutdownTimeoutMillisForSignaledShutdown
는 mongos
의종료를 시작하기 전에 진행 중인 데이터베이스 작업이 완료될 때까지 기다리는 시간(밀리초)을 지정합니다.
구성 zstd
압축 수준
MongoDB 5.0에는 zstdCompressionLevel
2} 구성 파일 옵션이 도입되어 blockCompressor
가 zstd
으로 설정된 경우 압축 수준을 구성할 수 있습니다.
잠금 없는 읽기 작업
MongoDB 5.0부터 다른 작업이 컬렉션에 대해 배타적(X) 쓰기 잠금을 보유하는 경우 다음 읽기 작업이 차단되지 않습니다.
컬렉션에 쓸 때 mapReduce
와 aggregate
는 인텐트 배타적(IX) 잠금을 유지합니다. 따라서 컬렉션에 배타적 X 잠금이 이미 있는 경우 mapReduce
및 aggregate
쓰기 작업이 차단됩니다.
스키마 유효성 검사 실패 설명
validate
명령의 복구 옵션
MongoDB 5.0부터 validate
명령과 db.collection.validate()
도우미 메서드에 불일치가 있는 컬렉션을 복구할 수 있는 새로운 복구 옵션이 추가되었습니다.
validate
2} 명령 및 도우미 db.collection.validate()
메서드는 repaired
true
컬렉션이 복구된 경우 인 새로운 부울 값도 반환합니다.
validate
명령이 문서 스키마 위반을 보고합니다
MongoDB 5.0부터 validate
및 db.collection.validate()
는 컬렉션의 문서의 유효성을 검사합니다. 이 명령은 스키마 유효성 검사 규칙을 위반한 경우 이를 보고합니다.
복구 옵션 mongod
MongoDB 5.0부터 시작하여 --repair
옵션은 mongod
에 대한 옵션을 사용하여 컬렉션의 유효성을 검사하여 불일치를 찾아내고 가능한 경우 수정하여 인덱스를 다시 빌드하지 않도록 합니다. 사용 및 제한 사항에 대해서는 --repair
옵션을 참조하십시오.
corruptRecords
유효성 검사 출력의 필드
MongoDB 5.0부터 validate
명령과 db.collection.validate()
도우미 메서드는 손상된 문서에 대해 RecordId
개의 값 배열이 포함된 새로운 corruptRecords
필드를 반환합니다.
maxValidateMemoryUsageMB
서버 매개변수
MongoDB 부터 5 0시작. 부터 명령에는 setParameter
maxValidateMemoryUsageMB
명령의 최대 메모리 사용량을 설정하는 validate
새로운 매개 변수가 있습니다.
findChunksOnConfigTimeoutMS
서버 매개변수
MongoDB 5.0부터는 findChunksOnConfigTimeoutMS
매개 변수를 사용하여 chunks
에서 찾기 작업의 시간 제한을 변경할 수 있습니다.
데이터베이스 프로파일러 filter
옵션
MongoDB 5.0부터는 데이터베이스 프로파일러에 filter
옵션을 설정하여 어떤 작업이 프로파일링되고 기록되는지 결정할 수 있습니다. 4} 및 프로파일러 옵션 대신 표현식을 사용할 수 있습니다.filter
slowms
sampleRate
참조:
데이터베이스 프로파일러 설정 변경 사항 기록
MongoDB 5 부터 시작.0 profile
명령이나 db.setProfilingLevel()
래퍼 메서드를 사용하여 데이터베이스 프로파일러 level
, slowms
, sampleRate
또는 filter
에 수행한 변경 사항은 log file
에 기록됩니다.
서버 및 감사 로그에 대한 독립적인 로그 로테이션
감사가 활성화된 MongoDB 5.0부터는 logRotate
명령을 사용하여 서버와 감사 로그를 독립적으로 회전할 수 있습니다. 이전에는 logRotate
명령을 사용하여 두 로그를 함께 순환시켰습니다.
remote
느린 작업 로그의 필드
MongoDB 5.0부터 느린 작업 로그 메시지에는 클라이언트 IP 주소를 지정하는 remote
필드가 포함됩니다.
remoteOpWaitMillis
로그 필드
MongoDB 5.0부터는 remoteOpWaitMillis 로그 필드를 사용하여 샤드에서 결과 대기 시간을 얻을 수 있습니다.
resolvedViews
뷰의 느린 쿼리를 위한 로그 필드
MongoDB 5.0부터 뷰의 느린 쿼리에 대한 로그 메시지에는 resolvedViews
뷰 세부 정보가 포함된 필드가 포함됩니다.
let
옵션을 사용하여 변수 정의
MongoDB 5.0부터 다음 명령에는 변수 목록을 정의하는 let
옵션이 있습니다. 이를 통해 쿼리 텍스트에서 변수를 분리하여 명령 가독성을 향상시킬 수 있습니다.
find
명령findAndModify
{ 2} 명령 및 해당db.collection.findAndModify()
셸 도우미update
{ 2} 명령 및 해당db.collection.update()
셸 도우미delete
명령
update
명령에는 변수 목록을 정의하기 위한 c
필드도 있습니다.
기본적으로 사용자 이름에서 LDAP DN 매핑 지원
MongoDB 5.0부터 userToDNMapping
구성 파일 옵션과 에 --ldapUserToDNMapping
대한 명령줄 옵션이 mongod
추가되었습니다. / mongos
및 mongoldap
은 이제 빈 매핑 문서(예: 빈 문자열 또는 빈 배열)가 옵션에 지정된 경우 기본적으로 인증된 사용자 이름을 LDAP DN으로 매핑합니다. 이전에는 빈 매핑 문서를 제공하면 매핑이 실패했습니다.
추가 dbStats
여유 공간 통계
MongoDB 5.0부터 dbStats
명령은 다음과 같은 추가 통계를 출력합니다.
컬렉션(
freeStorageSize
)에 할당된 여유 공간인덱스(
indexFreeStorageSize
)에 할당된 여유 공간컬렉션 및 인덱스에 할당된 총 여유 공간(
totalFreeStorageSize
)
serverStatus
출력 변경
serverStatus
출력에 다음과 같은 새로운 필드가 포함됩니다.
- 집계 지표
- API 버전 메트릭
- 복제 메트릭
- 관심사 카운터 읽기
readConcernCounters
, 쿼리 운영으로 지정된 읽기 우려 수준 보고(readConcernCounters
가opReadConcernCounters
대체)readConcernCounters
에 다음과 같은 새로운 필드가 추가되었습니다.readConcernCounters.nonTransactionOps.noneInfo
readConcernCounters.transactionOps.noneInfo
- 관심사 카운터 쓰기
opWriteConcernCounters
에 다음과 같은 새로운 필드가 추가되었습니다.opWriteConcernCounters.insert.noneInfo
opWriteConcernCounters.update.noneInfo
opWriteConcernCounters.delete.noneInfo
- 스레드 연결 수
connections.threaded
, 클라이언트 요청을 서비스하는 스레드에 할당된 클라이언트로부터 들어오는 연결 수를 보고합니다.
- 통계 재구성
shardingStatistics.resharding
를 통해 리샤딩 작업에 대한 통계를 보고합니다.
- 서비스 실행자 지표
network.serviceExecutors
를 사용하여 클라이언트 요청에 대한 작업을 실행하는 서비스 실행자에 대해 보고합니다.
- 커서 지표
metrics.cursor.moreThanOneBatch
, 하나 이상의 배치를 반환한 총 커서 수를 보고합니다(추가 배치는 명령을 사용하여 검색).getMore
metrics.cursor.totalOpened
- 열려 있는 총 커서 수를 보고합니다.
- 보안 카운터
security.authentication.saslSupportedMechsReceived
hello
, 요청에 유효한hello.saslSupportedMechs
필드가 포함된 횟수를 보고합니다.
- Repl
이제
repl
에 복제본 집합 기본값에서만 실행되는 서비스에 대한 추가 정보가 포함된primaryOnlyServices
문서가 포함되어 있습니다.
플랜 캐시 디버그 정보 크기 제한
MongoDB 5 부터 시작.0, 모든 collection에 대한 plan caches
의 누적 크기가 0 보다 작은 경우에만 계획 캐시 가 전체 plan cache
항목을 저장합니다.5 GB. 모든 collection에 대한 plan caches
의 누적 크기가 이 임계값을 초과하면 특정 디버그 정보 없이 추가 plan cache
항목이 저장됩니다.
plan cache
항목의 예상 크기 (바이트) 는 $planCacheStats
출력에서 사용할 수 있습니다.
세션 내에서 열려 있는 비활성 커서 닫기
MongoDB 5 부터 시작.0, 클라이언트 세션 내에서 생성된 커서는 해당 서버 세션 이 killSessions
명령으로 종료되거나 세션 시간이 초과되거나 클라이언트가 커서를 소진한 경우 닫힙니다. mongosh
에서 커서 반복하기를 참조하세요.
새 validateDBMetadata
명령
MongoDB 5.0은 validateDBMetadata
명령을 추가합니다. 5} 명령은 데이터베이스 또는 컬렉션의 저장된 메타데이터가 특정 API 버전 내에서 유효한지 validateDBMetadata
확인합니다.
성능 고려 사항
자세한 내용은 암시적 기본 쓰기 고려를 참조하세요.
MongoDB 5.0은 기본 쓰기 고려를 { w: "majority" }
로 변경합니다. 새로운 기본 쓰기 고려는 성능에 영향을 줄 수 있습니다. MongoDB는 계산된 대다수의 복제본 세트 노드가 디스크에 쓰기를 실행하고 지속한 후에만 쓰기를 승인하기 때문입니다.
애플리케이션이 성능에 민감한 쓰기에 의존하는 경우, 데이터 내구성 보장을 대가로 기본 쓰기 고려를 재정의할 수 있습니다. 이 설정을 재정의하려면 다음을 수행할 수 있습니다.
성능이 중요한 쓰기에 대해서는 개별 작업 수준에서 쓰기 고려를 설정합니다. 자세한 내용은 드라이버 설명서를 참조하세요.
setDefaultRWConcern
명령을 사용하여 기본 쓰기 고려를 명시적으로 설정합니다.
경고
쓰기 작업에서 { w: 1 }
쓰기 고려 (write concern)를 사용하는 경우 쓰기 작업이 완료되기 전에 프라이머리가 다시 시작되면 롤백 디렉토리는 oplog hole 이후에 제출된 쓰기를 제외할 수 있습니다.
local
기본 읽기 고려
MongoDB 5.0부터 "local"
는 기본 및 보조에 대한 읽기 작업에 대한 기본 읽기 우려 수준입니다.
이로 인해 필터를 사용하는 카운트 쿼리 및 적용 대상 쿼리의지연 시간이 크게 증가할 수 있습니다.
클러스터 전체 읽기 우려를 setDefaultRWConcern
로 설정하여 이 동작을 선택 해제할 수 있습니다.
스냅샷 기록 보존
MongoDB 5.0에서는 기본값 minSnapshotHistoryWindowInSeconds
가 300
으로 증가하여 성능에 부정적인 영향을 미칠 수 있습니다. 읽기 고려 "snapshot"
을 사용하지 않는 경우 모든 mongod
인스턴스에서 minSnapshotHistoryWindowInSeconds
매개 변수 값을 5
로 줄일 수 있습니다. 자세한 내용은 스냅샷 기록 보존을 참조하세요.
참고
샤딩된 클러스터를 실행하는 경우 config 서버에서 minSnapshotHistoryWindowInSeconds
를 변경하지 않습니다.
플랫폼 지원
최소 마이크로아키텍처
MongoDB 5.0은 다음과 같은 최소 마이크로아키텍처 요구 사항을 도입합니다.
중앙처리장치 | 최소 지원 마이크로아키텍처 |
---|---|
인텔 x86_64 | MongoDB 5.0에는 다음 중 하나가 필요합니다.
|
AMD x86_64 | MongoDB 5.0에는 AMD Bulldozer 이상이 필요합니다. |
팔 arm64 | MongoDB 5.0에는 ARMv8.2-A 이상이 필요합니다. |
MongoDB v5.0은 이러한 최소 마이크로아키텍처 요구 사항을 충족하지 않는 x86_64
또는 arm64
플랫폼에서 지원되지 않습니다.
자세한 내용은 x86_64 플랫폼 지원을 참조하십시오.
제거된 플랫폼
MongoDB 5.0에서는 다음 플랫폼에 대한 지원이 제거됩니다.
macOS 10.15
PPC64LE 아키텍처 기반RHEL 7 / CentOS 7 / Oracle 7
s390x 아키텍처의 SLES 12
MongoDB 5.0에서 지원되는 플랫폼 및 아키텍처의 전체 목록은 플랫폼 지원을 참조하세요.
호환성에 영향을 미치는 변경 사항
일부 변경 사항은 호환성에 영향을 줄 수 있으며 사용자가 조치를 취해야 할 수 있습니다. 호환성 변경 사항에 대한 자세한 목록은 MongoDB 5.0의 호환성 변경사항을 참조하세요.
업그레이드 절차
중요
기능 호환성 버전
4.4 배포에서 MongoDB 5.0으로 업그레이드하려면 4.4 배포에 featureCompatibilityVersion
로 설정된 4.4
이 있어야 합니다. 버전을 확인하려면 다음을 입력하세요.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
MongoDB 5.0으로 업그레이드하는 방법은 사용 중인 MongoDB 배포 관련 업그레이드 지침을 참조하세요.
5 으)로의 업그레이드에 대한 지침이 필요한 경우.0, MongoDB 전문 서비스 는 MongoDB 애플리케이션의 중단 없이 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다.
다운그레이드 고려 사항
MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.
예를 들어, 5.0 시리즈를 4.4 시리즈 배포로 다운그레이드할 수 있습니다. 하지만 4.4 시리즈 배포를 4.2 시리즈 배포로 한 단계 더 다운그레이드하는 것은 지원되지 않습니다.
다운로드
MongoDB 5 을(를) 다운로드합니다.0, MongoDB 다운로드 센터 로 이동합니다.
팁
다음도 참조하세요.
알려진 문제
이슈 신고하기
문제를 보고하려면 MongoDB GitHub 리포지토리 를 참조하세요. MongoDB 서버 또는 관련 프로젝트 중 하나에 대한 JIRA 티켓을 제출하는 방법에 대한 지침을 참조하세요.