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

MongoDB 4.4 릴리스 노트

이 페이지의 내용

  • 패치 릴리스
  • 풀타임 진단 데이터 캡처 요구 사항
  • 집계
  • 복제본 세트
  • 샤드 클러스터
  • 프로젝션
  • 트랜잭션
  • 정렬
  • 보안 개선 사항
  • 구조화된 로깅
  • 플랫폼 지원
  • Mongo 셸
  • 도구
  • 드라이버
  • 색인
  • 제거된 명령
  • Networking
  • 일반 개선 사항
  • 호환성에 영향을 미치는 변경 사항
  • 업그레이드 절차
  • 다운그레이드 고려 사항
  • 다운로드
  • 알려진 문제
  • 이슈 신고하기

경고

과거 릴리스 제한 사항

아래의 중요 권고 사항은 일부 이전 MongoDB 버전에 영향을 미칩니다. 중요 권고 사항의 영향을 받는 기능을 기반으로 배포하는 경우 사용 가능한 최신 패치 릴리스로 업그레이드하세요.

이슈
영향을 받는 버전
WT-7426
4.4.5
4.4.8
4.4.2 - 4.4.8
4.4.0 - 4.4.18 (ARM64 또는 POWER 시스템 아키텍처)
4.4.8 - 4.4.21 (Ops Manager 또는 Cloud Manager 클러스터의 증분 백업)
4.4.7

중요

MongoDB Server가 신뢰할 수 없는 연결에 성공할 수 있는 문제를 수정했습니다.

MongoDB 4 에서 CVE-2024-1351 로 인해.4 이전의 {3 4.4.29 --tlsCAFileCAFile 의 특정 구성에서 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: 부적절한 인증서 유효성 검사

  • SERVER-63865 클린 종료 후 독립형 시작 복구 중 누락된 인덱스 ID 처리

  • SERVER-81106 수신자 샤드가 복제 단계를 시작하기 전에 컬렉션 버전이 로컬로 유지될 때까지 기다리지 않음

  • SERVER-81878 시작 복구 중에 컬렉션 제거가 적용된 경우 startupRecoveryForRestore가 제대로 재생되지 않을 수 있음

  • 서버-82325 밸런서 라운드 중 구성 서버가 변하지 않을 수 있음

  • WT-11564 최신 트랜잭션 값이 체크포인트에 존재할 때만 읽도록 RTS를 수정함

  • 4.4.27에서 모든 JIRA 문제가 종료됨

  • 4.4.27 변경 로그

수정된 문제:

  • SERVER-50792 shardCollection 또는 refineCollectionShardKey에 대한 샤드 키 인덱스를 찾을 수 없는 경우 더 유용한 오류를 반환합니다.

  • SERVER-80021 double과 string 사이에서 $convert 왕복을 올바르게 수행함

  • SERVER-81106 수신자 샤드가 복제 단계를 시작하기 전에 컬렉션 버전이 로컬로 유지될 때까지 기다리지 않음

  • SERVER-81966 새로 고침하는 동안 이전 ChunkMap 인스턴스 수정을 방지합니다

  • WT-10424 삭제된 항목이 많으면 cursor::search_near 성능이 저하됨

  • 4.4.26에서 모든 JIRA 문제가 종료됨

  • 4.4.26 변경 로그

수정된 문제:

  • 서버-76299 세컨더리의 serverStatus에서 writeConflicts 보고

  • SERVER-78828 정렬하는 동안 LDAP 호스트 타이밍 데이터가 일관되지 않을 수 있음

  • WT-11031 체크포인트에서 시간 창 정보가 없는 테이블을 건너뛰도록 RTS를 수정함

  • SERVER-70973 더 이상 사용 가능한 샤드가 없을 때 밸런서가 컬렉션 반복을 중지해야 함

  • SERVER-71627 캐시된 수집 경로 정보를 새로 고치면 청크가 100만 개 있는 클러스터의 경우 모든 클라이언트 요청이 심각하게 차단됨

  • SERVER-78813 lastCommitted optime이 null인 소진 커서로 커밋 지점 전파가 무기한 실패함

  • WT-8570 복구 중 가장 오래된 ID를 늘리지 않음

  • WT-10449 기록 저장소에 기록할 업데이트가 없으면 업데이트 체인을 저장하지 않음

  • 4.4.25에서 모든 JIRA 문제가 종료됨

  • 4.4.25 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

수정된 문제:

  • SERVER -68122 초기 동기화 중 컬렉션 WiredTiger 구성 문자열 복제 조사

  • SERVER-71759 dataSize 명령이 반환되지 않음

  • SERVER-72222 샤딩된 클러스터의 결과가 병합될 때 단일 축소 최적화가 적용된 MapReduce가 실패함

  • SERVER-72535 샤딩된 클러스터를 사용하면 대체 케이스를 사용하여 'admin', 'local', 'config' 데이터베이스를 생성할 수 있음

  • SERVER-70235 v4.2-v.4.4에서 범위 삭제 문서를 만들지 않음. 컬렉션 UUID 불일치 시 업그레이드.

  • WT-9599 차단 관리자에서 fallocate를 호출하기 위해 핫 백업 락 획득

  • 4.4.19에서 모든 JIRA 문제가 종료됨

  • 4.4.19 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

수정된 문제:

  • SERVER-66433 5.1 이전 버전으로 백포트할 때 겹치는 범위 삭제 완료를 기다리는 백포트 기한

  • SERVER-65821 커밋/중단 결정을 지속한 적 없는 트랜잭션이 준비된 경우 setFCV 중 교착 상태가 발생함

  • SERVER-65131 기회주의적 읽기 타깃팅을 비활성화함(헤지된 읽기 (hedged read) 제외)

  • SERVER-62272 컬렉션에 스키마 유효성 검사를 추가하면 실패한 문서의 청크 마이그레이션을 방지할 수 있습니다.

  • SERVER-54900 네트워킹 호출을 차단하면 동기화 소스 확인이 무기한 지연될 수 있음

  • 4.4.15에서 모든 JIRA 문제가 종료됨

  • 4.4.15 변경 로그

수정된 문제:

  • SERVER-64983 TransactionParticipant::_resetTransactionState에서 WT 트랜잭션을 롤백하기 전에 클라이언트 락 해제

  • SERVER-62229 recoverFromOplogAsStandalone=true인 상태에서 인덱스 빌드 항목 적용 시 생기는 불변성을 수정함

  • SERVER-60412 호스트 메모리 제한 검사에서 cgroups v2를 지원하지 않음

  • SERVER-55429 수신기가 겹치는 범위를 정리하지 않는 경우 마이그레이션을 일찍 중단

  • WT-8924 행 저장소에서 충돌을 확인할 때 삽입 목록이 있는 경우 디스크 시간 창을 확인하지 않음

  • 4.4.14에서 모든 JIRA 문제가 종료됨

  • 4.4.14 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

  • WT-8395 4.4.3 및 4.4.4에서 4.4.8+ 밀 5.0.2+로 업그레이드한 후 데이터의 일관성이 없음

  • SERVER-60326 X509 인증서에 빈 주체 이름이 있는 경우 Windows Server가 시작되지 않음

  • SERVER-60310 OCSP 응답 유효성 검사는 관련 없는 인증서의 상태를 고려하지 않아야 함

  • SERVER-59226 중단할 수 없는 것으로 표시된 프로필 세션을 사용하여 강등할 때 교착 상태가 발생함

  • 서버-56226 [v4.4] 청크 마이그레이션의 커밋을 방지하기 위해 config.collections 항목에 'permitMigrations' 필드 도입

  • SERVER-51329 mongos 서버를 종료할 때 재시도할 수 없는 오류가 예상치 않게 발생함

  • SERVER-45953 oplog 판독기의 읽기 티켓 획득을 면제

  • 4.4.11에서 모든 JIRA 문제가 종료됨

  • 4.4.11 변경 로그

수정된 문제:

수정된 문제:

  • SERVER-57630: Ubuntu 18.04에서 OpenSSL 1.1.1에 대해 실행할 때 SSL_OP_NO_RENEGOTIATION을 활성화함

  • SERVER-34938: 단일 oplog 배치에 의해 캐시에 고정된 콘텐츠로 인해 세컨더리 속도 저하 또는 중단

  • WT-8005: 기록 저장소 항목이 해결되지 않은 상태로 남을 가능성이 있었던 준비 커밋 버그를 수정함

  • WT-7995: 체크포인트 가시성을 벗어날 수 없는 전역 가시성을 수정함

  • WT-7984: 체크포인트에서 데이터 페이지를 생략할 수 있는 버그를 수정함

  • 4.4.9에서 모든 JIRA 문제가 종료됨

  • 4.4.9 변경 로그

수정된 문제:

  • SERVER-58936: 고유 인덱스 제약 조건이 적용되지 않을 수 있음

  • SERVER-58258: 'replSetGetStatus' 응답에 'initialSync' 필드가 없음을 어설션하기 전에 초기 동기화가 상태를 지우도록 대기

  • SERVER-52906: 마이그레이션 실패 후 복제 인덱스를 롤백한 moveChunk가 샤드 키 인덱스 누락으로 인해 무기한 중단될 수 있음

  • WT-7837: wt_hs_insert_updates에서 업데이트 구조를 지워 어설션 실행 방지

  • WT-6729: stable의 활성 트랜잭션 검사로 롤백을 실행하기 전에 제거를 중지함

  • 4.4.8에서 모든 JIRA 문제가 종료됨

  • 4.4.8 변경 로그

수정된 문제:

  • SERVER-57476: oplog 슬롯을 유지하는 동안 작업이 준비 충돌로 차단되어 복제가 무기한 지연될 수 있음

  • SERVER-56054: 복제 작성기 스레드 풀의 minThreads 값을 0으로 변경

  • SERVER-53760: $unwind + $sort 파이프라인이 디스크에 유출할 때 많은 수의 파일 처리를 생성합니다.

  • SERVER-47699: 범위 삭제자가 사용하는 양보 유형을 YIELD_MANUAL에서 YIELD_AUTO로 변경

  • WT-7185: 강제 제거 중이거나 가장 오래된 트랜잭션은 중단하지 않아야 함

  • 4.4.7에서 모든 JIRA 문제가 종료됨

  • 4.4.7 변경 로그

수정된 문제:

수정된 문제:

수정된 문제:

  • SERVER-48471: 해시 인덱스가 멀티키로 잘못 표시되어 샤드 키 자격이 박탈될 수 있음

  • SERVER-50769: 서버가 expr{"expr":"_currentApplyOps.getArrayLength() > 0","file":"src/mongo/db/pipeline/document_source_change_stream_transform.cpp","line":535}} 후 다시 시작됨

  • SERVER-52919: 초기 동기화에 와이어 압축이 활성화되지 않음

  • WT-7109: 이전 버전과의 호환성을 위해 더 이상 지원되지 않는 구성 옵션 유지

  • WT-7117: 업데이트를 복원하는 동안 RTS가 온디스크 기본 업데이트보다 최신인 수정 사항을 건너뜀

  • 4.4.4에서 모든 JIRA 문제가 종료됨

  • 4.4.4 변경 로그

수정된 문제:

수정된 문제:

  • SERVER-48067: 고유하지 않은 키가 많은 고유 인덱스 빌드에 대한 메모리 사용량 감소

  • SERVER-48523: 변경 스트림을 재개하려고 할 때 oplog의 첫 번째 항목을 무조건 확인

  • SERVER-50365: 시간 초과할 수 없는 장기 실행 트랜잭션으로 인해 멈춤

  • SERVER-50394: mongod 감사 로그가 샤딩된 환경에서 DDL 작업을__system 사용자에게 속성으로 지정

  • SERVER-51041: 세컨더리 읽기에 대한 트랜잭션 시작 스로틀

  • SERVER-51120: SORT_MERGE를 사용하는 쿼리 찾기에서 데이터 정렬이 지정된 경우 결과가 잘못 정렬됨

  • 4.4.2에서 모든 JIRA 문제가 종료됨

  • 4.4.2 변경 로그

수정된 문제:

  • 서버-48531: 청크 분할기, 준비된 트랜잭션, 강등 스레드 간에 3 방향 교착 상태가 발생할 수 있음

  • 서버-48641: 세션이 체크아웃된 상태에서 쓰기 고려를 기다리는 MigrationDestinationManager로 인해 교착 상태 발생

  • SERVER-49546: FCV를 4.4로 설정하면 범위 삭제 작업을 한 번에 하나씩이 아닌 배치로 삽입해야 함

  • SERVER-49694: 샤딩된 클러스터에서 가장 가까운 읽기 또는 헤지된 읽기는 가까운 샤드 복제본으로 라우팅되지 않을 수 있습니다.

  • SERVER-50137: MongoDB가 3.4에서 생성된 oplog 항목으로 인해 불변 실패와 충돌

  • SERVER-50140: 초기 동기화가 동기화 소스의 비정상적인 재시작 후에도 지속될 수 없음

  • SERVER-50170: mongos에서 서버 선택 실패 수정

  • WT-6623: 복구 파일 스캔에서 연결 수준 파일 ID를 설정합니다.

  • 4.4.1에서 모든 JIRA 문제가 종료됨

  • 4.4.1 변경 로그

버전 4.4부터는 mongod 또는 mongos에서 풀타임 진단 데이터 캡처(FTDC) 스레드가 실패하면 원래 프로세스를 종료합니다. 가장 일반적인 오류를 방지하려면 mongod/mongos를 실행하는 사용자에게 storage.dbPath(mongod의 경우) 또는 systemLog.path(mongos의 경우) 내에 FTDC diagnostic.data 디렉토리를 만들 수 있는 권한이 있는지 확인합니다.

MongoDB 4.4는 $unionWith 집계 단계를 추가하여 여러 컬렉션의 파이프라인 결과를 단일 결과 세트로 결합하는 기능을 제공합니다.

자세한 내용은 $unionWith를 참조하세요.

버전 4.4부터 MongoDB는 사용자가 사용자 지정 집계 표현식을 정의할 수 있는 다음과 같은 새로운 연산자를 제공합니다.

이러한 새로운 연산자가 추가되면 mapReduce$where에 의존하는 대신 집계를 사용하여 사용자 지정 JavaScript 표현식을 작성할 수 있습니다.

참고

버전 4.4 이전에도 사용자 지정 기능 없이 $group, $merge 등과 같은 다른 집계 파이프라인 단계를 사용하여 다양한 맵 리듀스 표현식을 다시 작성할 수 있습니다.

자세한 내용은 집계 파이프라인으로 맵 리듀스를 참조합니다.

연산자
설명
사용자 지정 축적자 연산자의 결과를 반환합니다.
지정된 문자열 또는 바이너리 데이터 값의 콘텐츠 크기를 바이트 단위로 반환합니다.
지정된 문서의 크기를 바이트 단위로 반환합니다(예: bsontype Object). 단, BSON으로 인코딩된 경우.
사용자 지정 집계 표현식을 정의합니다.

지정된 표현식이 integer, decimal, double 또는 long로 해석되는 경우 부울 true을 반환합니다.

표현식이 다른 BSON 유형, null 또는 누락된 필드로 해석되는 경우 부울 false를 반환합니다.

지정된 입력에서 일치하는 문자열의 첫 번째 인스턴스를 바꿉니다.
주어진 입력에서 일치하는 문자열의 모든 인스턴스를 대체합니다.

MongoDB 4.4부터 시작됩니다:

  • $out는 다른 데이터베이스의 컬렉션에 출력할 수 있습니다. 이전 버전에서는 $out 집계가 실행되는 동일한 데이터베이스 데이터베이스의 컬렉션에만 출력할 수 있습니다.

  • $out은 클러스터의 모든 노드에 featureCompatibilityVersion4.4 이상으로 설정되어 있고 읽기 설정이 세컨더리 읽기를 허용하는 경우에만 복제본 세트 세컨더리 노드에서 실행할 수 있습니다. 드라이버에 언제 지원이 추가되었는지는 드라이버 설명서에서 확인하세요.

MongoDB 4.4( 및 4.2.4 버전에서도 사용 가능)부터 $indexStats 출력에는 다음 필드가 포함됩니다.

필드
설명
해당되는 경우 샤드의 이름입니다.
인덱스 사양 문서
인덱스가 현재 작성 중인지 여부를 나타내는 부울 플래그입니다.

MongoDB 4.4부터 시작됩니다:

  • $merge는 다른 데이터베이스의 컬렉션에 출력할 수 있습니다. 이전 버전에서는 $merge 집계가 실행되는 동일한 데이터베이스의 컬렉션에만 출력할 수 있습니다.

  • $merge은 클러스터의 모든 노드에 featureCompatibilityVersion4.4 이상으로 설정되어 있고 읽기 설정이 세컨더리 읽기를 허용하는 경우에만 복제본 세트 세컨더리 노드에서 실행할 수 있습니다. 드라이버에 언제 지원이 추가되었는지는 드라이버 설명서에서 확인하세요.

$merge는 집계되는 동일한 컬렉션에 출력할 수 있습니다. $lookup과 같이 파이프라인의 다른 단계에 나타나는 컬렉션으로 출력할 수도 있습니다.

경고

집계되고 있는 동일한 컬렉션으로 $merge가 출력되면 문서가 여러 번 업데이트되거나 작업이 무한 루프될 수 있습니다. 이 동작은 $merge에서 수행한 업데이트가 디스크에 저장된 문서의 물리적 위치를 변경할 때 발생합니다. 문서의 물리적 위치가 변경되면 $merge는 이를 완전히 새로운 문서로 간주하여 추가 업데이트를 수행할 수 있습니다. 이 동작에 대한 자세한 내용은 핼러윈 문제를 참조하세요.

버전 4.4부터

MongoDB 4.4부터 $collStats는 출력에서 queryExecStats 필드를 인수 문서로 허용합니다. 이 필드를 제공하면 출력에 다음 필드가 반환됩니다.

collectionScans 필드에는 다음 필드가 포함된 내장된 문서가 포함되어 있습니다.

필드 이름
설명
total
collection 스캔을 수행한 총 쿼리 수를 제공하는 64비트 정수입니다. 이 총합은 테일 커서( tailable cursor)를 사용한 쿼리와 사용하지 않은 쿼리로 구성됩니다.
nonTailable

MongoDB 4.4부터 executionStatsallPlansExecution 모드에서 db.collection.explain().aggregate() 메서드를 실행하면 설명 출력에 나열된 각 파이프라인 단계nReturnedexecutionTimeMillisEstimate이 포함됩니다.

MongoDB 4.4부터는 초기 동기화를 수행하는 보조가 일시적 (즉, 다음과 같은) 이유로 동기화 프로세스가 중단된 경우 동기화 프로세스를 재개하려고 시도할 수 있습니다. 임시) 네트워크 오류, 컬렉션 삭제 또는 컬렉션 이름 변경 등이 있습니다. 또한 동기화 원본은 다시 시작 가능한 초기 동기화를 지원하기 위해 MongoDB 4.4를 실행해야 합니다. 동기화 소스가 MongoDB 4.2 이하 버전을 실행하는 경우, 보조 소스는 일시적이지 않은 네트워크 오류가 발생한 것처럼 초기 동기화 프로세스를 다시 시작해야 합니다.

기본적으로 보조 동기화는 24시간 동안 초기 동기화를 다시 시도합니다. MongoDB 4.4는 보조 서버가 초기 동기화를 재개하려고 시도하는 시간을 제어하기 위해 initialSyncTransientErrorRetryPeriodSeconds 서버 매개변수를 추가했습니다. 보조 서버가 구성된 기간 동안 초기 동기화 프로세스를 성공적으로 재개할 수 없는 경우 복제 세트에서 새로운 정상 소스를 선택하고 초기 동기화 프로세스를 처음부터 다시 시작합니다.

MongoDB 4.4 이전 경우 세컨더리는 프로세스 중에 오류가 발생하면 전체 초기 동기화를 다시 시작합니다.

MongoDB 4.4부터 소스에서 동기화하면 세컨더리 동기화에 연속적인 oplog 항목 스트림이 전송됩니다.

MongoDB 4.4 이전에는 세컨더리가 소스에서 동기화를 요청하고 응답을 기다리는 방식으로 oplog배치의 일괄 처리를 가져왔습니다. 이를 위해서는 각 배치의 oplog 항목에 대해 네트워크 왕복이 필요했습니다. MongoDB 4.4는 스트리밍 복제를 비활성화하고 이전 복제 동작을 사용하기 위한 oplogFetcherUsesExhaust 시작 매개변수를 추가합니다.

자세한 내용은 스트리밍 복제를 참조하세요.

Mongo 4.4부터 컬렉션의 롤백 디렉터리 이름은 컬렉션 네임스페이스가 아닌 컬렉션의 UUID를 따라 지정됩니다.

<dbpath>/rollback/20f74796-d5ea-42f5-8c95-f79b39bad190/removed.2020-02-19T04-57-11.0.bson

자세한 내용은 데이터 롤백을 참조하세요.

다음 기준이 모두 충족되는 경우에만 mongod에서 oplog 항목을 제거하는 최소 시간 수를 지정하여 oplog 항목을 보존할 수 있습니다.

  • oplog가 구성된 최대 크기에 도달했습니다.

  • oplog 항목이 호스트 시스템 시계를 기준으로 구성된 시간보다 오래된 경우

기본적으로 MongoDB는 최소 oplog 보존 기간을 설정하지 않으며, 설정된 최대 oplog 크기를 유지하기 위해 가장 오래된 항목부터 자동으로 oplog를 잘라냅니다.

mongod 시작 시 최소 oplog 보존 기간을 구성하려면 다음 중 하나를 수행하십시오.

실행 중인 mongod 의 최소 oplog 보존 기간을 구성하려면 replSetResizeOplog 를 사용하십시오. mongod 실행 시 최소 oplog 보존 기간을 설정하면 시작 시 설정된 모든 값이 재정의됩니다. 서버를 다시 시작해도 변경 사항을 유지하려면 해당 구성 파일 설정 또는 명령줄 옵션의 값을 업데이트해야 합니다.

중요

oplog는 구성된 시간 동안 oplog 항목을 유지하기 위해 제한 없이 늘릴 수 있습니다. 하지만 이로 인해 쓰기의 양이 많아지고 보유 기간이 늘어나며 시스템 디스크 공간이 줄어들거나 고갈될 수 있습니다.

다음도 참조하세요.

MongoDB 4.4부터 복제본 세트 세컨더리의 느린 oplog 애플리케이션 로그는 slowOpSampleRate의 영향을 받습니다. 이전 버전에서는 MongoDB가 샘플 속도에 관계없이 모든 느린 oplog 항목을 기록합니다.

slowOpSampleRate 프로파일링하거나 기록해야 하는 저속 작업의 비율을 지정합니다.

참고

featureCompatibilityVersion 4.4 이상이 필요합니다.

복제본 mongod 세트 또는 샤딩된 클러스터의 각 4.4 에는 복제본 세트 멤버 간에 인덱스 빌드를 동시에 시작할 수 있도록 featureCompatibilityVersion 이 이상으로 설정되어 있어야 합니다 .

복제본 세트 또는 샤딩된 클러스터에서 인덱스 빌드가 데이터를 보유한 모든 복제본 세트 멤버에서 동시에 진행됩니다. 샤딩된 클러스터의 경우 인덱스 빌드는 인덱싱되는 컬렉션에 대한 데이터가 포함된 샤드에서만 발생합니다. 프라이머리에는 인덱스를 사용할 준비가 된 것으로 표시하기 전에 빌드를 완료해야 하는 자신을 포함한 최소한의 데이터 보유 voting 멤버(즉, 쿼럼 커밋)가 필요합니다.

기본적으로 인덱스 빌드는 데이터를 보유한 모든 투표 멤버의 쿼럼 커밋을 사용합니다. 기본이 아닌 쿼럼 커밋을 사용하여 인덱스 빌드를 시작하려면 MongoDB 4.4는 commitQuorum 매개변수를 createIndexes또는 해당 셸 헬퍼 db.collection.createIndex()db.collection.createIndexes()로 추정합니다.

진행 중인 인덱스 빌드에 필요한 쿼럼을 수정하기 위해 MongoDB 4.4에 새로운 setIndexCommitQuorum 명령이 도입되었습니다.

자세한 내용은 복제된 환경에서의 인덱스 빌드 를 참조하세요.

MongoDB에서 시작하기 4.4, replSetReconfig 명령은 대다수의 투표 구성원이 성공을 반환하기 전에 복제본 구성을 설치할 때까지 기다립니다. 투표 멤버는 중재자를 포함하여 members[n].votes1모든 복제본 멤버입니다. 첫째, 작업은 기본 구성에 구성을 설치하기 전에 현재 구성이 커밋될 때까지 기다립니다. 그런 다음 투표 멤버의 과반수가 구성을 설치할 때까지 기다렸다가 성공적으로 반환합니다. 자세한 내용은 재구성은 대다수의 구성원이 복제본 구성을 설치할 때까지 대기를 참조하세요.

replSetReconfig는 기본적으로 대다수의 투표 노드가 구성을 설치할 때까지 무기한 기다립니다. MongoDB 4.4 또한 선택적 maxTimeMS 매개변수를 replSetReconfig 에 추가하여 작업이 성공적으로 반환될 때까지 대기할 최대 시간을 지정합니다.

MongoDB 4.4부터 replSetReconfig 명령을 사용하면 한 번에 1개 이하의 voting 노드를 추가하거나 제거할 수 있습니다. 여러 투표 노드를 추가하거나 제거하려면 일련의 replSetReconfig 또는 rs.reconfig() 작업을 실행하여 한 번에 하나의 노드를 추가하거나 제거합니다. 자세한 내용은 재구성을 통해 한 번에 하나 이하의 투표권 있는 노드를 추가하거나 제거할 수 있음을 참조하세요.

replSetGetConfig명령은 프라이머리에서 실행할 때 CommitmentStatus: true라는 새 옵션을 지정할 수 있습니다. 이 옵션과 함께 실행하면 명령이 출력에 commitmentStatus 필드를 포함합니다. 이 출력 필드는 복제 세트를 다시 재구성할 수 있도록 복제 세트의 이전 재구성이 커밋되었는지 여부를 나타냅니다. 자세한 정보는 replSetGetConfig 명령을 참조합니다.

MongoDB 4.4는 복제본 세트 구성 문서term 필드를 추가합니다. 복제본 세트 멤버는 termversion을 사용하여 '최신' 복제본 구성에 관한 합의를 도출합니다. featureCompatibilityVersion(fCV) 설정: "4.4" 는 암시적으로 replSetReconfig를 수행하여 구성 문서에 term 필드를 추가하고 새 구성이 대다수의 복제본 세트 멤버에게 전파될 때까지 차단합니다. 마찬가지로 fCV : "4.2"로 다운그레이드하면 term 필드를 제거하기 위한 재구성이 암시적으로 수행됩니다.

MongoDB 4.4부터는 initialSyncSourceReadPreference 매개 변수를 사용하여 선호하는 초기 동기화 소스를 지정할 수 있습니다. 이 매개 변수는 setParameter 구성 파일 설정 또는 --setParameter 명령줄 옵션을 사용하여 mongod 스타트업 시에만 사용할 수 있습니다.

initialSyncSourceReadPreference 다음과 같은 읽기 설정 (read preference) 모드를 지원합니다.

복제본 세트가 chaining를 비활성화한 경우 기본 initialSyncSourceReadPreference 읽기 기본 설정 모드는 primary입니다.

initialSyncSourceReadPreference에는 태그 세트 또는 maxStalenessSeconds를 지정할 수 없습니다.

다음도 참조하세요.

버전 4.4부터 MongoDB는 선택 가능한 보조 멤버의 캐시를 가장 최근에 액세스한 데이터로 사전 워밍하기 위해 미러링된 읽기를 제공합니다. 미러링된 읽기를 사용하면 프라이머리는 수신한 오퍼레이션의 하위 집합을 미러링하여 선택 가능한 보조 노드의 하위 집합으로 전송할 수 있습니다. 보조 캐시를 미리 준비하면 선택 후 성능을 더 빠르게 복원하는 데 도움이 될 수 있습니다.

참고

클라이언트에 대한 프라이머리의 응답은 미러 읽기의 영향을 받지 않습니다. 미러링 된 읽기는 프라이머리에 의해 지정된 'fire-and-forget' 작업입니다. 즉 프라이머리는 미러링 된 읽기의 응답을 기다리지 않습니다.

MongoDB 4.4는 다음과 같은 미러링된 읽기 매개 변수를 추가합니다. 시작 시 setParameter 구성 파일 설정 또는 --setParameter 명령줄 옵션을 사용하거나 런타임에 setParameter 명령을 사용하여 매개 변수를 설정할 수 있습니다.

매개 변수
설명

미러링된 읽기의 samplingRatemaxTimeMS 설정을 지정합니다.

{ samplingRate: <float>, maxTimeMS: <int> }

samplingRate0이면 미러링된 읽기가 꺼집니다.

작업에서 필드를 포함을 지정하면 명령 serverStatus 및 해당하는 mongo 셸 메서드 db.serverStatus()mirroredReads 메트릭을 반환합니다.

db.runCommand( { serverStatus: 1, mirroredReads: 1 } )

또는

db.serverStatus( { mirroredReads: 1 } )

4.4부터 MongoDB는 refineCollectionShardKey 명령을 제공합니다. 새 명령을 사용하면 기존 키에 접미사 필드를 하나 이상 추가하여 컬렉션의 샤드 키를 정제할 수 있습니다. 컬렉션의 샤드 키를 정제하면 보다 세분화된 데이터 배포가 가능하며, 카디널리티가 부족하여 기존 키가 점보(즉, 분할할 수 없는) 청크가 되는 상황을 해결할 수 있습니다.

예를 들어 샤드 키가 { customer_id: 1 }인 기존 orders 컬렉션이 있을 수 있습니다. 샤드 키에 접미사 order_id 필드를 추가하여 { customer_id: 1, order_id: 1 }이 새 샤드 키가 되도록 샤드 키를 변경할 수 있으며, 이를 통해 customer_idorder_id 필드를 모두 기준으로 데이터를 배포할 수 있습니다.

refineCollectionShardKey 명령을 사용하려면 샤딩된 클러스터에 4.4 기능 호환성 버전(FCV)이 있어야 합니다. 자세한 내용은 refineCollectionShardKey 명령을 참조하세요.

참고

샤드 키를 세분화한 후에는 컬렉션의 모든 문서에 접미사 필드가 없는 경우가 있을 수 있습니다. 누락된 샤드 키 필드를 채우려면 누락된 샤드 키 필드를 참조합니다.

샤드 키를 세분화하기 전에 컬렉션의 모든 문서 또는 대부분의 문서에 접미사 필드가 있는지 확인하여 나중에 필드를 채울 필요가 없도록 하세요.

이전 버전에서는 샤드 키를 선택하면 해당 샤드 키를 수정할 수 없습니다.

중요

누락된 샤드 키

접미사로 샤드 키를 구체화하는 기능을 사용하면 컬렉션의 모든 문서에 접미사 필드가 없는 경우가 있을 수 있습니다. 버전 4.4부터 샤딩된 컬렉션의 문서에 샤드 키 필드가 누락될 수 있습니다. 이전 버전에서는 샤딩된 컬렉션의 모든 문서에 반드시 샤드 키 필드가 있어야 합니다. 자세한 내용은 누락된 샤드 키 필드를 참조하세요.

지연 시간을 최소화하기 위해 mongos 인스턴스는 기본적으로 헤지된 읽기(hedged read)를 사용할 수 있습니다. 헤지된 읽기를 사용하면 mongos 인스턴스는 쿼리된 각 샤드당 여러 멤버로 읽기 작업을 라우팅하고 샤드당 첫 번째 응답자로부터 결과를 반환합니다. 기본적으로 mongos 인스턴스는 헤지된 읽기 사용을 지원합니다. 헤지된 읽기에 대한 mongos 인스턴스 지원을 끄려면 readHedgingMode에 대해 mongos 매개변수를 설정하세요.

헤지된 읽기(hedged read)는 읽기 설정의 일부로 작업별로 지정됩니다. 비-primary 읽기 설정(read preference)은 헤지된 읽기를 지원합니다. 읽기 기본 설정 nearest는 기본적으로 헤지된 읽기를 지정합니다.

자세한 내용은 다음을 참조하세요.

매개 변수
설명
헤지된 읽기(hedged read)에 대한 mongos 인스턴스 지원을 활성화하거나 비활성화합니다.
읽기 작업을 헤지하기 위해 전송되는 추가 읽기의 최대 시간 제한(밀리초)을 지정합니다.

읽기 설정에 대해 헤지된 읽기를 지정하려면 헤지된 읽기 옵션이 도입된 MongoDB 4.4를 사용하세요. MongoDB 드라이버를 사용하여 설정하려면 드라이버 읽기 설정 API 설명서를 참조하세요.

다음 mongo shell 메서드는 지정된 읽기 설정에 대해 헤지된 읽기를 사용하도록 설정하는 헤지 옵션을 사용할 수 있습니다.

명령 serverStatus 및 해당 mongo shell 메서드 db.serverStatus()hedgingMetrics 를 반환합니다.

MongoDB 4.4는 명령 balancerCollectionStatusmongo 셸 헬퍼 메소드 sh.balancerCollectionStatus()를 제공하여 샤드된 컬렉션의 청크가 균형 잡혀 있는지 여부에 대한 정보를 반환합니다(즉, 이동할 필요가 없음). 이때 명령이 실행되거나 이동되어야 하는 시점을 기준으로 합니다. 이 명령을 사용하면 사용자는 초기 청크 생성 및 마이그레이션이 완료되었는지 확인할 수 있습니다.

MongoDB 4.4부터 mongos는 다음과 같은 새로운 기본 스타트업 동작을 추가합니다.

  • mongos 는 처음 들어오는 클라이언트 연결에 대해 온디맨드 방식으로 라우팅하는 대신 시작 시 샤딩된 클러스터의 라우팅 테이블을 미리 로드합니다.

  • mongos 는 수신되는 클라이언트 연결에 대해 온디맨드 방식으로 수행하는 대신 시작 시 호스트를 샤딩하도록 연결 풀을 미리 워밍합니다.

이 동작으로 인해 mongos 인스턴스가 시작되거나 재시작된 후 초기 클라이언트 연결을 더 빠르게 서비스할 수 있습니다. 특히 이를 통해 여러 mongos 인스턴스를 사용하는 사이트는 연결 설정 시 기다릴 필요 없이 해당 인스턴스에 대한 초기 클라이언트 요청 없이 필요에 따라 인스턴스를 다시 시작하거나 새 인스턴스를 추가할 수 있습니다.

라우팅 테이블 사전 로드와 연결 풀 사전 준비는 기본적으로 활성화되어 있습니다.

MongoDB 4.4는 이 동작을 제어하기 위해 다음과 같은 파라미터를 추가합니다.

movePrimary 또는 dropDatabase 명령을 실행한 후 더 이상 flushRouterConfig를 실행할 필요가 없습니다. 이제 이 두 명령은 실행 시 필요에 따라 샤딩된 클러스터의 라우팅 테이블을 자동으로 새로 고침합니다. 수동으로 flushRouterConfig 명령을 실행하는 것이 여전히 권장되는 특정 상황들은 flushRouterConfig 고려 사항에 설명되어 있습니다.

MongoDB 4.4부터 단일 해시 필드가 있는 복합 샤드 키를 사용하여 컬렉션을 샤딩할 수 있습니다. 4.4 이전에서 MongoDB는 해시된 필드가 있는 복합 샤드 키를 지원하지 않았습니다.

복합 해시 샤딩은 구역 샤딩과 같은 기능을 지원하며, 여기서 접두사(즉, 첫째) 해시되지 않은 필드는 구역 범위를 지원하는 반면 해시된 필드는 분할된 데이터의 보다 균등한 배포를 지원합니다. 예를 들어, 다음 작업은 구역 샤딩을 지원하는 복합 해시 샤드 키에서 컬렉션을 샤딩합니다.

sh.shardCollection(
"examples.compoundHashedCollection",
{ "fieldA" : 1, "fieldB" : 1, "fieldC" : "hashed" }
)

복합 해시 샤딩은 고정된 필드 증가와 관련된 데이터 배포 문제를 해결하기 위해 해시된 접두사가 있는 해시 샤드 키도 지원합니다. 예를 들어 다음 작업은 해시된 필드가 해시 샤드 키 접두사인 복합 해시 샤드 키에서 컬렉션을 샤딩합니다.

sh.shardCollection(
"examples.compoundHashedCollection",
{ "_id" : "hashed", "fieldA" : 1}
)

다음도 참조하세요.

MongoDB 4.4부터 다음과 같은 변경 사항은 페일오버 중 청크 마이그레이션 및 고아 문서 정리 복원력을 개선합니다.

  • 청크 마이그레이션 후 정리 대기 중인 청크 범위는 이제 config.rangeDeletions 컬렉션에 유지되고 샤드 전체에 복제됩니다. 페일오버가 발생하는 경우 샤드의 새로운 프라이머리는 config.rangeDeletions 컬렉션의 문서를 읽고 해당 범위 삭제를 재개합니다. 정리 대기 중인 범위를 설명하는 문서는 범위가 삭제된 후 config.rangeDeletions 컬렉션에서 삭제됩니다.

  • cleanupOrphaned 명령은 더 이상 샤드에서 고아 문서를 삭제하지 않습니다. 대신 cleanupOrphaned는 샤드에서 삭제되도록 예약된 고아 문서가 삭제될 때까지 기다립니다.

샤드의 범위 삭제를 일시 중지하려면 샤드의 프라이머리에서 disableResumableRangeDeleter 매개변수를 true로 설정하세요.

MongoDB 4.4부터 config 서버 프라이머리는 기본적으로 샤딩된 컬렉션의 샤드 간 인덱스 불일치가 있는지 확인합니다. serverStatus 명령은 config 서버 프라이머리에서 실행될 때 인덱스 불일치를 보고하기 위해 shardedIndexConsistency 필드를 반환합니다.

인덱스 일관성 검사를 구성하기 위해 MongoDB는 다음 매개 변수를 제공합니다.

매개 변수
설명
인덱스 일관성 검사를 사용하거나 사용하지 않도록 설정합니다.
config 서버의 기본 서버가 샤딩된 컬렉션의 인덱스 일관성을 확인하는 간격입니다.

MongoDB 4.4부터 진행 중인 removeShard 작업이 두 개 이상 있을 수 있습니다.

이전 버전에서는 다른 removeShard 작업이 진행 중인 경우 removeShard가 오류를 반환합니다.

4.4버전부터 MongoDB는 샤드 키 크기에 생기는 512바이트 제한을 제거합니다. MongoDB 4.2 이전 버전에서는 샤드 키가 512바이트를 초과할 수 없습니다.

4.4부터 find 또는 후속 getMore 명령이 쿼리된 샤드를 사용할 수 없어 부분적인 결과를 반환하는 경우 출력에 부울 플래그 partialResultsReturned가 포함됩니다.

마이그레이션하기에는 너무 큰 청크의 경우 MongoDB 4.4에서 시작합니다.

  • 새로운 밸런서 설정 attemptToBalanceJumboChunks를 사용하면 청크에 점보 레이블이 지정되지 않은 한 밸런서가 너무 커서 이동할 수 없는 청크를 마이그레이션할 수 있습니다. 자세한 내용은 크기 제한을 초과하는 밸런스 범위를 참조하세요.

  • moveChunk 명령은 너무 커서 이동할 수 없는 청크를 마이그레이션할 수 있도록 새로운 옵션 forceJumbo를 지정할 수 있습니다. 청크에는 점보라는 라벨이 붙을 수도 있고 그렇지 않을 수도 있습니다.

4.4부터 오래된 청크가 있는 경우 카탈로그 캐시는 라우터가 이전에 해당 청크를 가졌거나 현재 가지고 있는 샤드에 액세스할 때만 새로 고쳐집니다.

MongoDB 4.4 이전 버전에서는 오래된 청크가 있으면 컬렉션의 전체 청크 배포가 오래된 것으로 표시되어 샤드에 접속하는 모든 라우터가 샤드 카탈로그 캐시를 새로 고쳐야 했습니다. MongoDB 4.4에는 대상 샤드에 대해서만 카탈로그 캐시 새로 고침을 비활성화하고 이전 카탈로그 캐시 새로 고침 동작을 사용하기 위한 enableFinerGrainedCatalogCacheRefresh 시작 매개 변수가 추가되었습니다. enableFinerGrainedCatalogCacheRefresh 매개변수의 기본값은 true입니다.

버전 4.4(및 4.2.7)부터 MongoDB는 자동으로 system.sessions 컬렉션을 1024개 이상의 청크로 분할하고 클러스터의 샤드에 균일하게 청크를 분산합니다.

MongoDB 4.4부터 find()findAndModify() 프로젝션을 애그리게이션의 $project 단계와 일치시키기 위한 일환으로,

  • find()findAndModify() 프로젝션은 리터럴 및 집계 변수 사용을 포함하여 집계 표현식 및 집계 구문을 허용할 수 있습니다. 집계 표현식과 구문을 사용하여 새 필드를 프로젝션하거나 기존 필드를 새 값으로 프로젝션할 수 있습니다.

  • find()findAndModify() 프로젝션은 중첩된 형식(예: { field: { nestedfield: 1 } }점 표기법)을 사용하여 내장된 필드를 지정할 수 있습니다. 이전 버전에서는 점 표기법만 사용할 수 있습니다.

자세한 내용은 다음을 참조하세요.

MongoDB 4.4부터 $meta 연산자는 indexKey 메타데이터 검색을 위한 지원을 추가합니다. indexKey 메타데이터는 디버깅 용도로만 사용되며 애플리케이션 로직용으로 사용할 수 없습니다. 자세한 내용은 $meta를 참조하세요.

4.4버전부터 MongoDB는 { $meta: "textScore" }를 함께 사용할 때 다음과 같은 db.collection.find()를 변경합니다.

  • { $meta: "textScore" }를 사용하려면 쿼리 조건자에 $text 연산자를 지정해야 합니다.

    참고

    $text 자체 관리(비Atlas) 배포를 위한 텍스트 쿼리 기능을 제공합니다. MongoDB Atlas에서 호스팅되는 데이터의 경우, MongoDB는 향상된 전체 텍스트 쿼리 솔루션인 Atlas Search를 제공합니다.

  • textScore를 프로젝션할 필요 없이 결과 문서를 검색 관련성(예: { $meta: "textScore" }) 별로 정렬할 수 있습니다.

    In earlier versions, to include { $meta: "textScore" } expression in the sort(), you must also include the same expression in the projection.

  • { $meta: "textScore" } 표현식을 프로젝션과 정렬 모두에 포함하는 경우(예: db.collection.find(<$text search>, <projection>).sort(<sort>)), 프로젝션 및 정렬 문서에서 표현식에 대해 서로 다른 필드 이름을 가질 수 있습니다.

    In previous versions of MongoDB, if you include the { $meta: "textScore" } in both the projection and sort, you must specify the same field name in both places.

자세한 내용은 텍스트 점수 메타데이터 $meta: "textScore" 를 참조하세요. "textScore" 프로젝션 및 정렬의 예는 관련성 점수 예시를 참조하세요.

참조: 텍스트 검색 메타데이터{ $meta: "textScore" } 쿼리 요구 사항

MongoDB 4 부터 시작.4 기능 호환성 버전(fcv) "4.4" 을 사용하는 경우 트랜잭션이 크로스 샤드 쓰기 트랜잭션(write transaction)이 아닌 이상 다중 문서 트랜잭션 내에서 컬렉션과 인덱스를 생성할 수 있습니다.

트랜잭션 내에서 컬렉션을 만들 때

트랜잭션 내에서 인덱스를 생성하는 경우 다음을 수행할 수 있습니다.

  • 존재하지 않는 컬렉션에 인덱스를 만들 수 있습니다. 컬렉션은 작업의 일부로 생성됩니다.

  • 동일한 트랜잭션에서 이전에 생성된 새 빈 컬렉션에 인덱스를 생성할 수 있습니다.

  • 시스템 컬렉션에 대해 실행되면 db.collection.createIndex() 메서드가 실패합니다.

자세한 내용은 트랜잭션에서 컬렉션 및 인덱스 생성하기를 참조하세요.

MongoDB 4.4에는 트랜잭션 내에서 수집 및 인덱스 생성을 활성화(기본값)하거나 비활성화할 수 있는 새로운 매개변수 shouldMultiDocTxnCreateCollectionAndIndexes가 추가되었습니다. 샤딩된 클러스터에 대한 매개변수를 설정할 때는 모든 샤드에서 매개변수를 설정하세요.

트랜잭션 내에서 컬렉션이나 인덱스를 명시적으로 만들려면 트랜잭션 읽기 고려 수준이 "local"여야 합니다. 명시적 생성은 이제 끝났습니다.

다음도 참조하세요.

MongoDB 4.4부터 sort() 메서드는 이제 $sort 집계 단계와 동일한 정렬 알고리즘을 사용합니다. 이번 변경으로 인해 중복 값이 포함된 필드에 대해 sort()를 수행하는 쿼리는 해당 값에 대해 일관되지 않은 정렬 순서를 초래할 가능성이 훨씬 더 높습니다.

중복 값에 sort()를 사용할 때 정렬 일관성을 보장하려면 정렬에 고유한 값만 포함하는 추가 필드를 포함하세요.

이 작업은 정렬에 _id 필드를 추가하면 쉽게 수행할 수 있습니다.

자세한 내용은 Sort Consistency(정렬 일관성)을(를) 참조하세요.

MongoDB Enterprise 4.4는 MongoDB와 함께 사용할 플랫폼 속 Kerberos 구성의 유효성을 검사하고 Kerberos를 통해 종단 간 클라이언트 인증을 테스트하기 위한 새로운 mongokerberos 도구를 제공합니다. 실행되면 mongokerberos는 발생한 문제를 나타내는 보고서를 반환하고 문제를 해결할 가능성이 있는 조언을 제공합니다. mongokerberos는 MongoDB Enterprise에서만 사용할 수 있습니다.

버전 4.4부터 MongoDB는 기본적으로 OCSP(온라인 인증서 상태 프로토콜)를 사용하여 인증서 해지를 확인할 수 있도록 합니다. OCSP를 사용하면 정기적으로 Certificate Revocation List (CRL)를 다운로드하고 업데이트된 CRL로 mongod / mongos를 다시 시작할 필요가 없습니다.

버전 4.0 및 4.2에서는 Windows 또는 macOS에서 system certificate store 사용해야만 OCSP를 사용할 수 있습니다.

다음도 참조하세요.

OCSP 지원의 일부로 MongoDB 4.4는 Linux에서 다음을 지원합니다.

  • OCSP 스테이플링. OCSP 스테이플링을 사용하면 mongodmongos 인스턴스가 TLS/SSL 핸드셰이크 중에 클라이언트에 인증서를 제공할 때 OCSP 상태 응답을 인증서에 첨부하거나 '스테이플'합니다. 인증서에 OCSP 상태 응답을 포함함으로써 OCSP 스테이플링은 클라이언트가 제공된 인증서의 OCSP 상태를 조회하기 위해 별도의 요청을 할 필요가 없도록 합니다.

  • OCSP 필수 스테이플 확장. OCSP 필수 스테이플은 서버 인증서에 추가할 수 있는 확장으로, 클라이언트가 TLS/SSL 핸드셰이크 중에 인증서를 받을 때 OCSP 스테이플을 기대하도록 지시합니다.

MongoDB 4.4는 다음 OCSP 매개 변수를 추가합니다. setParameter 구성 파일 설정 또는 --setParameter 명령줄 옵션을 사용하여 시작 시 이러한 매개 변수를 설정할 수 있습니다.

매개 변수
설명
OCSP 지원을 사용하거나 사용하지 않도록 설정합니다.
스테이플링된 OCSP 상태 응답을 새로 고치기 전에 대기할 시간(초)을 지정합니다.
2} / 인스턴스가 mongod 대기해야 하는 최대 시간(초)을 지정합니다. / 인스턴스가 인증서에 대한 OCSP 상태 응답을 받기 위해 대기해야 하는 최대 시간을 지정합니다.mongos
2} / 이(가) 클라이언트 인증서를 mongod 확인하기 위해 대기하는 최대 시간(초)을 지정합니다. / 가 클라이언트 인증서를 확인할 때 OCSP 응답을 대기해야 하는 최대 초를 지정합니다.mongos

MongoDB 4.4부터 mongod / mongos(은)는 제시된 x.509 인증서가 mongod/mongos 시스템 시계상 30일 이내에 만료되는 경우 연결 시 경고를 로그합니다. 특히 mongod 또는 mongos에 대한 다음 연결은 x.509 인증서 만료 경고를 트리거할 수 있습니다.

경고 로그 메시지는 다음과 유사합니다.

<Timestamp> W NETWORK [connection] Peer certificate <Certificate Subject Name> expires...

만료가 임박한 클라이언트 x.509 인증서를 사전에 갱신하여 클러스터 연결을 유지하는 방법을 고려해 보세요.

MongoDB 4.4는 인증서 만료 경고 임계값을 제어하기 위한 tlsX509ExpirationWarningThresholdDays 매개 변수를 추가합니다. 경고를 비활성화하려면 매개 변수를 0으로 설정합니다. 전체 문서를 보려면 tlsX509ExpirationWarningThresholdDays를 참조하세요.

MongoDB 4.4(4.2, 4.0, 3.6버전 포함)는 CentOS 8 및 RHEL 8에서 TLS1.3을 지원합니다.

mongod, mongos 또는 mongoldap는 LDAP 서버에 대한 네트워킹 또는 인증 실패로 인해 사용자-DN(고유 이름) 매핑 중 하나를 평가할 수 없는 경우 오류를 반환합니다.

mongod, mongos또는 mongoldap은 연결 요청을 거부하고 나머지 매핑(있는 경우)을 확인하지 않습니다.

사용자를 DN 매핑에 지정하려면 다음을 참조하세요.

MongoDB 4.4부터 mongod / mongos 인스턴스는 모든 로그 메시지를 구조화된 JSON 형식으로 출력합니다. 로그 항목은 일련의 키-값 쌍으로 작성되며, 각 키는 "심각도" 와 같이 로그 메시지 필드 유형을 나타내고, 각 해당 값은 "정보" 과 같이 해당 필드 유형에 대한 관련 로깅 정보를 기록합니다.

여기에는 파일, 시스템 로그스탯아웃(표준 출력) 로그 대상으로 전송된 로그 출력과 getLog 명령의 출력이 포함됩니다.

이전에는 로그 항목이 일반 텍스트로 출력되었습니다.

JSON 형식의 다음 로그 메시지는 mongod가 수신 대기 중이며 연결 준비가 되었음을 나타냅니다.

{"t":{"$date":"2020-05-18T20:18:13.533+00:00"},"s":"I", "c":"NETWORK", "id":23015, "ctx":"listener","msg":"Listening on","attr":{"address":"127.0.0.1"}}
{"t":{"$date":"2020-05-18T20:18:13.533+00:00"},"s":"I", "c":"NETWORK", "id":23016, "ctx":"listener","msg":"Waiting for connections","attr":{"port":27001,"ssl":"off"}}

키-값 쌍을 사용한 구조화된 로깅을 사용하면 자동화된 도구 또는 로그 수집 서비스를 통해 효율적인 로그 분석이 가능하며 프로그래밍 방식의 로그 구문 분석이 더 강력하고 쉬워집니다.

MongoDB 구조화된 로깅으로 작업할 때 타사 jq 명령줄 유틸리티는 로그 항목을 쉽게 인쇄하고 강력한 키 기반 일치 및 필터링을 허용하는 유용한 도구입니다.

jq 는 오픈 소스 JSON 파서이며 Linux, Windows, macOS에서 사용할 수 있습니다.

로그 항목 구성 요소에 대한 자세한 검사와 명령줄 구문 분석 예시를 포함하여 구조화된 로깅에 대한 자세한 내용은 로그 메시지를 참조하세요.

MongoDB 4.4부터 ldapQueryPassword setParameter 명령은 문자열 또는 문자열의 배열을 허용합니다. 배열로 설정하면 한 비밀번호가 성공할 때까지 각 비밀번호를 시도합니다. 이 명령을 사용하면 MongoDB의 다운타임 없이 LDAP 계정 비밀번호 롤오버를 수행할 수 있습니다.

MongoDB 4.4는 다음 플랫폼에 대한 지원을 추가합니다.

MongoDB 4.4는 다음 플랫폼에 대한 지원을 제거합니다.

  • Amazon Linux 2013.03

  • s390x 아키텍처의 RHEL 6 / CentOS 6 / Oracle 6

  • Windows 7 / 서버 2008 R2

  • Windows 8 / Server 2012

  • Windows 8.1 / 서버 2012 R2

  • macOS 10.12

MongoDB 4.4에서 지원되는 플랫폼 및 아키텍처의 전체 목록은 플랫폼 지원에서 확인하세요.

MongoDB 4.4부터 mongo shell은 AWS IAM 자격 증명을 사용하여 AWS IAM 인증을 위해 구성된 MongoDB Atlas 클러스터에 인증하는 것을 지원합니다.

이 방식으로 인증하려면 새로운 MONGODB-AWS authentication mechanism이 사용되고 AWS 액세스 키 ID와 비밀 액세스 키를 제공해야 하며 이 ID는 연결 문자열 또는 --username--password 옵션을 통해 명령줄에서 지정할 수 있습니다.

또한 AssumeRole 요청을 사용할 때 임시 자격 증명을 통한 인증에 AWS 세션 토큰을 사용하는 경우 또는 Lambda와 같이 이 값을 지정하는 AWS 리소스로 작업하는 경우, AWS_SESSION_TOKEN authMechanismProperties 값을 사용하여 연결 문자열에 해당 세션 토큰을 제공하거나 --awsIamSessionToken 옵션을 통해 명령줄에 해당 세션 토큰을 제공해야 할 수 있습니다.

또는 Amazon Web Services 액세스 키 ID, 시크릿 액세스 키 또는 세션 토큰이 해당 AWS IAM 환경 변수를 사용하여 플랫폼에 정의된 경우 mongo 셸은 이러한 환경 변수 값을 사용하여 인증하므로 연결 문자열에 이를 지정할 필요가 없습니다.

사용에 대한 연결 문자열 인증 옵션MONGODB-AWS를 사용하여 Atlas 클러스터에 연결 예시를 참조하세요.

MongoDB 4.4부터 다음 도구에 대한 문서가 MongoDB Database Tools 프로젝트로 마이그레이션되었습니다.

MongoDB Database Tools는 Apache 라이선스, 버전 2.0을 사용합니다. 소스 코드는 mongodb/mongo-tools를 참조하세요.

참고

나열된 도구의 이전 버전에 대한 설명서는 해당 버전의 MongoDB 서버 매뉴얼을 참조하세요.

이전 문서로 가는 퀵 링크:

MongoDB Enterprise 4.4는 MongoDB와 함께 사용할 플랫폼 속 Kerberos 구성의 유효성을 검사하고 Kerberos를 통해 종단 간 클라이언트 인증을 테스트하기 위한 새로운 mongokerberos 도구를 제공합니다. 실행되면 mongokerberos는 발생한 문제를 나타내는 보고서를 반환하고 문제를 해결할 가능성이 있는 조언을 제공합니다. mongokerberos는 MongoDB Enterprise에서만 사용할 수 있습니다.

자세한 내용은 mongokerberos 참조 페이지를 확인하세요.

MongoDB 4 4부터 mongoreplay(이)가 MongoDB 패키징에서 제거되었습니다. mongoreplay 및 관련 문서는 mongodb-labs github 프로젝트로 마이그레이션되었습니다. mongodb-labs의 프로젝트는 실험용이며 MongoDB에서 공식적으로 지원하지 않습니다.

이전 문서에 대한 퀵 링크

커뮤니티 및 엔터프라이즈 에디션의 Windows MSI 설치 관리자에는 MongoDB Database Tools (mongoimport, mongoexport 등)가 포함되어 있지 않습니다. Windows용 MongoDB Database Tools를 다운로드하고 설치하려면 MongoDB Database Tools 설치하기를 참조하세요.

MongoDB 4.2 또는 이전 MSI 설치 관리자를 사용하여 Database Tools를 MongoDB 서버와 함께 설치했다면 이제 Database Tools를 별도로 다운로드해야 합니다.

MongoDB 4.4에는 단일 해시 필드로 복합 인덱스를 생성하는 기능이 추가되었습니다. MongoDB 4.2 이전 버전에서는 단일 필드 해시 인덱스만 지원했습니다.

다음 작업은 country_id에 복합 해시 인덱스를 생성합니다.

db.examples.createIndex( { "country" : 1, "_id" : "hashed" } )

복합 해시 인덱스를 사용하려면 featureCompatibilityVersion4.4로 설정되어 있어야 합니다.

다음도 참조하세요.

버전 4.4부터 MongoDB는 쿼리 플래너에서 인덱스를 숨기거나 숨김 해제하는 기능을 추가합니다. 쿼리 플래너에서 숨겨진 인덱스는 쿼리 계획 선택의 일부로 평가되지 않습니다.

플래너에서 인덱스를 숨기면 실제로 인덱스를 제거하지 않고도 인덱스 제거의 잠재적 영향을 평가할 수 있습니다. 영향이 부정적인 경우 제거된 인덱스를 다시 생성할 필요 없이 인덱스 숨기기를 해제할 수 있습니다. 또한 인덱스는 숨겨진 상태에서도 완전히 유지되므로 숨겨진 인덱스는 숨김을 해제하면 즉시 사용할 수 있습니다.

자세한 내용은 숨겨진 인덱스를 참조하세요.

다음은 숨겨진 인덱스를 지원하기 위해 MongoDB가 도입한 기능입니다.

dropIndexes 지정된 인덱스가 아직 빌드 중이면 dropIndexes가 진행 중인 빌드를 중지하려고 시도합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 제거하는 것과 동일한 효과가 있습니다. MongoDB 4.4 이전에서는 컬렉션에 진행 중인 인덱스 빌드가 있는 경우 dropIndexes가 오류를 반환했습니다. 이 동작은 db.collection.dropIndex()db.collection.dropIndexes() shell 헬퍼에도 적용됩니다.

진행 중인 관련 빌드 세트에서 특정 인덱스를 삭제하려면 인덱스 빌드가 완료될 때까지 기다렸다가 해당 인덱스를 dropIndexes 또는 해당 셸 헬퍼로 지정합니다.

자세한 설명서는 다음을 참조하세요.

db.collection.drop() 메서드와 drop 명령은 collection을 삭제하기 전에 대상 collection에서 진행 중인 인덱스 빌드를 모두 중단합니다.

복제본 세트 또는 샤드 복제본 세트의 경우 기본 인덱스에서 인덱스를 중단해도 보조 인덱스 빌드가 동시에 중단되지는 않습니다. MongoDB가 프라이머리 인덱스에서 지정된 인덱스에 대해 진행 중인 빌드를 중단하려고 시도하고 성공하면 연결된 abort oplog 항목을 생성합니다. 복제된 진행 중인 빌드가 있는 세컨더리 멤버는 인덱스 빌드를 커밋하거나 중단하기 전에 프라이머리에서 oplog 항목을 커밋하거나 중단할 때까지 기다립니다.

복제본 세트 또는 샤드 복제본 세트의 경우 기본 인덱스에서 인덱스를 중단해도 보조 인덱스 빌드가 동시에 중단되지는 않습니다. MongoDB가 프라이머리 인덱스에서 지정된 인덱스에 대해 진행 중인 빌드를 중단하려고 시도하고 성공하면 연결된 abort oplog 항목을 생성합니다. 복제된 진행 중인 빌드가 있는 세컨더리 멤버는 인덱스 빌드를 커밋하거나 중단하기 전에 프라이머리에서 oplog 항목을 커밋하거나 중단할 때까지 기다립니다.

db.dropDatabase() 메서드와 dropDatabase 명령은 데이터베이스를 제거하기 전에 대상 데이터베이스의 컬렉션에서 진행 중인 인덱스 빌드를 중단합니다. 인덱스 빌드를 중단하면 빌드된 인덱스를 제거하는 것과 동일한 효과가 있습니다.

MongoDB 4.4는 geoHaystack 인덱스 및 geoSearch 명령을 더 이상 사용하지 않습니다. 대신 $geoNear 또는 $geoWithin과 함께 2d 인덱스를 사용합니다.

MongoDB는 다음 명령과 mongo 셸 헬퍼를 제거합니다.

제거된 명령
제거된 도우미
대안
cloneCollection
db.cloneCollection()
  • mongoexportmongoimport를 사용하거나

  • 집계 파이프라인 $out 또는 $merge 단계를 사용합니다.

  • 드라이버를 사용하여 스크립트를 작성합니다.

planCacheListPlans
PlanCache.getPlansByQuery()
  • 집계 파이프라인 단계 $planCacheStats를 사용합니다.

  • mongo 셸 헬퍼 메서드 PlanCache.list()를 사용합니다. (버전 4.4부터 사용 가능)

planCacheListQueryShapes
PlanCache.listQueryShapes()
  • 집계 파이프라인 단계 $planCacheStats를 사용합니다.

  • mongo 셸 헬퍼 메서드 PlanCache.list()를 사용합니다. (버전 4.4부터 사용 가능)

MongoDB 4.4부터 mongodmongos는 기본적으로 TFO(TCP Fast Open) 연결을 지원합니다. TFO를 사용하려면 클라이언트와 mongod/mongos 호스트 컴퓨터가 모두 지원되어야 하며 TFO를 활성화해야 합니다.

Windows

다음 Windows 운영 체제에서 TFO를 지원합니다.

  • Microsoft Windows Server 2016 이상.

  • Microsoft Windows 10 업데이트 1607 이상.

macOS
macOS 10.11(El Capitan) 이상은 TFO를 지원합니다.
리눅스

Linux 커널 3.7 이상을 실행하는 Linux 운영 체제는 인바운드 TFO 연결을 지원할 수 있습니다.

Linux 커널 4.11 이상을 실행하는 Linux 운영 체제는 인바운드 및 아웃바운드 TFO 연결을 지원할 수 있습니다.

인바운드 및/또는 아웃바운드 TFO 연결을 지원하려면 /proc/sys/net/ipv4/tcp_fastopen 값을 설정합니다.

  • 아웃바운드 TFO 연결만 활성화하려면 1로 설정하세요.

  • 인바운드 TFO 연결만 활성화하려면 2로 설정하세요.

  • 인바운드 및 아웃바운드 TFO 연결을 사용하려면 3으로 설정합니다.

MongoDB 4.4는 TFO를 제어하기 위해 다음 매개 변수를 추가합니다.

매개 변수
설명

기본값: true(활성화됨)

인바운드 TFO 연결에 대한 지원을 활성화하거나 비활성화합니다. mongod/mongos

기본값: true(활성화됨)

Linux 운영 체제만 해당

mongod/mongos에서 아웃바운드 TFO 연결에 대한 지원을 활성화하거나 비활성화합니다.

기본값: 1024

대기 중인 TFO 연결의 대기열 크기를 제어합니다.

MongoDB 4.4는 serverStatusdb.serverStatus()의 출력에 다음 카운터를 추가합니다.

카운터
설명

Linux 한정

TFO에 대한 커널 지원을 나타냅니다.

수신 TFO 연결에 대한 운영 체제 지원을 나타냅니다.
발신 TFO 연결에 대한 운영 체제 지원을 나타냅니다.
mongod/mongos가 마지막으로 시작된 이후 mongod / mongos에 대해 허용된 수신 TFO 연결의 총 건수를 표시합니다.

TFO에 대한 전체 논의는 이 문서의 범위를 벗어납니다. TFO에 대한 자세한 내용은 다음 외부 리소스에서 확인하세요.

MongoDB가 특정 cursor.sort() 연산에 대한 정렬 순서를 얻기 위해 인덱스를 사용할 수 없는 경우 MongoDB는 데이터에 대해 블로킹 정렬을 수행해야 합니다. 차단 정렬은 MongoDB가 정렬에 대한 모든 입력 문서를 소비하고 처리해야 함을 나타냅니다. 차단 정렬은 컬렉션이나 데이터베이스에서 동시 작업을 차단하지 않습니다.

MongoDB 4.4 이전 버전의 MongoDB는 블로킹 정렬 작업에 32메가바이트 이상의 시스템 메모리가 필요한 경우 오류를 반환했습니다. MongoDB 4.4부터 블로킹 정렬 작업이 정렬 작업에 사용할 수 있는 시스템 메모리 제한을 100메가바이트로 늘립니다. 100메가바이트 이상의 시스템 메모리를 사용해야 하는 블로킹 정렬 작업의 경우 쿼리에서 cursor.allowDiskUse()를 지정하지 않는 한 MongoDB는 오류를 반환합니다(MongoDB 4.4에 새로 추가됨).

정렬 및 인덱스 사용에 대한 자세한 내용은 정렬 및 인덱스 사용을 참조하세요.

MongoDB 4.4는 find 명령에 새로운 옵션 allowDiskUse를 추가합니다. allowDiskUse: true를 사용하면 100메가바이트 메모리 제한을 초과하는 인덱싱되지 않은('블로킹') 정렬 작업을 처리할 때 작업에서 디스크의 임시 파일을 사용할 수 있습니다. MongoDB 4.4 이전에는 정렬을 처리하는 동안 메모리 제한을 초과하면 블로킹 정렬을 사용하는 find 작업이 실패했습니다.

cursor.sort()를 사용하는 db.collection.find() 셸 메서드의 경우 MongoDB 4.4는 cursor.allowDiskUse() 커서 수정자를 추가합니다.

MongoDB가 인덱스를 사용하여 지정된 정렬을 충족할 수 있거나 또는 차단 정렬에 100MB 미만의 메모리가 필요한 경우 allowDiskUsecursor.allowDiskUse()는 영향을 미치지 않습니다.

MongoDB 드라이버를 통해 실행한 쿼리에 대해 allowDiskUse를 활성화하는 방법에 대한 지침은 선호하는 MongoDB 4.4 호환 드라이버에 대한 문서를 참조하세요.

MongoDB 4.4부터

샤딩되지 않은 컬렉션 및 뷰에 대한 네임스페이스 길이 제한은 255바이트이고 샤딩된 컬렉션의 경우 235바이트입니다. 컬렉션 또는 뷰의 경우 네임스페이스에는 데이터베이스 이름, 점(.) 구분 기호 및 컬렉션/뷰 이름(예: <database>.<collection>)이 포함됩니다.

$currentOpcurrentOp 명령에는 진행 중인 유효성 검증 작업에 대한 dataThroughputAveragedataThroughputLastSecond 정보가 포함됩니다.

유효성 검사 작업에 대한 로그 메시지에는 dataThroughputAveragedataThroughputLastSecond 정보가 포함됩니다.

다음도 참조하세요.

MongoDB 4.4부터 compact는 다음 메타데이터 작업만 차단합니다.

compact는 현재 작동 중인 데이터베이스에 하는 MongoDB CRUD 작업을 차단하지 않습니다.

이전에는 compact가 작동 중인 데이터베이스에 대한 모든 작업(MongoDB CRUD 작업 포함)을 차단했기 때문에 예정된 유지 관리 기간 동안에만 사용할 수 있었습니다.

MongoDB 4.4부터 force 플래그는 compact복제본 세트프라이머리에서 실행되도록 강제합니다.

이전에는 force 옵션을 true로 설정하면 복제본 세트프라이머리에서 compact를 실행할 수 있었고, false로 설정하면 프라이머리에서 실행 시 오류가 반환되었습니다.

다음도 참조하세요.

MongoDB 4.4부터 mongod --repair는 다음에 대한 모든 인덱스를 다시 작성합니다.

  • 컬렉션 데이터와 하나 이상의 인덱스 간에 불일치가 있는 컬렉션입니다.

  • 복구 및 수정된 컬렉션

이전 버전의 MongoDB에서는 mongod --repair 옵션이 모든 컬렉션에 대한 모든 인덱스를 다시 빌드했습니다.

serverStatusflowControl.locksPerOp 대신 flowControl.locksPerKiloOp를 반환합니다.

serverStatus 출력에 다음과 같은 새로운 필드가 포함됩니다.

shardingStatistics.numHostsTargeted 는 CRUD 작업 및 집계 명령이 대상으로 하는 샤드 수를 보고합니다. 클러스터에서 각 작업을 수행할 때마다 관련 찾기, 삽입, 업데이트, 삭제 또는 집계 메트릭이 증가합니다.

replSetGetStatus 는 다음과 같은 새 필드를 반환합니다.

MongoDB 4.4부터 mongo 셸 메서드 db.auth(<username>, <password>)는 비밀번호 또는 <password>에 대한 passwordPrompt() 메서드를 전달하지 않은 경우 비밀번호를 묻는 메시지를 표시합니다.

에 대해 $natural 작업을 실행할 때 find 정렬을 지정할 수 있습니다.

Linux에서 실행되는 MongoDB 인스턴스의 경우:

  • mongodmongos 프로세스가 SIGUSR2 신호를 받으면 각 프로세스 스레드의 로그에 역추적 세부 정보가 추가됩니다.

  • 역추적 세부 정보에는 프로세스에 대한 함수 호출이 표시되며, 이러한 정보는 진단에 사용하고 필요한 경우 MongoDB 지원팀에 제공할 수 있습니다.

역추적 기능은 다음 아키텍처에서 사용할 수 있습니다.

  • x86_64

  • arm64 (MongoDB 5.0.10 및 6.0부터)

자세한 내용은 역추적 생성에서 확인하세요.

MongoDB 4.4부터 이제 FTDC는 호스트 운영 체제가 아닌 컨테이너의 관점에서 컨테이너에서 실행되는 mongod에 대한 사용 데이터를 보고합니다. 자세한 내용은 풀타임 진단 데이터 캡처에서 확인할 수 있습니다.

MongoDB 4.4부터 플랫폼의 열린 파일 수에 대해 구성된 ulimit 값이 64000 미만인 경우 mongod(은)는 스타트업 경고를 로그합니다. 이전에는 이 값이 1000 미만인 경우에만 경고가 로그되었습니다. 자세한 내용은 권장 ulimit 설정을 참조하세요.

MongoDB 4.4가 데이터베이스 프로파일러 출력진단 로그 메세지replanReason필드를 추가합니다. replanReason 필드에는 쿼리 시스템이 캐시된계획을 제거한 이유가 포함됩니다.

dbStats 명령과 해당 mongo shell 도우미 db.stats()는 다음을 반환합니다.

collStats 명령과 해당 명령의 mongo 셸 도우미 db.collection.stats()$collStats 집계 단계는 다음을 반환합니다.

MongoDB 4.4부터 다음의 데이터베이스 명령은 hint 인수를 받아들여 사용할 인덱스를 지정할 수 있습니다.

참조:

MongoDB 4.4부터 MongoDB는 mongos 인스턴스에서 JavaScript 실행을 허용합니다. mongos 인스턴스에서 JavaScript 실행을 비활성화하려면 다음을 수행합니다.

MongoDB 이전 버전은 mongos 인스턴스에서 JavaScript 실행을 허용하지 않습니다.

참고

featureCompatibilityVersion 4.4 이상이 필요합니다.

전역 기본 읽기 및 쓰기 고려(write concern)를 구성하려면 복제본 세트 또는 샤드 클러스터의 각 mongodfeatureCompatibilityVersion4.4 이상으로 설정해야만 합니다.

MongoDB 4.4부터 복제본 세트 및 샤딩된 클러스터는 글로벌 기본 읽기 및 쓰기 고려 설정 구성을 지원합니다. 특정 읽기 또는 쓰기 고려 설정을 명시적으로 지정하지 않은 클라이언트는 해당 글로벌 기본 설정을 상속합니다.

기본 전역 기본 읽기 또는 쓰기 고려(write concern)를 구성하기 위해 MongoDB는 setDefaultRWConcern 관리 명령을 추가합니다. 복제본 세트의 경우 프라이머리 멤버에 대해 명령을 실행합니다. 샤딩된 클러스터의 경우 mongos에서 명령을 실행합니다.

전역 기본 읽기 또는 쓰기 고려(write concern) 설정을 검색하기 위해 MongoDB는 getDefaultRWConcern 관리 명령을 추가합니다.

MongoDB4.4부터 읽기 고려 객체에는 읽기 고려가 발생한 위치를 나타내는 provenance 필드가 포함될 수 있습니다.

다음 표는 가능한 읽기 provenance 고려 의 값과 그 중요성을 보여줍니다.

출처
설명
clientSupplied
읽기 우려 사항은 애플리케이션에서 지정되었습니다.
customDefault
읽기 고려가 사용자가 정의한 기본값에서 발생했습니다. setDefaultRWConcern을 참조하세요.
implicitDefault
다른 모든 읽기 고려 사양이 부재해 서버에서 읽기 고려가 발생했습니다.

읽기 작업이 기록되거나 프로파일링된 경우 작업 항목에는 읽기 고려 객체를 비롯한 provenance 필드가 포함됩니다.

MongoDB는 서버에 대한 요청에서 provenance 필드를 지정하는 것을 권장하지 않습니다. 이 필드는 진단 목적으로만 사용해야 합니다.

MongoDB 4.4부터 쓰기 고려 객체에는 쓰기 고려가 발생한 위치를 나타내는 provenance 필드가 포함될 수 있습니다.

다음 표는 가능한 쓰기 고려 provenance 의 값과 그 중요성을 보여줍니다.

출처
설명
clientSupplied
쓰기 우려 사항은 애플리케이션에서 지정되었습니다.
customDefault
쓰기 고려는 사용자 정의된 기본값에서 비롯된 것입니다. setDefaultRWConcern을 참조하십시오.
getLastErrorDefaults
쓰기 고려는 복제본 세트의 settings.getLastErrorDefaults 필드에서 발생했습니다.
implicitDefault
쓰기 고려는 다른 모든 쓰기 고려 사양이 없는 상태에서 서버에서 발생했습니다.

쓰기 작업이 기록되거나 프로파일링된 경우 작업 항목에는 쓰기 고려(write concern) 객체를 비롯한 provenance 필드가 포함됩니다.

MongoDB는 서버에 대한 요청에서 provenance 필드를 지정하는 것을 권장하지 않습니다. 이 필드는 진단 목적으로만 사용해야 합니다.

MongoDB 4.4 엔터프라이즈는 Kerberos 인증의 일부로 KMIP 서버에 대한 초기 연결을 강화하기 위해 두 가지 새로운 구성 설정을 도입합니다.

mongod가 KMIP 서버에 대한 실패한 초기 연결을 재시도하는 횟수를 제어하려면 다음을 수행합니다.

중단되거나 재시도되기 전에 KMIP 서버의 초기 응답을 기다리는 시간 제한(밀리초)을 제어하려면 다음을 수행합니다.

이러한 설정은 MongoDB Enterprise에서만 사용할 수 있습니다.

mongod의 새로운 processUmask 시작 옵션을 사용하면 honorSystemUmaskfalse로 설정된 경우 그룹 및 기타 사용자에 대해 umask를 통해 권한을 설정할 수 있습니다.

MongoDB 4.4부터 mapReduce 명령 및 db.collection.mapReduce() 셸 메서드는 verbose 옵션을 무시합니다.

MongoDB 4.4부터 explain 명령 또는 db.collection.explain() 셸 메서드를 사용하여 mapReduce 또는 db.collection.mapReduce()의 결과를 미리 볼 수 있습니다.

버전 4.4부터:

다음도 참조하세요.

MongoDB 4.4부터 모든 데이터베이스 명령은 다음과 같은 방식으로 comment 필드 지정을 지원합니다.

예제

db.runCommand( { <command> , "comment" : <any BSON type> })

설정되면 이 설명은 다음 위치에서 이 명령의 레코드와 함께 표시됩니다.

주석은 유효한 BSON 객체(문자열, 정수, 배열 등)여야 합니다.

MongoDB 4.4부터 위치 $ 연산자를 사용하면 쿼리 문서와 프로젝션 문서 간에 서로 다른 배열 필드를 지정할 수 있습니다.

예를 들어 다음 문서를 컬렉션에 삽입하는 경우입니다.

db.foo.insertOne( { a: [ "one", "two", "three" ], b: [ 1, 2, 3 ] } )

MongoDB 4.4부터 다음 쿼리를 사용하여 a 필드에 지정된 쿼리와 일치하는 문서에 대해 b 필드의 첫 번째 요소만 프로젝션할 수 있습니다.

db.foo.findOne( { a: "one" }, { "b.$": 1 } )

중요

예상되는 동작을 보장하려면 쿼리 문서와 프로젝션 문서에 사용되는 배열의 길이가 동일해야 합니다. 배열의 길이가 다른 경우 특정 시나리오에서 작업이 오류를 일으킬 수 있습니다.

이전 버전의 MongoDB에서는 이 작업이 실패하는데, 이는 제한되는 배열 필드가 쿼리 문서에 나타나야 하기 때문입니다.

일부 변경 사항은 호환성에 영향을 줄 수 있으며 사용자가 조치를 취해야 할 수 있습니다. 호환성 변경에 대한 자세한 목록은 MongoDB 4.4 호환성 변경을 참조하세요.

중요

기능 호환성 버전

4.2 배포서버에서 업그레이드하려면 4.2 배포서버에 featureCompatibilityVersion4.2로 설정되어 있어야 합니다. 버전을 확인하려면 다음을 입력하세요.

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

featureCompatibilityVersion 확인 및 설정에 대한 자세한 내용과 업그레이드를 위한 기타 전제 조건/고려 사항에 대한 정보는 개별 업그레이드 지침을 참조하세요.

4.4로 업그레이드하는 방법에 대한 지침이 필요한 경우에 대비하여 MongoDB 전문 서비스 팀은 MongoDB 애플리케이션에 지장을 주지 않고 원활하게 전환할 수 있도록 주요 버전 업그레이드 지원을 제공합니다.

MongoDB는 단일 버전 다운그레이드만 지원합니다. 현재 릴리스보다 이전 버전인 릴리스로 다운그레이드할 수 없습니다.

예를 들어, 4.4시리즈를 4.2시리즈 배포로 다운그레이드할 수 있습니다. 그러나 4.2시리즈 배포에서 4.0시리즈 배포로 다운그레이드하는 것은 지원되지 않습니다.

MongoDB 4.4를 다운로드하려면 에서 MongoDB 다운로드 센터로 이동합니다.

다음도 참조하세요.

버전
이슈
상태
4.4.0
SERVER-45042: MongoDB Server Installation MSI는 Community와 Enterprise 모두에서 더 이상 MongoDB MonDatabase Tools에 대한 바이너리를 포함하지 않습니다. 자세한 내용은 도구 변경을 참조하세요.
미해결
4.4.0
SERVER-49694: 샤딩된 클러스터에서 nearest 읽기 또는 헤지된 읽기가 가까운 샤드 복제본으로 라우팅되지 않을 수 있음
4.4.1에서 수정됨
4.4.0
WT-6623: 복구 파일 검사 시 연결 수준 파일 ID를 설정
4.4.1에서 수정됨

문제를 보고하려면 https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports에서 MongoDB 서버 또는 관련 프로젝트 중 한 건에 대한 JIRA 티켓을 제출하는 방법에 대한 지침을 참조하세요.

돌아가기

ChangeLog