자체 관리형 샤드 클러스터를 WiredTiger 로 변경하기
참고
WiredTiger로 업그레이드해야 합니다. MongoDB는 버전 4.2에서 더 이상 사용되지 않는 MMAPv1 스토리지 엔진을 제거했습니다.
이 튜토리얼을 사용하여 WiredTiger 를 사용하도록 샤딩된 클러스터 를 업데이트 합니다.
고려 사항
중단 시간
샤드의 호스트 또는 포트를 변경하는 경우 샤드 구성도 업데이트해야 합니다.
PSA 3-멤버 아키텍처
WiredTiger에 사용할 수 있는 "majority"
읽기 고려 (read concern)는 기본적으로 활성화되어 있습니다. 그러나 프라이머리-세컨더리-중재자(PSA) 아키텍처를 가진 3명의 멤버로 구성된 복제본 세트가 있는 경우 해당 복제본 세트에 대해 "majority"
읽기 고려 (read concern)를 비활성화할 수 있습니다. 3명의 멤버로 구성된 PSA 아키텍처에 대해 "majority"
을(를) 비활성화하면 캐시 압력이 누적되는 것을 방지할 수 있습니다.
참고
"majority"
읽기 고려(read concern)를 비활성화해도 변경 스트림 가용성에는 영향을 주지 않습니다.
"majority"
읽기 고려 (read concern)를 비활성화하면 인덱스를 수정하는 collMod
명령이 롤백 되지 않습니다. 이러한 작업을 롤백해야 하는 경우 영향을 받는 노드를 프라이머리 노드와 다시 동기화해야 합니다.
"majority"
읽기 고려 (read concern)를 비활성화하면 샤딩된 cluster의 트랜잭션 에 대한 지원에 영향을 미칩니다. 구체적으로 다음과 같습니다.
트랜잭션은 읽기 고려 (read concern) "majority"를 비활성화 한 샤드가 포함된 경우 트랜잭션은
"snapshot"
읽기 고려 (read concern) 을 사용할 수 없습니다.트랜잭션의 읽기 또는 쓰기 작업에
"majority"
읽기 고려(read concern)를 비활성화한 샤드가 포함된 경우 여러 샤드에 쓰는 트랜잭션에 오류가 발생합니다.
그러나 복제본 세트의 트랜잭션에는 영향을 미치지 않습니다. 복제본 세트의 트랜잭션의 경우 읽기 고려 "majority"
가 비활성화되어 있어도 분산 트랜잭션에 대해 읽기 고려 "majority"
(또는 "snapshot"
또는 "local"
)를 지정할 수 있습니다.
PSA 아키텍처 및 읽기 고려 "majority"
에 대한 자세한 내용은 프라이머리-세컨더리--중재자 복제본 세트를 참조하세요.
로컬 호스트에 기본 바인딩
Config 서버
구성 서버는 복제본 세트(CSRS)로 배포되어야 합니다. 따라서 config 서버는 이미 WiredTiger 스토리지 엔진 을 사용하고 있습니다.
XFS 및 WiredTiger
WiredTiger 스토리지 엔진의 경우, Linux에서는 데이터 저장 노드에 XFS를 사용하는 것이 좋습니다. 자세한 내용은 커널 및 파일 시스템을 참조하세요.
MMAPv1 전용 제한 사항
WiredTiger로 업그레이드하면 WiredTiger 배포에는 다음과 같은 MMAPv1 전용 제한 사항이 적용되지 않습니다:
MMAPv1 제한 사항 | 짧은 설명 |
---|---|
네임스페이스 수 | MMAPv1의 경우 네임스페이스 수는 네임스페이스 파일 크기를 628로 나눈 값으로 제한됩니다. |
네임스페이스 파일 크기 | MMAPv1의 경우 네임스페이스 파일은 2047메가바이트를 넘지 않아야 합니다. |
데이터베이스 크기 | MMAPv1 스토리지 엔진은 각 데이터베이스를 16,000개 이하의 데이터 파일로 제한합니다. |
데이터 크기 | MMAPv1의 경우 단일 mongod 인스턴스는 기본 운영 체제에서 제공하는 최대 가상 메모리 주소 공간을 초과하는 데이터 세트를 관리할 수 없습니다. |
데이터베이스의 컬렉션 수 | MMAPv1 스토리지 엔진의 경우, 데이터베이스 내 컬렉션의 최대 수는 네임스페이스 파일의 크기와 데이터베이스 내 컬렉션의 인덱스 수에 따라 결정됩니다. |
시작하기 전에
MongoDB 8.0 부터는 directShardOperations
역할 을 사용하여 샤드 에 대해 직접 명령을 실행해야 하는 유지 관리 작업을 수행할 수 있습니다.
경고
directShardOperations
역할 을 사용하여 명령을 실행하면 클러스터 가 올바르게 작동하지 않고 데이터가 손상될 수 있습니다. directShardOperations
역할 은 유지 관리 목적으로만 사용하거나 MongoDB 지원 의 지침 에 따라 사용하세요. 유지 관리 작업 수행이 완료되면 directShardOperations
역할 사용을 중지합니다.
절차
각 복제본 세트 샤드 에 대해 storage engine을 WiredTiger로 변경하려면 다음을 수행합니다.
A. 세컨더리 멤버를 WiredTiger로 업데이트합니다.
세컨더리 노드를 한 번에 하나씩 업데이트합니다.
세컨더리 노드를 종료합니다.
mongosh
에서 세컨더리 를 종료합니다.
use admin db.shutdownServer()
WiredTiger 로 실행 되는 새 에 대한 데이터 mongod
디렉토리 를 준비합니다.
WiredTiger 스토리지 엔진으로 실행할 새 mongod
인스턴스의 데이터 디렉토리를 준비합니다. mongod
는 이 디렉토리에 대한 읽기 및 쓰기 권한이 있어야 합니다. 중지된 세컨더리 멤버의 현재 데이터 디렉터리의 콘텐츠를 삭제하거나 완전히 새 디렉터리를 만들 수 있습니다.
mongod
WiredTiger를 사용하면 다른 스토리지 엔진으로 생성된 데이터 파일로 시작되지 않습니다.
WiredTiger의 구성을 업데이트합니다.
mongod
인스턴스 구성에서 모든 MMAPv1 구성 옵션을 제거하세요.
mongod
WiredTiger 로 을(를) 시작합니다.
mongod
를 시작하여 wiredTiger
를 --storageEngine
으로 지정하고 WiredTiger에 대해 준비된 데이터 디렉토리를 --dbpath
로 지정합니다.
필요에 따라 추가 옵션을 지정합니다(예: --bind_ip
).
경고
인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)>
중요
세 멤버로 구성된 PSA 아키텍처를 실행 하는 경우 --enableMajorityReadConcern false
를 포함하여 읽기 고려 (read concern) 고려 majority
를 비활성화합니다. PSA 3-멤버 아키텍처 를 참조하세요.
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)> --enableMajorityReadConcern false
--dbpath
에는 데이터가 없으므로 mongod
에서 초기 동기화를 수행합니다. 초기 동기화 프로세스의 길이는 데이터베이스 크기와 복제본 세트 멤버 간 네트워크 연결에 따라 달라집니다.
구성 파일에서 옵션을 지정할 수도 있습니다. 스토리지 엔진을 지정하려면 storage.engine
설정을 사용합니다.
나머지 세컨더리 멤버에 대해서도 단계를 반복하여 한 번에 하나씩 업데이트합니다.
B. 프라이머리를 스텝다운합니다.
모든 세컨더리 멤버가 WiredTiger로 업그레이드되면 프라이머리에 mongosh
를 연결하고 rs.stepDown()
를 사용하여 기존 프라이머리를 우선 순위에서 내려오게 하고 강제로 새 프라이머리에 대한 투표를 진행합니다.
rs.stepDown()
C. 이전 프라이머리 복제본을 업데이트합니다.
프라이머리에서 스텝다운되어 세컨더리가 되면 이전과 같이 WiredTiger를 사용할 수 있도록 세컨더리를 업데이트합니다.
세컨더리 노드를 종료합니다.
mongosh
에서 세컨더리를 종료하세요.
use admin db.shutdownServer()
WiredTiger 로 실행 되는 새 에 대한 데이터 mongod
디렉토리 를 준비합니다.
WiredTiger 스토리지 엔진으로 실행할 새 mongod
인스턴스의 데이터 디렉토리를 준비합니다. mongod
는 이 디렉토리에 대한 읽기 및 쓰기 권한이 있어야 합니다. 중지된 세컨더리 멤버의 현재 데이터 디렉터리의 콘텐츠를 삭제하거나 완전히 새 디렉터리를 만들 수 있습니다.
mongod
WiredTiger를 사용하면 다른 스토리지 엔진으로 생성된 데이터 파일로 시작되지 않습니다.
WiredTiger의 구성을 업데이트합니다.
mongod
인스턴스 구성에서 모든 MMAPv1 구성 옵션을 제거하세요.
mongod
WiredTiger 로 을(를) 시작합니다.
mongod
를 시작하여 wiredTiger
를 --storageEngine
으로 지정하고 WiredTiger에 대해 준비된 데이터 디렉토리를 --dbpath
로 지정합니다.
필요에 따라 추가 옵션을 지정합니다(예: --bind_ip
).
경고
인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)>
중요
세 멤버로 구성된 PSA 아키텍처를 실행 하는 경우 --enableMajorityReadConcern false
를 포함하여 읽기 고려 (read concern) 고려 majority
를 비활성화합니다. PSA 3-멤버 아키텍처 를 참조하세요.
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath> --replSet <replSetName> --bind_ip localhost,<hostname(s)|ip address(es)> --enableMajorityReadConcern false
--dbpath
에는 데이터가 없으므로 mongod
에서 초기 동기화를 수행합니다. 초기 동기화 프로세스의 길이는 데이터베이스 크기와 복제본 세트 멤버 간 네트워크 연결에 따라 달라집니다.
구성 파일에서 옵션을 지정할 수도 있습니다. 스토리지 엔진을 지정하려면 storage.engine
설정을 사용합니다.
다른 샤드에 대해서도 절차를 반복합니다.