이 페이지에서는 MongoDB 8.0 에 도입된 변경 사항과 새로운 기능에 대해 설명합니다.
MongoDB 8.0 은 메이저 릴리스이므로 MongoDB Atlas 와 온프레미스 배포 모두에서 지원됩니다. MongoDB 8.0 에는 MongoDB Rapid Release 7.1, 7.2 및 7.3 에 도입된 변경 사항이 포함되어 있습니다. 이 페이지에서는 해당 Rapid Release 및 MongoDB 8 에 도입된 변경 사항에 대해 설명합니다.0.
Latest Release (auto-upgrades) 옵션이 활성화된 경우 MongoDB Atlas 전용 클러스터(M10+)를 메이저 버전으로 자동 업그레이드합니다. MongoDB Atlas 를 수동으로 업그레이드 하려면 클러스터를 새 MongoDB 버전으로 업그레이드를 참조하고, Atlas 의 MongoDB 클러스터 버전에 대해 자세히 학습 보려면 Atlas 클러스터에서 사용하는 MongoDB 버전을 참조하세요.
Major 릴리스와 Rapid Release의 차이점에 학습 보려면 MongoDB 버전 관리를 참조하세요.
경고
과거 릴리스 제한 사항
아래의 중요 권고 사항은 일부 이전 MongoDB 버전에 영향을 미칩니다. 중요 권고 사항의 영향을 받는 기능을 기반으로 배포하는 경우 사용 가능한 최신 패치 릴리스로 업그레이드하세요.
이슈 | 영향을 받는 버전 |
|---|---|
8.0.0 - 8.0.3 | |
8.0.0 - 8.0.3 |
패치 릴리스
8.0.17 - 2025년 12월 19일
중요
MongoDB 8.0.17 CVE-2025-14847에 대한 수정 사항이 포함되어 있습니다.
MongoDB 보안 업데이트에 대한 최신 정보는 MongoDB 보안 게시판.
수정된 문제:
115508서버-: 압축되지 않은 메시지에 대해 최소 크기의 버퍼를 만듭니다.
8.0.16 - 2025년 11월 19일
수정된 문제:
서버-82688: 연결 수가 WiredTiger의
session_max제한을 초과할 때mongod가 충돌하게 하는 버그를 수정합니다.서버-95374: 복합 와일드카드 인덱스가 유니온 또는 쿼리 계획 중에 조건자를 잘못 푸시할 수 있는 문제를 해결합니다.
서버-103960: 필드 경로 에 대한 적절한 유효성 검사 검사를 구현합니다. 부분 수가
255를 초과하지 않는지 확인합니다.서버-108565: Time Series 컬렉션에 대한 대규모 쓰기 (write) 처리를 개선합니다.
서버-112467: 보류 중인 프록시 연결 수의 추적 및 보고 개선합니다.
서버-112520: time series 컬렉션 의 기존 버킷에 문서 삽입할 때 지리적 인덱스 에 쓰기 (write) 못하는 문제를 수정합니다.
WT-9575: 가장 오래된 트랜잭션 ID 보다 최신 업데이트가 있는 페이지가 제거 대기열에 추가되지 않던 문제를 수정합니다.
WT-15225: 새로 생성된 테이블 및
drop()작업에 대한EBUSY문제를 수정합니다.
8.0.15 - 2025년 10월 2일
중요
MongoDB 서버 쿼리 플래너의 Use-after-free로 인해 충돌 또는 정의되지 않은 동작이 발생할 수 있습니다.
설명: 권한이 부여된 사용자가 버퍼 과다 읽기를 유발하여 MongoDB 서버 충돌시킬 수 있습니다. 이 문제는 쿼리가 실행 동안 DDL 작업을 실행 때 발생할 수 있습니다.
CVSS 점수: 5.3
CWE: 416 무료 사용 후 사용
영향을 받는 제품 버전: MongoDB Server 8.2.0, 8.0.14 에서 8.0로, 7.0.24 에서 7.0로, 그리고 수명이 종료된 이전 메이저 버전.
수정된 문제:
서버-105873: QueryPlannerParams는 IndexCatalogEntry가 소유한 포인터를 유지해서는 안 됩니다.
8.0.14 - 2025년 9월 25일
수정된 문제:
서버-100448: 명령 등록은 스타트업 시 FCV 에 의존하지 않아야 합니다.
SERVER-103742: opWriteConcernCounters가 ServerStatus에 NUL 바이트를 불법적으로 포함할 수 있습니다.
SERVER-103841: 장기 취소 소스와 관련된 TransactionCoordinator의 메모리 누수
SERVER-105478: secondaryDelaySecs를 사용하여 적용자에 대한 적격 oplog 항목과 비적격 oplog 항목을 구분합니다.
WT-14140: 스윕되지 않은 활성 " 파일 :" dhandle에 불필요한 스키마 락 발생했습니다.
WT-14653: HS 업데이트 추적을 위한 조정에 로그/통계 추가
8.0.13 - 8월 21, 2025
수정된 문제:
SERVER-77172:
abortExpiredTransactions세션이 세션 체크아웃에 실패하면 스레드가 중단될 수 있습니다.SERVER-82180: 프라이머리 의 고정 사이즈 인서트는 세컨더리와 다른 자연스러운 순서를 가질 수 있습니다.
SERVER-91686: 현재 스레드의 명령 객체 출력하도록
mongod신호 처리기를 개선합니다.SERVER-94315: 데이터 정렬이 있는 샤드 필터링 버그입니다.
SERVER-102670: 순서가 잘못된 time-series 삽입 오류 처리
서버-107361: 버킷 카탈로그의 롤오버 결정이 대규모 측정값에 대한 혼합 스키마 확인하지 못할 수 있습니다.
8.0.12 - 7월 23, 2025
중요
CVE-2025-10061로 인해 8.0.12 이전의 MongoDB 8.0 에서는 권한이 부여된 사용자가 특수하게 조작된 $ 그룹 쿼리 통해 MongoDB Server 에서 충돌을 일으킬 수 있습니다. 이 취약점은 $ 그룹 작업 내에 추가 매개변수가 지정된 경우 특정 축적자 자 함수가 잘못 처리되는 것과 관련이 있습니다. 이 취약점은 반복적으로 트리거하다가 발생할 경우 서비스 거부로 이어질 수 있습니다.
이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
8.1.0 - 8.1.1
8.0.0 - 8.0.11
7.0.0 - 7.0.21
6.0.0 - 6.0.24
CVSS 점수: 6.5
CWE: CWE-20 잘못된 입력 유효성 검사
수정된 문제:
서버-95523: 업서트 DuplicateKey 재시도를 올바르게 처리하다 하지 못합니다.
서버-95524: 다중 문서 트랜잭션에서 업서트에 대한 중복 키 오류를 재시도하지 않습니다.
서버-97368: 1970이전의 데이터를 포함하는 time-series 컬렉션에서 TTL 삭제를 활성화합니다.
SERVER-99342: 처리량 프로빙 감소 지표 업데이트되지 않습니다.
SERVER-99616 $ 그룹 MONGO_verify를 적중할 수 있습니다.
WT-14391: HS를 열기 전에 제거 서버 실행 중인지 확인합니다.
8.0.11 - Jun 30, 2025
수정된 문제:
8.0.10 - Jun 04, 2025
중요
잘못된 KMIP 응답으로 인해 읽기 액세스 위반이 발생할 수 있습니다.
CVE-2025-12657로 인해 8.0.10 이전의 MongoDB 8.0 에서는 mongo 바이너리에 내장된 KMIP 응답 구문 분석기가 특정 잘못된 패킷에 대해 지나치게 관대하며, 이를 유효하지 않은 객체로 구문 분석할 수 있습니다. 나중에 이 객체 를 읽으면 읽기 액세스 위반이 발생할 수 있습니다.
이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
8.0.0 - 8.0.9
7.0.0 - 7.0.21
CVSS 점수: 5.9
CWE: CWE-754: 비정상적이거나 예외적인 상태에 대한 부적절한 검사
수정된 문제:
서버-101230: 커버리티 분석 결함 155126: 유효하지 않은 반복기 사용
SERVER-90495: 기본 순서 스캔 시 삭제된 recordId에서 시작 또는 재개 지원
서버-92806: 계획 캐시 항목이 $elemMatch를 사용한 인덱스 정렬을 무시합니다.
SERVER-96197: ExpressionContext의 _resolvedNamespaces가 다른 db에 있는 동일한 이름의 컬렉션을 구분할 수 없습니다.
서버-100785: 잘못된 reshardCollection 명령을 실행한 후 MongoDB config 서버 치명적으로 충돌합니다.
WT-13216: 컴팩트에서 캐시 제거 검사 사용 평가
8.0.9 - 2025년 5월 1일
중요
불완전한 데이터를 잘못 처리하여 mongos 새 연결을 수락하지 못할 수 있는 문제를 수정했습니다.
CVE-2025-6714로 인해 8.0.9 이전의 MongoDB 8.0 에서, MongoDB Server의 mongos 구성 요소는 불완전한 데이터를 잘못 처리하여 새 연결에 응답하지 않을 수 있습니다. 이 문제는 지정된 포트에서 HAProxy 을(를) 사용하는 mongos 에 대한 로드 밸런서 지원 으로 구성된 샤딩된 MongoDB 클러스터에 영향을 미칩니다.
이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
8.0.0 - 8.0.8
7.0.0 - 7.0.19
6.0.0 - 6.0.22
CVSS 점수: 7.5
CWE: CWE-834 과도한 반복 및 CWE-400 제어되지 않는 리소스 소비
수정된 문제:
8.0.8 - 4월 14, 2025
수정된 문제:
SERVER-103328 이중 유형에 대해 0이 아닌 RLE 후 건너뛰기의 BSONColumn 처리가 잘못되었습니다.
8.0.7 - 4월 14, 2025
중요
MongoDB Server $mergeCursors 단계로 인해 권한 에스컬레이션에 취약할 수 있습니다.
8.0.7 이전의 MongoDB 8.0 에서 CVE-2025-6713로 인해 $mergeCursors 단계의 부적절한 처리로 인해 권한이 없는 사용자가 특수하게 조작된 집계 파이프라인 활용하여 적절한 권한 부여 없이 데이터에 액세스 수 있습니다. MongoDB Server. 이로 인해 추가 권한 부여 부여 없이 데이터에 액세스 할 수 있습니다.
이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
8.0.0 - 8.0.6
7.0.0 - 7.0.18
6.0.0 - 6.0.21
CVSS 점수: 7.7
CWE: CWE-285: 부적절한 권한 부여
수정된 문제:
서버-106752 MongoDB Server
$mergeCursors단계로 인해 권한 에스컬레이션에 취약할 수 있습니다.
8.0.6 - 2025년 3월 19일
수정된 문제:
서버-87442 플랫폼 지원: Macos 14 소노마(ARM64 및 AMD64)에 대한 지원 추가
서버-89757 checkSbeStatus는 모든 노드를 확인해야 합니다.
SERVER-97911 ' _id in empty 배열 '이 포함된 쿼리는 _id 인덱스 힌트로 제공될 때 전체 컬렉션 탐색합니다.
서버-100901 ShardingTaskExecutor에서 tassert하도록 사용자 다이제스트 불변성을 완화합니다.
SERVER-101838 Revert SERVER-93101 + SERVER-91121
8.0.5 - 2월 20, 2025
중요
MongoDB 서버 OIDC 인증의 사전 인증 서비스 거부 취약점
CVE-2025-6709로 인해 8.0.5 이전의 MongoDB 8.0 에서, MongoDB Server OIDC 인증 사용할 때 JSON 입력의 특정 날짜 값을 부적절하게 처리하여 서비스 거부 취약점에 취약합니다. 이는 Mongo 셸 사용하여 악의적인 JSON 페이로드를 전송하여 불변성 장애 및 서버 충돌을 유발하는 현상을 재현할 수 있습니다.
이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
8.0.0 - 8.0.4
7.0.0 - 7.0.16
동일한 문제가 MongoDB Server v6.0에도 영향을 미치지만, 공격자는 인증 후에만 서비스 거부를 유도할 수 있습니다. 이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
6.0.0 - 6.0.20
CVSS 점수: 7.5
CWE: CWE-20: 잘못된 입력 유효성 검사
중요
MongoDB 에서 과도한 재귀를 통한 JSON 구문 분석의 사전 인증 서비스 Stack Overflow 오버플로 취약점
CVE-2025-6710로 인해 8.0.5 이전의 MongoDB 8.0 에서, MongoDB Server JSON 구문 분석 메커니즘으로 인해 Stack Overflow 에 취약할 수 있으며, 특별히 조작된 JSON 입력은 불필요한 수준의 재귀를 유발하여 과도한 스택 공간 소비를 초래할 수 있습니다. 이러한 입력으로 인해 Stack Overflow 로가 발생하여 서버 충돌하여 사전 인증이 발생할 수 있습니다.
이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
8.0.0 - 8.0.4
7.0.0 - 7.0.16
동일한 문제가 MongoDB Server v6.0에도 영향을 미치지만, 공격자는 인증 후에만 서비스 거부를 유도할 수 있습니다. 이 문제는 다음 MongoDB Server 버전에 영향을 미칩니다.
6.0.0 - 6.0.20
CVSS 점수: 7.5
CWE: CWE-674: 제어되지 않는 재귀
수정된 문제:
서버-51366 설치 프로그램에서 만든 폴더를 구성합니다.
서버-93497 사용자 캐시 무효화를 OpObserver에서 onCommit 핸들러로 이동합니다.
서버-95672 하위 배열이 포함된 배열 필드의 인덱스에 일부 결과가 포함되지 않습니다.
서버-97044 구역 샤딩 사용 중이거나 사용 중이던 컬렉션 을 리샤딩 또는 언샤딩하는 동안 변경 스트림이 "drop" 이벤트 잘못 출력할 수 있는 문제를 수정합니다.
서버-97860 고유한 다중 필드 인덱스 스캔할 때 Express 경로가 잘못된 결과를 반환할 수 있음
서버-99290 유효하지 않은 timeseries 버킷 컬렉션으로 인해 FCV 8가 완료되지 않습니다.0 업그레이드
서버-99345 FCV 8에 'timeseries' 옵션이 없는 time-series 버킷 컬렉션 샤딩 /이동을 방지합니다.0+
서버-106748 OIDC 인증 수락 시 사전 인증 서비스 거부
서버-106749 MongoDB 에서 과도한 재귀를 통한 JSON 구문 분석의 사전 인증 서비스 Stack Overflow 오버플로 취약점
WT-12846 컴팩트 워크가 체크포인트 flush_lock에서 EBUSY를 처리하는 방법 수정
8.0.4 - 2024년 12월 9일
8.0.3 - 2024년 10월 24일
중요
null 바이트의 부적절한 중화로 인해 MongoDB Server 에서 버퍼 오버 읽기가 발생할 수 있습니다.
MongoDB 8.0 및 8.0.1에서 권한이 부여된 사용자는 MongoDB Server 에서 잘못된 BSON 구성하는 특수하게 조작된 요청을 발행하여 충돌을 트리거하다 하거나 서버 메모리의 버퍼 오버 읽기 내용을 수신할 수 있습니다.
이 문제는 MongoDB Server 버전에 영향을 미칩니다.
5.0.0 - 5.0.29
6.0.0 - 6.0.18
7.0.0 - 7.0.14
8.0.0 - 8.0.1
수정된 문제:
서버-96419 null 바이트의 부적절한 중화로 인해 MongoDB Server 에서 버퍼 오버 읽기가 발생할 수 있습니다.
8.0.1 - 2024년 10월 9일
수정된 문제:
서버-76883 외부 소스 사용자에 대한 '역할이 존재하지 않음' 로그의 수다를 줄입니다.
SERVER-82221 listCollections 및 listIndexes에는 커밋 보류 네임스페이스가 포함되어야 함
SERVER-94635 세션 새로 고침 매개 변수를 구성할 수 있도록 합니다.
서버-95244 삽입을 초래하는 업서트 문이 클라이언트 샤드 에 직접 연결할 때 tassert 9146500 와 함께 실패할 수 있습니다.
WT-13409 __txn_checkpoint의 ret 하나가 처리되지 않습니다.
8.0.0 - 2024년 10월 2일
이 페이지의 나머지 부분에서는 MongoDB 8.0 에 도입된 변경 사항과 새로운 기능에 대해 설명합니다.
성능 개선
MongoDB 8.0 은 다음을 포함하되 이에 국한되지 않는 MongoDB 7.0의 상당한 성능 개선 사항을 도입합니다.
읽기 처리량 최대 36% 향상.
일반적인 웹 애플리케이션의 성능이 최대 32% 향상됩니다.
복제 중 최대 20% 더 빠른 동시 쓰기 .
참고
성능 향상 정도는 워크로드 및 데이터베이스 인스턴스의 구성에 따라 달라질 수 있습니다.
새로운 대량 쓰기 명령
MongoDB 8.0 부터는 새로운 bulkWrite 명령을 사용하여 한 번의 요청 으로 여러 컬렉션에 대한 많은 삽입, 업데이트 및 삭제 작업을 수행할 수 있습니다. 기존 db.collection.bulkWrite() 메서드에서는 한 번의 요청 으로 하나의 컬렉션 만 수정할 수 있습니다.
bulkWrite MongoDB 8.0 에서의 작업은 MongoDB 7.0에서의 대량 쓰기 (write) 작업보다 최대 56% 빠르게 실행 수 있습니다.
Time Series 블록 처리
버전 8.0 부터 시작됩니다. MongoDB 는 차단 처리 를 사용하여 특정 시계열 쿼리를 실행할 수 있습니다. 이 성능 향상은 개별 값이 아닌 데이터 "블록"에서 쿼리를 처리합니다. 차단 처리 는 Time Series 컬렉션으로 작업할 때 쿼리 실행 속도와 처리량 을 향상시킵니다.
MongoDB 7.0 또는 이전 버전에서 실행되는 Time Series 쿼리와 비교해 MongoDB 8.0 의 Time Series 데이터 블록 처리는 더 많은 데이터를 처리할 수 있으며, 경우에 따라 $group 작업 및 분석 쿼리에서 처리량이 200% 이상 향상될 수 있습니다.
Time Series 쿼리 가 차단 처리 를 사용하는지 확인하려면 계획 설명 출력의 explain.queryPlanner.winningPlan.slotBasedPlan.stages 필드 를 확인합니다.
학습 내용은 차단 처리를 참조하세요.
플랫폼 지원 업데이트
MongoDB 8.0 부터 새로운 MongoDB Server 버전(메이저 및 마이너)은 OS 벤더 에서 정의한 최소 운영 체제(OS) 마이너 버전을 지원 합니다. OS 벤더 에서 OS 마이너 버전을 더 이상 지원하지 않는 경우, MongoDB 는 다음 OS 마이너 버전을 지원 하도록 MongoDB Server 를 업데이트합니다. 자세한 내용은 MongoDB 플랫폼 지원 개선 사항을 참조하세요.
MongoDB 8.0 은 다음과 같은 최소 OS 마이너 버전을 지원합니다.
Red Hat Enterprise Linux 8.8
Red Hat Enterprise Linux 9.3
SUSE Linux 엔터프라이즈 서버 15 SP5
Amazon Linux 2023 버전 2023.3
로깅
MongoDB 8.0 부터는 작업의 총 지연 시간 이 아닌 MongoDB 가 해당 작업에 소요한 시간을 기준으로 느린 작업을 로그 하도록 데이터베이스 프로파일러를 구성할 수 있습니다. 즉, 잠금 및 흐름 제어 대기와 같은 요인은 작업이 느린 작업 임계값을 초과하는지 여부에 영향을 주지 않습니다.
이 변경 사항은 로깅 및 쿼리 분석에 대해 다음과 같은 개선 사항을 제공합니다.
느린 쿼리는 MongoDB 가 쿼리 를 처리 하는 데 소요된 시간을 기준으로 더 정확하게 기록됩니다.
Query 쿼리 프로파일러, Performance Advisor, Search Query Telemetry와 같은 쿼리 분석 도구는 대신 을(를)
workingMillis기반으로 느린 작업을durationMillis보고합니다. 이 변경 사항을 통해 문제가 있는 쿼리를 더 정확하게 볼 수 있습니다.느린 쿼리 로그 에는 실행 티켓에 대기 중인 시간에 대한 지표인
queues.execution.totalTimeQueuedMicros가 포함되어 있습니다. 이 지표는 작업이 완료되는 데 걸리는 시간으로 인해 느린지, 아니면 시작을 기다리는 데 소요되는 시간으로 인해 느린지 식별하는 데 도움이 됩니다.
자세한 내용은 db.setProfilingLevel()를 참조하세요.
Database Profiler
데이터베이스 프로파일러 에 대한 필터하다 를 지정하면 새로운 workingMillis 지표를 기반으로 작업을 로그 할 수 있습니다. workingMillis 및 durationMillis 를 모두 기반으로 작업을 로그 하고 각 지표를 다른 임계값으로 설정하다 수 있습니다.
집계
BinData 변환
MongoDB 8.0 부터는 $convert 연산자 를 사용하여 다음 변환을 수행할 수 있습니다.
String values to binData values
binData 값을 string 값으로
MongoDB 8.0 $toUUID에는 문자열을 UUID 값으로 변환하기 위한 간소화된 구문을 제공하는 새로운 헬퍼 표현식 도 포함되어 있습니다.
$queryStats
MongoDB 7.1 부터 $queryStats 단계는 기록된 쿼리에 대한 통계를 반환합니다.
변경 스트림 개선 사항
MongoDB 8.0 부터 $queryStats 는 변경 스트림에 대한 추적 및 보고 지표 를 개선합니다. 자세한 내용은 $queryStats Change Streams 동작을 참조하세요.
$rank 및 $denseRank 동작
MongoDB 8.0 부터 null 및 $denseRank 및 $rank sortBy 작업에서 누락된 필드 값은 순위를 계산할 때 동일하게 처리됩니다. 이 변경 사항은 denseRank 및 rank 의 동작을$sort 와 일관적인 .
보안
Queryable Encryption 범위 쿼리
MongoDB 8.0 부터 시작됩니다. Queryable Encryption 은 $lt, $lte, $gt 및 $gte 연산자를 사용하여 암호화됨 필드에 대한 범위 쿼리를 지원합니다. 자세한 내용 은 Queryable Encryption 에 대해 지원되는 작업을 참조하세요. 암호화됨 필드에 대한 범위 쿼리를 활성화 하려면 암호화 스키마 생성을 참조하세요.
로그 메시지에 대한 OCSF 스키마
MongoDB 8.0 부터는 감사 로그 메시지에 OCSF 스키마 를 지정할 수 있습니다. OCSF 스키마 는 로그 프로세서와 호환되는 표준화된 형식으로 로그를 제공합니다.
로그 메시지에 사용되는 스키마 를 설정하다 하려면 auditLog.schema 구성 파일 옵션을 사용합니다.
OCSF 형식의 로그 메시지 예시 는 OCSF 스키마 감사 메시지를 참조하세요.
수신 대기열
MongoDB 8.0 은 수신 허용 제어를 위한 새로운 대기열을 도입합니다. 네트워크에서 데이터베이스 로 들어가기를 기다리는 작업은 수신 대기열에 들어갑니다. 기본값 으로 대기열은 제한이 없으므로 MongoDB 대기열 없이 이 단계를 통해 모든 작업을 실행할 수 있습니다. 대기열 최대값을 특정 값으로 설정하면 동시 작업 수가 지정된 제한에 도달한 경우 이 단계에서 작업을 대기열에 추가할 수 있습니다.
샤딩
MongoDB 8.0부터는 샤딩된 클러스터의 샤드 간에 컬렉션을 샤딩 해제하고 샤딩되지 않은 컬렉션을 이동할 수 있습니다.
컬렉션 이동
MongoDB 8.0 부터는 moveCollection 명령을 사용하여 샤딩되지 않은 컬렉션 을 다른 샤드 로 이동할 수 있습니다.
자세한 내용은 이동 가능한 컬렉션 을 참조하세요. 시작하려면 컬렉션 이동을 참조하세요.
Change Streams이 있는 컬렉션 이동
MongoDB 부터 8.0 는movePrimary 변경 스트림이 있는 이벤트 컬렉션을 무효화하지 않습니다. 컬렉션이 새 샤드 로 이동한 후에도 변경 스트림은 컬렉션에서 이벤트를 계속 읽을 수 있습니다.
자세한 내용은 Change Streams를 참조하세요.
컬렉션 샤딩 해제
MongoDB 8.0 부터는 unshardCollection 명령 또는 sh.unshardCollection() 메서드를 사용하여 기존 샤딩된 컬렉션을 샤딩 해제할 수 있습니다. 이 작업은 컬렉션 의 모든 문서를 지정된 샤드 또는 데이터 양이 가장 적은 샤드 로 이동합니다.
자세한 내용은 샤딩되지 않은 컬렉션 을 참조하세요. To get started, see Unshard a Collection.
구성 샤드
MongoDB 8.0 부터는 일반적인 샤딩된 클러스터 메타데이터 외에 애플리케이션 데이터를 저장 하도록 config 서버 를 구성할 수 있습니다. config 서버 와 샤드 서버 기능을 모두 제공하는 mongod 노드 를 config 샤드 라고 합니다. 샤드 서버 기능 없이 독립형 --configsvr 로 실행되는 mongod 노드 를 전용 config 서버 라고 합니다.
전용 config 서버 를 config 샤드 로 실행 하도록 구성하려면 transitionFromDedicatedConfigServer 명령을 실행 합니다.
전용 config 서버 로 실행 config 샤드 를 구성하려면 transitionToDedicatedConfigServer 명령을 실행 합니다.
자세한 내용은 구성 샤드를 참조하세요. 시작하려면 구성 샤드로 샤드 클러스터 시작하기를 참조하세요. 복제본 세트 를 구성 샤드 가 있는 샤드 샤딩된 클러스터 로 변환하려면 복제본 세트를 내장된 구성 서버가 있는 샤드 클러스터로 변환을 참조하세요.
새로운 데이터베이스 명령
새로운 mongosh 메서드
serverStatus 지표
MongoDB 8.0 부터 serverStatus 의 출력에 다음과 같은 새로운 shardingStatistics 필드가 포함됩니다.
shardingStatistics.countTransitionToDedicatedConfigServerStartedshardingStatistics.countTransitionToDedicatedConfigServerCompletedshardingStatistics.countTransitionFromDedicatedConfigServerCompleted
MongoDB 7.1 에는 청크 마이그레이션에 대한 다음과 같은 새로운 샤딩 통계가 포함되어 있습니다.
샤드당 기본 청크
MongoDB 7.2부터 해시 샤드 키로 collection 을 샤딩하면 작업은 기본적으로 샤드당 하나의 청크를 생성합니다. 이전에는 이 작업이 기본적으로 두 개의 청크를 생성했습니다.
directShardOperations 역할
MongoDB 8.0 부터는 directShardOperations 역할 을 사용하여 샤드 에 대해 직접 명령을 실행해야 하는 유지 관리 작업을 수행할 수 있습니다.
경고
directShardOperations 역할 을 사용하여 명령을 실행하면 클러스터 가 올바르게 작동하지 않고 데이터가 손상될 수 있습니다. directShardOperations 역할 은 유지 관리 목적으로만 사용하거나 MongoDB 지원 의 지침 에 따라 사용하세요. 유지 관리 작업 수행이 완료되면 directShardOperations 역할 사용을 중지합니다.
dbhash 클러스터의 노드에서 직접 실행 가능
MongoDB 8.0.5부터는 샤드 에서 직접 dbHash 를 실행 수 있습니다. 노드 직접 명령의 전체 목록은 샤딩된 노드 직접 명령을 참조하세요.
샤드 클러스터에 대한 배출 커서 활성화
MongoDB 7.1 부터 mongos 는 클라이언트의 getMore 요청 이 exhaustAllowed 플래그를 설정할 때 배출 커서를 지원합니다. 이렇게 하면 클라이언트 가 단일 요청 에 대해 데이터베이스 서버 로부터 여러 개의 응답을 받을 때 샤딩된 클러스터의 쿼리 성능이 향상될 수 있습니다.
mongos 포트 범위
MongoDB 7.1 부터 mongos 는 [0, 65535]의 --port 값을 허용합니다. 자세한 내용은 --port 를 참조하세요.
부분 샤드 키로 쿼리
MongoDB 7.1 부터 findAndModify 및 deleteOne() 는 부분 샤드 키를 사용하여 샤드 컬렉션을 쿼리할 수 있습니다.
리샤딩 개선 사항
MongoDB 8.0 은 작업 리샤딩 작업의 성능을 크게 개선하여 작업 실행 시간을 크게 줄입니다.
또한 애플리케이션과 cluster가 필요한 요구 사항 및 제한 사항을 충족하는 경우 reshardCollection 명령을 사용하여 동일한 키에서 collection을 리샤딩하여 collection을 재배포할 수 있으며, 이는 다른 범위 마이그레이션 절차보다 훨씬 빠릅니다.
명령에 다음 옵션이 추가됩니다.
필드 | 설명 |
|---|---|
| 동일 키 리샤딩을 활성화합니다. |
샤드 클러스터의 자체 관리형 백업
MongoDB 7.1 부터 fsync 및 fsyncUnlock 명령은 샤드 클러스터에서 fsync 작업을 수행할 수 있습니다.
lock 필드 를 true 로 설정하다 한 상태에서 mongos 에서 실행 하면 fsync 명령은 저장 계층에서 디스크로 쓰기를 플러시하고 각 샤드 를 잠가 추가 쓰기를 방지합니다. 그런 다음 fsyncUnlock 명령을 사용하여 클러스터 를 잠금 해제할 수 있습니다.
이 기능 을 사용하면 mongodump을(를) 사용하여 샤딩된 클러스터의 자체 관리형 백업을 사용할 수 있습니다.
샤드 컬렉션의 UpdateOne 업서트 동작
MongoDB 부터는 7.1 updateOne() upsert: true 샤딩된 컬렉션 에서 와 함께 { 를 사용하는 경우 필터하다 에전체 샤드 키 를 포함할 필요 가 없습니다 .
샤드 컬렉션을 사용한 트랜잭션의 $lookup 단계
MongoDB 8.0 부터는 샤딩된 컬렉션 을 대상으로 하는 트랜잭션 내에서 $lookup 단계를 사용할 수 있습니다.
복제
과반수 쓰기 고려
MongoDB 8.0 부터 "majority" 쓰기 고려 (write concern) 고려를 사용하는 쓰기 (write) 작업은 대다수의 복제본 세트 구성원이 변경 사항에 대한 oplog 항목을 작성했을 때 승인을 반환합니다. 이렇게 하면 "majority" 쓰기 성능이 향상됩니다. 이전 릴리스에서는 이러한 작업이 대부분의 복제본 세트 멤버가 변경 사항을 적용한 후 기다렸다가 승인을 반환했습니다.
애플리케이션 이 { w: "majority" } 쓰기 (write) 작업에서 승인을 받은 직후에 세컨더리 에서 읽는 경우( 인과적 일관적인 적인 세션이 없는 경우) 쿼리 는 쓰기 (write) 작업의 변경 사항을 포함하지 않은 결과를 반환할 수 있습니다.
새로운 replSetGetStatus 지표
MongoDB 8.0 부터 replSetGetStatus 명령을 사용할 때 다음 지표 를 사용할 수 있습니다.
oplog 버퍼
MongoDB 8.0 부터 세컨더리는 각 배치 에 대한 oplog 항목을 병렬로 쓰기 (write) 하고 적용 합니다. 작성기 스레드는 프라이머리 에서 새 항목을 읽고 로컬 oplog 에 씁니다. 적용 스레드는 이러한 변경 사항을 로컬 데이터베이스 에 비동기적으로 적용합니다. 이 변경 사항은 세컨더리의 복제 처리량 을 증가시킵니다.
이렇게 하면 이제 하나가 아닌 두 개의 버퍼에 대한 지표 를 제공하므로 metrics.repl.buffer 에 호환성이 손상되는 호환성이 손상되는 변경 이 도입됩니다.
MongoDB 8.0 은 다음 서버 상태 지표 을 더 이상 사용하지 않습니다.
MongoDB 8.0 은 다음과 같은 서버 상태 지표 을 추가합니다.
업그레이드된 TCMalloc
MongoDB 8.0 부터 시작됩니다. MongoDB 는 스레드별 캐시 대신 CPU별 캐시 를 사용하는 업그레이드된 버전의 TCMalloc을 사용하여 메모리 조각화를 줄이고 스트레스가 높은 워크로드에 대한 데이터베이스 의 복원력을 향상시킵니다.
새로운 TCMalloc 버전은 Transparent Huge Pages에 대한 이전 프로덕션 권장 사항에 직접적인 영향을 미칩니다. 학습 내용 은 자체 관리 배포서버를 위한 TCMalloc 성능 최적화를 참조하세요.
serverStatus 지표
MongoDB 8.0 부터 다음과 같은 새로운 serverStatus 지표 가 tcmalloc 사용량에 대한 정보를 보고합니다.
일반 변경 사항
종료 성능
MongoDB 8.0 부터 Bulk.insert() 및 데이터 수집 워크로드의 성능이 향상될 수 있습니다. 그러나 이러한 워크로드를 실행 한 후 즉시 MongoDB 를 종료하면 예비 데이터가 디스크로 플러시되기 때문에 시간이 더 오래 걸릴 수 있습니다.
구성 샤드에 애플리케이션 데이터 저장
MongoDB 8.0 부터는 일반적인 샤딩된 클러스터 메타데이터 외에 애플리케이션 데이터를 저장 하도록 config 서버 를 구성할 수 있습니다. 그러면 config 서버 를 config 샤드 라고 합니다. 자세한 내용은 구성 샤드를 참조하세요.
압축 개선 사항
MongoDB 7.3 부터 compact 명령에는 압축을 진행하기 위해 복구할 수 있는 최소 저장 공간을 메가바이트 단위로 지정하는 새로운 freeSpaceTargetMB 옵션이 포함됩니다.
백그라운드 압축
MongoDB 8.0 부터는 새로운 autoCompact 명령을 사용하여 배경 압축 을 수행할 수 있습니다. 활성화하면 서버 는 각 컬렉션 및 인덱스 내의 여유 공간을 지정된 freeSpaceTargetMB 값 아래로 유지하려고 시도합니다.
드라이런 옵션
활성화하면 compact 명령은 압축 이 대상 컬렉션 에서 회수할 수 있는 공간의 추정치(바이트)를 반환합니다. dryRun 을(를) true(으)로 설정하다 한 상태에서 compact 을(를) 실행 하면 MongoDB 는 예상 값만 반환하고 어떤 종류의 압축 도 수행하지 않습니다.
동시 DDL 작업
MongoDB 7.1 부터 동일한 데이터베이스 에서 서로 다른 컬렉션을 대상으로 하는 여러 DDL 작업 을 실행 하면 MongoDB 가 해당 작업을 동시에 실행합니다.
이 변경 사항은 serverStatus locks 필드와 currentOp.locks 출력에 두 가지 새로운 유형을 추가합니다.
DDLDatabaseDDLCollection
mongos 애그리게이션 쿼리에 대한 데이터베이스 유효성 검사
MongoDB 7.2부터 mongos 배포에서 존재하지 않는 데이터베이스를 사용하려고 하는 집계 파이프라인 쿼리는 유효성 검사 오류를 반환합니다.
이전 버전에서는 이러한 애그리게이션 쿼리가 빈 커서를 반환했습니다.
DDL 작업
MongoDB 8.0 에서 클러스터 가 DDL 작업(예: 컬렉션 을 수정하는 작업 reshardCollection)을 실행하는 동안 샤드 를 추가하거나 제거 하면 샤드 를 추가하거나 제거하는 모든 작업은 동시 DDL 작업이 완료된 후에만 실행됩니다.
파이프라인 크기 제한 초과에 대한 오류 코드
MongoDB 7.1 부터 파이프라인이 파이프라인 단계 제한을 초과하면 애그리게이션 명령에서 오류가 발생합니다. 자세한 내용 은 단계 수 제한을 참조하세요.
getField 필드는 모든 문자열을 지원합니다.
MongoDB 7.2부터 field 연산자의 입력에 문자열로 해석되는 유효한 $getField 표현식 을 지정할 수 있습니다. 이전 버전에서는 field 문자열 상수만 허용합니다.
향상된 인덱스 빌드
MongoDB 7.1부터 오류 보고 속도가 빨라지고 회복 탄력성이 향상되어 인덱스 빌드가 개선되었습니다. 디스크 공간이 너무 부족하면 인덱스 빌드를 중지하는 새로운 indexBuildMinAvailableDiskSpaceMB 매개 변수를 사용하여 인덱스 빌드에 필요한 최소 사용 가능한 디스크 공간을 설정할 수도 있습니다.
다음과 같은 새로운 인덱스 빌드 지표 가 추가되었습니다.
자세한 내용은 인덱스 빌드를 참조하세요.
새로운 매개변수
auditConfig 매개변수
MongoDB 7.1 은 auditConfig 및 mongod 서버 인스턴스의 감사 구성에 mongos 대한 정보를 포함하는 클러스터 매개변수를 추가합니다.
defaultMaxTimeMS 매개변수
MongoDB 8.0 부터는 defaultMaxTimeMS 클러스터 매개변수를 사용하여 개별 읽기 작업이 완료되는 데 걸리는 기본값 시간 제한을 지정할 수 있습니다.
indexBuildMinAvailableDiskspaceMB 매개변수
MongoDB 7.1 은 인덱스 빌드에 필요한 최소 사용 가능한 디스크 공간을 설정하다 수 있는 indexBuildMinAvailableDiskSpaceMB 매개 변수를 추가합니다.
tcmallocEnableBackgroundThread Parameter
MongoDB 8.0 부터는 tcmallocEnableBackgroundThread 가 기본값 활성화됩니다. 이를 통해 MongoDB 는 주기적으로 메모리를 운영 체제에 다시 출시하다 할 수 있습니다.
새로운 쿼리 형태 및 쿼리 설정
MongoDB 8.0 에 새로운 쿼리 형태 가 도입되었습니다. 기존 쿼리 형태 의 이름이 계획 캐시 쿼리 형태 로 변경됩니다.
MongoDB 8.0 부터 새 쿼리 형태 에 대한 쿼리 설정을 추가할 수 있습니다. 쿼리 옵티마이저 쿼리 계획 중에 쿼리 설정을 추가 입력으로 사용하며, 이는 쿼리 형태 가 일치하는 쿼리 를 실행 하기 위해 선택한 계획에 영향을 줍니다.
쿼리 설정의 기능이 인덱스 필터 에 비해 개선되었습니다. 인덱스 필터도 MongoDB 8.0 부터 더 이상 사용되지 않으므로 사용하지 않는 것이 좋습니다.
쿼리 설정을 추가하려면
setQuerySettings명령을 사용합니다.쿼리 설정을 삭제 하려면
removeQuerySettings명령을 사용합니다.쿼리 설정을 조회 하려면 집계 파이프라인 에서
$querySettings단계를 사용합니다.쿼리 형태 를 차단 하려면 작업 거부 필터를 참조하세요.
거부된 쿼리에 대한 로그 상세도 수준을 설정하다 하려면
systemLog.component.query.rejected.verbosity매개변수를 사용합니다.
MongoDB 8.0 부터 queryShapeHash 가 다음 출력에 포함됩니다.
explain{ 필드 의 명령explain.queryShapeHash$queryStats필드 의queryShapeHash단계
MongoDB 8.0부터 기존 queryHash 필드 planCacheShapeHash라는 새 필드 에 중복됩니다. 이전 MongoDB 버전을 사용하는 경우 queryHash 필드 만 표시됩니다. 향후 MongoDB 버전에서는 더 이상 사용되지 않는 queryHash 필드 제거 될 예정이며, 대신 planCacheShapeHash 필드 사용해야 합니다.
numInitialChunks 옵션 제거
MongoDB 7.2부터 numInitialChunks 옵션이 shardCollection 명령에서 제거되었습니다. 빈 컬렉션에 해시 샤딩 사용할 때 서버 클러스터의 모든 샤드에 자동으로 청크를 생성합니다.
Parameter Filtering
MongoDB 8.0 부터 getParameter 명령은 setAt 필드 를 허용합니다. 이 필드 를 사용하여 allParameters: true 반환 문서 를 필터하다 하여 스타트업 또는 런타임에 설정하다 수 있는 매개변수만 표시할 수 있습니다.
고정 사이즈 컬렉션의 읽기 고려
MongoDB 부터는 고정 사이즈 8.0 "snapshot" 컬렉션에 읽기 고려 (read concern) 를 사용할 수 있습니다.
serverStatus 출력 변경
MongoDB 7.1 부터 serverStatus 명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
MongoDB 7.2 부터 serverStatus 명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
MongoDB 7.3 부터 serverStatus 명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
MongoDB 8.0 부터 serverStatus 명령 출력에 다음과 같은 새로운 지표 가 포함됩니다.
정렬 옵션
MongoDB 8.0부터 updateOne(), replaceOne() 및 update 에는 업데이트 적용하기 전에 문서를 정렬할 수 있는 선택적 sort 필드가 있습니다.
이전 릴리스에서는 findAndModify() 및 findOneAndUpdate() 메서드를 사용하여 사용자가 지정한 정렬 순서로 첫 번째 문서 를 업데이트 했습니다. 재시도 가능 쓰기를 지원하려면 이러한 메서드가 전체 문서 를 각 노드 의 특수 사이드 컬렉션 에 복사해야 하며, 이는 새로운 sort 옵션이 있는 updateOne() 메서드보다 비용이 더 많이 드는 작업입니다.
고유 명령에 대한 쿼리 인덱스 힌트 지정
MongoDB 7.1 부터는 distinct 명령에서 hint 필드 를 사용할 수 있으므로 쿼리의 인덱스 를 지정할 수 있습니다.
TTL Indexes
쿼리 계획 및 실행
Express 쿼리 단계
MongoDB 8.0 부터 제한된 쿼리 설정하다 ( _id 동등성 매치 포함)는 일반 쿼리 계획 및 실행을 건너뜁니다. 대신 이러한 쿼리는 다음 계획 단계 중 하나로 구성된 최적화된 인덱스 스캔 계획을 사용합니다.
EXPRESS_CLUSTERED_IXSCANEXPRESS_DELETEEXPRESS_IXSCANEXPRESS_UPDATE
쿼리 계획에 대한 자세한 내용은 Explain 결과를 참조하세요.
거부된 쿼리 계획 출력
MongoDB 8.0 부터 거부된 쿼리 계획에는 쿼리 의 find 부분만 포함됩니다. 이전 버전에서는 거부된 계획에 $group 와 같은 집계 단계가 포함될 수 있습니다. 쿼리 플래너가 성공적인 계획을 선택하는 데 이러한 집계 단계를 사용하지 않으므로 rejectedPlans 필드 에는 가장 적합한 계획을 선택하는 데 사용된 쿼리 부분만 포함됩니다.
또한 이 변경 사항은 거부된 계획의 executionStats 이 0이 아님을 보장합니다. 따라서 이제 거부된 계획이 검사한 문서 또는 키의 수와 같은 통계를 볼 수 있습니다.
거부된 쿼리 계획에 대한 자세한 내용은 explain.queryPlanner.rejectedPlans 를 참조하세요.
슬롯 기반 실행 엔진 비활성화
MongoDB 8.0부터는 MongoDB 해시되지 않은 경로의 해시 경로 접두사 가 있는 인덱스 가 있는 컬렉션(두 경로 모두 인덱스 내에 있음)에서 슬롯 기반 실행 엔진 자동으로 비활성화합니다.
다중 문서 삽입 작업 일괄 처리
MongoDB 8.0부터 트랜잭션 외부의 대량 삽입 작업이 더 이상 개별 oplog 항목을 생성하지 않을 수 있습니다. 대신 MongoDB 일반적으로 대량 삽입을 단일 항목으로 일괄 처리합니다. 각 문서에 대한 변경 스트림 insert 이벤트 동일한 clusterTime가 있습니다.
이 변경 사항은 다중 문서 삽입 작업의 성능을 향상시키고 여러 oplog 쓰기로 인해 발생할 수 있는 복제 지연 을 제거합니다.
OIDC ID 제공자는 발급자 공유 가능
MongoDB 8.0 부터 여러 ID 제공자(IDP)가 정의된 경우 audience 값이 각 발급자에 대해 고유한 한 oidcIdentityProviders 매개 변수는 중복 issuer 값을 허용합니다. 이는 버전 7.3 및 7 에서도 사용할 수 있습니다.0.
하위 파이프라인의 네임스페이스
MongoDB 8.0 부터 from 및 coll 필드의 올바른 사용을 보장하기 위해 $lookup 및 $unionWith 내부의 하위 파이프라인에 있는 네임스페이스의 유효성을 검사합니다.
자세한 내용은 $lookup 하위 파이프라인 및 $unionWith 하위 파이프라인을 참조하세요.
쿼리 플래너 최적화 시간
explain() 메서드는 이제 쿼리 플래너 최적화 시간에 대한 정보를 반환합니다. queryPlanner.optimizationTimeMillis 상태는 쿼리 플래너가 최적화에 소비한 시간을 밀리초 단위로 표시합니다.
업그레이드 절차
중요
기능 호환성 버전
7.0 배포서버 에서 MongoDB 8.0 으로 업그레이드 하려면 7.0 배포서버 에 featureCompatibilityVersion 이(가) 7.0 으)로 설정하다 되어 있어야 합니다. 버전을 확인하려면 다음을 수행합니다.
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
MongoDB 8.0 으로 업그레이드 하려면 사용 중인 MongoDB deployment 에 해당하는 업그레이드 지침을 참조하세요.
8.0로 업그레이드하는 방법에 대한 지침이 필요한 경우에 대비하여 MongoDB 전문 서비스 팀은 MongoDB 애플리케이션에 지장을 주지 않고 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다. 자세한 내용은 MongoDB 컨설팅을 참조하세요.
다운로드
MongoDB 8.0을 다운로드하려면 MongoDB 다운로드 센터로 이동하세요.
다운그레이드 고려 사항
단일 버전 다운그레이드만 지원됩니다.
MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.
예시 들어 8.0시리즈를 7.0시리즈 배포서버 로 다운그레이드할 수 있습니다. 그러나 해당 7.0시리즈 배포서버 6.0시리즈 배포서버 로 한 단계 더 다운그레이드하는 것은 지원되지 않습니다.
다운그레이드 정책
바이너리 다운그레이드는 MongoDB Community Edition 에서 지원되지 않습니다.
배포의 FCV MongoDB 의 빠른 출시하다 버전으로 또는 그 반대로 다운그레이드할 수 없습니다.
배포의 fCV를 업그레이드하거나 다운그레이드하는 경우 지원팀의 지원 없이는 Enterprise 배포의 2진법 버전을 다운그레이드할 수 없습니다.