Config Database
config
데이터베이스의 컬렉션은 다음을 지원합니다.
독립형, 복제본 세트 및 샤딩된 클러스터에 대한 인과적으로 일관된 세션과 복제본 세트 및 샤딩된 클러스터에 대한 재시도 가능 쓰기.
참고
샤딩된 cluster는 mongos
에 연결하는지 또는 mongod
에 연결하는지에 따라 config
데이터베이스에 다른 collection이 표시될 수 있습니다.
mongos
에서config
데이터베이스는 cofig 서버에 있는 컬렉션(예:collections
또는chunks
)을 표시합니다.mongod
에서config
데이터베이스는migrationCoordinators
또는rangeDeletions
와 같이 지정된 샤드와 관련된 컬렉션을 표시합니다
config 서버와 샤드가 동일한 노드에서 호스팅되는 경우 mongos
가 config
데이터베이스의 일부 샤드 로컬 collection에 액세스할 수 있습니다.
제한 사항
MongoDB 5.0부터는 다음과 같은 읽기 고려 사항 및 옵션이 있는 config.transactions
컬렉션에서 트랜잭션이 아닌 읽기가 허용되지 않습니다.
"majority"
이고 afterClusterTime 옵션이 설정되어 있습니다.인과적으로 일관된 세션 내에서 MongoDB 드라이버 및
"majority"
를 사용할 때
중요
config
데이터베이스의 스키마는 내부적이며, 릴리스 간에 변경될 수 있습니다. config
데이터베이스는 신뢰할 수 있는 API가 아니므로 사용자는 정상적인 운영 또는 유지 관리 과정에서 config
데이터베이스에 데이터를 작성해서는 안 됩니다.
참고
다중 문서 트랜잭션 내에서 config
데이터베이스의 컬렉션에는 읽기/쓰기 작업을 수행할 수 없습니다.
샤딩된 클러스터 운영을 지원하는 컬렉션
config
데이터베이스에 액세스하여 샤딩 작업을 지원하는 컬렉션 목록을 보려면 mongosh
를 샤딩된 클러스터의 mongos
인스턴스에 연결하고 다음을 실행합니다.
use config show collections
참고
액세스 제어와 함께 실행하는 경우 데이터베이스에 대해 listCollections
조치를 부여하는 권한이 있는지 확인하세요.합니다.
config 데이터베이스는 주로 내부용으로 사용되며, 일반적인 작업 중에 데이터를 수동으로 삽입하거나 저장해서는 안 됩니다. 그러나 샤딩된 클러스터에 대한 config 서버의 쓰기 가용성을 확인해야 하는 경우에는 해당 이름의 컬렉션이 이미 존재하지 않는지 확인한 후 테스트 컬렉션에 문서를 삽입할 수 있습니다.
경고
작동 중인 시스템에서 config
데이터베이스를 수정하면 데이터 세트가 불안정해지거나 일치하지 않을 수 있습니다. config
데이터베이스를 수정해야 하는 경우 mongodump
를 사용하여 config
데이터베이스의 전체 백업을 만듭니다.
db.testConfigServerWriteAvail.insertOne( { a : 1 } )
작업이 성공하면 config 서버를 사용하여 쓰기를 처리할 수 있습니다.
향후 서버 릴리스에서는 config 데이터베이스에 다른 컬렉션이 포함될 수 있으므로 테스트 컬렉션의 이름을 선택할 때 주의하세요.
MongoDB는 샤딩을 지원하기 위해 config
데이터베이스에서 다음 컬렉션을 사용합니다.
config.changelog
changelog
컬렉션은 샤딩된 클러스터의 각 메타데이터 변경 사항에 대한 문서를 저장합니다.예시
다음 예시에서는
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.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에 청크를 저장하는 샤드의 이름입니다.
팁
컬렉션에서 청크를 찾으려면
config.collections
컬렉션에서 컬렉션의uuid
식별자를 조회합니다. 그런 다음uuid
를 사용하여config.chunks
컬렉션에서 동일한uuid
를 가진 일치하는 문서를 조회합니다.
config.collections
MongoDB 8.0부터
config.collections
는moveCollection
으로 이동된 모든 샤딩된 컬렉션 및 샤딩되지 않은 컬렉션에 대한 메타데이터를 저장합니다.8.0 이전의 MongoDB 버전에서
config.collections
는 샤딩된 컬렉션에 대한 메타데이터만 저장합니다.config.collections
컬렉션에 저장된 문서가 아닌, 컬렉션에 대한 메타데이터만 저장합니다.records
데이터베이스에pets
라는 컬렉션이 있는 경우collections
컬렉션의 문서는 다음과 유사합니다.{ "_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.csrs.indexes
버전 7.0에 추가.
indexes
컬렉션은 샤드에서 사용 가능한 각 글로벌 인덱스에 대한 문서를 저장합니다.컬렉션의 각 문서에는 다음과 같은 필드가 포함되어 있습니다.
config.databases
databases
컬렉션은 클러스터의 각 데이터베이스에 대한 문서를 저장합니다.각 데이터베이스에 대해 해당 문서에는 이름, 데이터베이스의 프라이머리 샤드 및 버전이 표시됩니다.
{ "_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
날짜
up
NumberLong
마지막 핑을 기준으로
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.rangeDeletions
rangeDeletions
컬렉션은 각 샤드에 존재하며 고아 문서가 포함된 각 청크 범위에 대한 문서를 저장합니다. 문서를 샤드의 복제본 세트에 있는 대부분의 노드에 쓸 수 없는 경우 청크 마이그레이션이 실패합니다.분리된 청크 범위가 정리되면 범위를 설명하는 문서가 컬렉션에서 삭제됩니다.
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.tags
tags
컬렉션은 클러스터의 각 영역 범위에 대한 문서를 보유합니다.tags
컬렉션의 문서는 다음과 유사합니다.{ "_id" : { "ns" : "records.users", "min" : { "zipcode" : "10001" } }, "ns" : "records.users", "min" : { "zipcode" : "10001" }, "max" : { "zipcode" : "10281" }, "tag" : "NYC" }
config.version
version
컬렉션에는 현재 메타데이터 버전 번호가 있습니다. 이 컬렉션에는 문서가 하나만 포함되어 있습니다. 예시:{ "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5d8bc01a690d8abbd2014ddd") } version
컬렉션에 액세스하려면db.getCollection()
메서드를 사용해야 합니다. 예를 들어 컬렉션의 문서를 조회하려면 다음을 수행합니다.db.getCollection("version").find()
세션을 지원하는 컬렉션
config
데이터베이스에는 독립형, 복제본 세트 및 샤딩된 클러스터에 대해 인과적으로 일관적인 세션과 복제본 세트 및 샤딩된 클러스터에 대해 재시도 가능 쓰기 및 트랜잭션을 지원하기 위한 내부 컬렉션이 포함되어 있습니다.
경고
이러한 컬렉션을 수동으로 수정하거나 제거하지 않도록 합니다.
mongod
또는 mongos
인스턴스에 대해 이러한 컬렉션에 액세스하려면 mongosh
를 인스턴스에 연결합니다.
config.system.sessions
system.sessions
컬렉션은 배포의 모든 멤버가 사용할 수 있는 세션 레코드를 저장합니다.사용자가
mongod
또는mongos
인스턴스에서 세션을 만들면 세션처음에는 의 기록이 인스턴스의 인메모리에만 존재합니다. 인스턴스는 주기적으로 캐시된 세션을system.sessions
컬렉션에 동기화하며, 이 때 배포의 모든 멤버가 해당 세션을 볼 수 있습니다.system.sessions
컬렉션의 레코드를 보려면$listSessions
를 사용합니다.경고
system.sessions
컬렉션을 수동으로 수정하거나 제거하지 않도록 합니다.샤딩된 클러스터에서는
system.sessions
collection이 샤딩됩니다.샤딩된 클러스터에 샤드를 추가할 때, 추가할 샤드에 자체
system.sessions
컬렉션이 이미 포함되어 있으면 MongoDB는 추가 프로세스 중에 새 샤드의system.sessions
컬렉션을 제거합니다.