config 데이터베이스의 컬렉션은 다음을 지원합니다.
독립형, 복제본 세트 및 샤딩된 클러스터에 대한 인과적으로 일관된 세션과 복제본 세트 및 샤딩된 클러스터에 대한 재시도 가능 쓰기.
참고
샤딩된 cluster는 mongos 에 연결하는지 또는 mongod에 연결하는지에 따라 config 데이터베이스에 다른 collection이 표시될 수 있습니다.
mongosconfig에서collections데이터베이스 config 서버에 있는 컬렉션(예: 또는)을chunks표시합니다.mongod에서 데이터베이스 지정된config샤드 와 관련된migrationCoordinators컬렉션(예: 또는)을rangeDeletions표시합니다.
config 서버와 샤드가 동일한 노드에서 호스팅되는 경우 mongos 가 config 데이터베이스의 일부 샤드 로컬 collection에 액세스할 수 있습니다.
제한 사항
MongoDB 부터는 5.0 다음과 같은 읽기 고려 사항 및 옵션이 config.transactions 있는 컬렉션 에서 트랜잭션이 아닌 읽기가 허용되지 않습니다.
"majority"이고 afterClusterTime 옵션이 설정되어 있습니다.인과적으로 일관적인
"majority"세션 내에서 및 MongoDB 드라이버사용하는 경우
중요
config 데이터베이스의 스키마는 내부적이며, 릴리스 간에 변경될 수 있습니다. config 데이터베이스는 신뢰할 수 있는 API가 아니므로 사용자는 정상적인 운영 또는 유지 관리 과정에서 config 데이터베이스에 데이터를 작성해서는 안 됩니다.
참고
다중 문서 트랜잭션 내에서 config 데이터베이스의 컬렉션에는 읽기/쓰기 작업을 수행할 수 없습니다.
MongoDB 8.0부터는 일부 config 컬렉션을 읽으려면 mongos에 연결해야 합니다. 이러한 컬렉션 목록은 단일 샤드 컬렉션 읽기를 참조하세요.
샤딩된 클러스터 운영을 지원하는 컬렉션
데이터베이스 액세스 하여 샤딩 작업을 지원 컬렉션 목록을 보려면 config mongosh mongos를 샤딩된 클러스터 의 인스턴스 에 연결하고 다음을 실행합니다.
use config show collections
참고
액세스 제어와 함께 실행하는 경우 데이터베이스에 대해 listCollections 조치를 부여하는 권한이 있는지 확인하세요.합니다.
config 데이터베이스는 주로 내부용으로 사용되며, 일반적인 작업 중에 데이터를 수동으로 삽입하거나 저장해서는 안 됩니다. 그러나 샤딩된 클러스터에 대한 config 서버의 쓰기 가용성을 확인해야 하는 경우에는 해당 이름의 컬렉션이 이미 존재하지 않는지 확인한 후 테스트 컬렉션에 문서를 삽입할 수 있습니다.
경고
작동 중인 시스템에서 config 데이터베이스를 수정하면 불안정성이나 일치하지 않는 데이터 세트가 발생할 수 있습니다. config 데이터베이스를 수정해야 하는 경우 mongodump를 사용하여 config 데이터베이스의 전체 백업을 만듭니다.
db.testConfigServerWriteAvail.insertOne( { a : 1 } )
작업이 성공하면 config 서버를 사용하여 쓰기를 처리할 수 있습니다.
향후 서버 릴리스에서는 config 데이터베이스에 다른 컬렉션이 포함될 수 있으므로 테스트 컬렉션의 이름을 선택할 때 주의하세요.
MongoDB는 샤딩을 지원하기 위해 config 데이터베이스에서 다음 컬렉션을 사용합니다.
config.changelogchangelog컬렉션은 샤딩된 컬렉션의 각 메타데이터 변경 사항에 대한 문서를 저장합니다.예시
다음 예시 컬렉션 에서 분할 청크 의 단일 기록 표시합니다.
changelog{ "_id" : "<hostname>-<timestamp>-<increment>", "server" : "<hostname><:port>", "clientAddr" : "127.0.0.1:63381", "time" : ISODate("2012-12-11T14:09:21.039Z"), "what" : "split", "ns" : "<database>.<collection>", "details" : { "before" : { "min" : { "<database>" : { $minKey : 1 } }, "max" : { "<database>" : { $maxKey : 1 } }, "lastmod" : Timestamp(1000, 0), "lastmodEpoch" : ObjectId("000000000000000000000000") }, "left" : { "min" : { "<database>" : { $minKey : 1 } }, "max" : { "<database>" : "<value>" }, "lastmod" : Timestamp(1000, 1), "lastmodEpoch" : ObjectId(<...>) }, "right" : { "min" : { "<database>" : "<value>" }, "max" : { "<database>" : { $maxKey : 1 } }, "lastmod" : Timestamp(1000, 2), "lastmodEpoch" : ObjectId("<...>") }, "owningShard" : "<value>" } } 컬렉션 의 각 문서 에는 다음 필드가 포함되어
changelog있습니다.config.changelog.clientAddr클라이언트의 주소를 보유하는 문자열로, 이 변경을 시작하는
mongos인스턴스입니다.
config.changelog.time변경이 발생한 시점을 반영하는 ISODate 타임스탬프입니다.
config.changelog.what기록된 변경 유형입니다. 가능한 값은 다음과 같습니다.
dropCollectiondropCollection.startdropDatabasedropDatabase.startmoveChunk.startmoveChunk.commitsplitmulti-split
config.changelog.details변경 사항에 대한 추가 세부 정보가 포함된 문서 입니다. 문서 의 구조는
details변경 유형에 따라 달라집니다.
config.chunks컬렉션 클러스터 의 각 청크 에 대한 문서 저장합니다. 다음 예시 문서
config.chunks보여줍니다.{ _id: ObjectId('65a954c0de11596e08e7c1dc'), uuid: UUID('a4479215-a38d-478f-a82b-e5e95d455e55'), min: { a: Long('121204345') }, max: { a: Long('993849349') }, shard: 'shard01', lastmod: Timestamp({ t: 1, i: 0 }), history: [ { validAfter: Timestamp({ t: 1705596095, i: 14 }), shard: 'shard01' } ] } 문서에서 다음을 수행합니다.
_id은(는) 청크 식별자입니다.min및max은(는) 청크의 샤드 키에 대한 값 범위입니다.shard은(는) cluster에 청크를 저장하는 샤드의 이름입니다.
팁
컬렉션 에서 청크를 찾으려면 컬렉션
uuidconfig.collections에서 컬렉션의 식별자를 조회 . 그런 다음 를 사용하여uuid컬렉션 에서 동일한 를 가진 일치하는 문서uuidconfig.chunks조회 .
config.collectionsMongoDB 8.0부터
config.collections는moveCollection으로 이동된 모든 샤딩된 컬렉션 및 샤딩되지 않은 컬렉션에 대한 메타데이터를 저장합니다.8.0 이전의 MongoDB 버전에서
config.collections는 샤딩된 컬렉션에 대한 메타데이터만 저장합니다.config.collections컬렉션에 저장된 문서가 아닌, 컬렉션에 대한 메타데이터만 저장합니다.데이터베이스 에 있는 컬렉션 의 경우 컬렉션 의 문서
petsrecordscollections다음과 유사합니다.{ "_id" : "records.pets", "lastmod" : ISODate("2021-07-21T15:48:15.193Z"), "timestamp": Timestamp(1626882495, 1), "key" : { "a" : 1 }, "unique" : false, "lastmodEpoch" : ObjectId("5078407bd58b175c5c225fdc"), "uuid" : UUID("f8669e52-5c1b-4ea2-bbdc-a00189b341da") }
config.databasesdatabases컬렉션 클러스터 의 각 데이터베이스 에 대한 문서 저장합니다.각 데이터베이스에 대해 해당 문서에는 이름, 데이터베이스의 프라이머리 샤드 및 버전이 표시됩니다.
{ "_id" : "test", "primary" : "shardA", "version" : { "uuid" : UUID("516a5f79-5eb9-4844-8ee9-b8e9de91b760"), "timestamp" : Timestamp(1626894204, 1), "lastMod" : 1 } } { "_id" : "hr", "primary" : "shardA", "version" : { "uuid" : UUID("8e39d61d-6259-4c33-a5ed-bcd2ae317b6f"), "timestamp" : Timestamp(1626895015, 1), "lastMod" : 1 } } { "_id" : "reporting", "primary" : "shardB", "version" : { "uuid" : UUID("07c63242-51b3-460c-865f-a67b3372d792"), "timestamp" : Timestamp(1626895826, 1), "lastMod" : 1 } } sh.status()메서드는 데이터베이스 섹션에 이 정보를 반환합니다.
config.migrationCoordinators컬렉션 각
migrationCoordinators샤드 에 존재하며 이 샤드 에서 다른 샤드 로 진행 중인 각 청크 마이그레이션 에 대한 문서 저장합니다. 문서 를 샤드의 복제본 세트 에 있는 대부분의 멤버에 쓸 수 없는 경우 청크 마이그레이션 실패합니다.마이그레이션이 완료되면 마이그레이션을 설명하는 문서가 에서 삭제됩니다.
config.mongos컬렉션 클러스터 와 관련된 각
mongos인스턴스 에 대한 문서 저장합니다. 클러스터 보고 목적으로 이 컬렉션 유지 관리합니다.mongos컬렉션 의 각 문서
mongos에는 다음과 같은 필드가 포함되어 있습니다.필드데이터 유형설명_id문자열
mongos실행 중인 호스트 이름 및 포트입니다. 형식은_id<hostname>:<port>로 지정됩니다.advisoryHostFQDNs문자열 배열
mongos의 정규화된 도메인 이름 (FQDN) 의 배열.created날짜
mongos가 시작된 시간입니다.버전 5.2에 추가 되었습니다.
mongoVersion문자열
mongos가 실행 중인 MongoDB 버전입니다.ping날짜
upNumberLong
마지막 핑을 기준으로
mongos가 작동한 시간 (초) 입니다.waiting부울
이 필드는 항상
true이며 이전 버전과의 호환성을 위해서만 포함됩니다.다음 문서는
example.com:27017에서 실행되는mongos상태를 보여줍니다.[ { _id: 'example.com:27017', advisoryHostFQDNs: [ "example.com" ], created: ISODate("2021-11-22T16:32:13.708Z"), mongoVersion: "5.2.0", ping: ISODate("2021-12-15T22:09:23.161Z"), up: Long("2007429"), waiting: true } ]
config.placementHistory컬렉션 config 서버 에 존재하며 특정 클러스터 타임스탬프에 데이터베이스 또는 컬렉션 에 대한 데이터가 포함된 샤드를 기록합니다. MongoDB 이 정보를 사용하여 기록 데이터 배치를 재구성합니다.
placementHistory데이터베이스 에 있는 컬렉션 의 경우 컬렉션 의 문서
myCollectiontestplacementHistory다음과 유사합니다.{ _id: ObjectId("61e0a1f4e5b8c9d0a1b2c3d4"), nss: "test.myCollection", collUuid: UUID("07c63242-51b3-460c-865f-a67b3372d792"), timestamp: Timestamp(1626895826, 1), shards: [ "shardA", "shardB" ] } nss필드에는 네임스페이스 또는 데이터베이스 이름이 포함될 수 있습니다.collUuid필드는 컬렉션에만 있습니다.
config.rangeDeletionsrangeDeletions컬렉션 각 샤드 에 존재하며 고아 문서가 포함된 각 청크 범위 에 대한 문서 저장합니다. 문서 를 샤드의 복제본 세트 에 있는 대부분의 멤버에 쓸 수 없는 경우 청크 마이그레이션 실패합니다.분리된 청크 범위가 정리되면 범위를 설명하는 문서가 컬렉션에서 삭제됩니다.
config.settings컬렉션 에는 다음과 같은 샤딩 구성 설정이 있습니다.
settings범위 크기. 범위 크기를 변경하려면 샤딩된 클러스터에서 범위 크기 수정을 참조하세요. 지정한
chunksize값은 메가바이트 단위입니다.밸런서 설정. 밸런서 상태를 포함한 밸런서 설정을 변경하려면 샤딩된 클러스터 밸런서 관리를 참조하세요.
Autosplit:
MongoDB 6.0.3부터 자동 청크 분할이 수행되지 않습니다. 이는 밸런싱 정책 개선 때문입니다. 자동 분할 명령이 여전히 존재하지만 작업을 수행하지 않습니다.
6.1 이전 MongoDB 버전에서는 다음과 같습니다.
balancerStart또한 샤딩된 클러스터에 대한 자동 분할도 활성화합니다.balancerStop또한 샤딩된 클러스터에 대한 자동 분할도 비활성화합니다.자동 분할 플래그를 활성화 또는 비활성화하려면 해당
sh.enableAutoSplit()메서드 또는sh.disableAutoSplit()메서드를 사용합니다.
settings컬렉션 내의 예시 문서입니다.{ "_id" : "chunksize", "value" : 64 } { "_id" : "balancer", "mode" : "full", "stopped" : false }
config.shards컬렉션 다음과 같이 클러스터 의 각 샤드 별도의 문서 로 나타냅니다.
shards{ "_id" : "shard0000", "host" : "localhost:30000", "state" : 1 } 샤드가 복제본 세트인 경우
host필드에는 다음 예와 같이 복제본 세트의 이름과 슬래시, 쉼표로 구분된 복제본 세트의 각 멤버의 호스트 이름 목록이 표시됩니다.{ "_id" : "shard0001", "host" : "shard0001/localhost:27018,localhost:27019,localhost:27020", "state" : 1 } 샤드에 구역이 할당된 경우 이 문서에는 다음 예와 같이 구역이 할당된 구역의 배열이 포함된
tags필드가 있습니다.{ "_id" : "shard0002", "host" : "localhost:30002", "state" : 1, "tags": [ "NYC" ] }
config.tagstags컬렉션 클러스터 의 각 구역 범위 에 대한 문서가 들어 있습니다. 컬렉션 의 문서는 다음과tags유사합니다.{ "_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } }, "ns" : "records.users", "min" : { "zipcode" : "10001" }, "max" : { "zipcode" : "10281" }, "tag" : "NYC" }
config.versionversion컬렉션 에는 현재 메타데이터 버전 번호가 있습니다. 이 컬렉션 에는 문서 하나만 포함되어 있습니다. 예시 들면 다음과 같습니다.{ "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5d8bc01a690d8abbd2014ddd") } 컬렉션 에 액세스
version하려면 메서드를 사용해야db.getCollection()합니다. 예시 를 들어 다음과 같이 컬렉션의 문서 조회 할 수 있습니다.db.getCollection("version").find()
세션을 지원하는 컬렉션
config 데이터베이스에는 독립형, 복제본 세트 및 샤딩된 클러스터에 대해 인과적으로 일관적인 세션과 복제본 세트 및 샤딩된 클러스터에 대해 재시도 가능 쓰기 및 트랜잭션을 지원하기 위한 내부 컬렉션이 포함되어 있습니다.
경고
이러한 컬렉션을 수동으로 수정하거나 제거하지 않도록 합니다.
또는 인스턴스 에 대한 이러한 컬렉션 mongod mongos 액세스 하려면 를 mongosh 인스턴스 에 연결 합니다 .
config.system.sessionssystem.sessions컬렉션은 배포의 모든 멤버가 사용할 수 있는 세션 레코드를 저장합니다.사용자가
mongod또는mongos인스턴스에서 세션을 만들면 세션처음에는 의 기록이 인스턴스의 인메모리에만 존재합니다. 인스턴스는 주기적으로 캐시된 세션을system.sessions컬렉션에 동기화하며, 이 때 배포의 모든 멤버가 해당 세션을 볼 수 있습니다.system.sessions컬렉션의 레코드를 보려면$listSessions를 사용합니다.경고
system.sessions컬렉션을 수동으로 수정하거나 제거하지 않도록 합니다.샤딩된 클러스터에서는
system.sessionscollection이 샤딩됩니다.샤딩된 클러스터에 샤드를 추가할 때, 추가할 샤드에 자체
system.sessions컬렉션이 이미 포함되어 있으면 MongoDB는 추가 프로세스 중에 새 샤드의system.sessions컬렉션을 제거합니다.