문서 홈 → 애플리케이션 개발 → MongoDB 매뉴얼
복제본 세트를 WiredTiger로 변경
참고
이 튜토리얼을 통해 WiredTiger 를 사용하도록 복제본 세트를 업데이트하세요. 이 절차는 다운타임을 방지하기 위해 순차적으로 복제본 세트를 업데이트합니다.
고려 사항
복제본 세트에는 서로 다른 스토리지 엔진을 가진 멤버가 있을 수 있습니다. 따라서 WiredTiger 스토리지 엔진을 순차적으로 사용하도록 멤버를 업데이트할 수 있습니다.
PSA 3-멤버 아키텍처
WiredTiger에 사용할 수 있는 "majority"
읽기 고려는 기본적으로 활성화되어 있습니다. 그러나 프라이머리-세컨더리-중재자(PSA) 아키텍처를 사용하는 세 멤버 복제본 세트에서는 "majority"
읽기 고려를 비활성화할 수 있습니다. 3개 멤버 PSA 아키텍처에 대해 "majority"
읽기 고려를 비활성화하면 캐시 압력이 누적되는 것을 방지할 수 있습니다.
아래의 절차 는 "majority"
--enableMajorityReadConcern false
를포함하여 PSA 아키텍처에 대한 읽기 고려를 비활성화합니다.
참고
"majority"
읽기 고려를 비활성화해도 변경 스트림 가용성에는 영향을 주지 않습니다.
PSA 아키텍처 및 고려 사항 "majority"
에 대한 자세한 내용은 프라이머리-세컨더리-중재자 복제본 세트를 참조하세요.
로컬 호스트에 기본 바인딩
XFS 및 WiredTiger
WiredTiger 스토리지 엔진의 경우, Linux에서는 데이터 저장 노드에 XFS를 사용하는 것이 좋습니다. 자세한 내용은 커널 및 파일 시스템을 참조하세요.
MMAPv1 전용 제한 사항
WiredTiger로 업그레이드하면 WiredTiger 배포에는 다음과 같은 MMAPv1 전용 제한 사항이 적용되지 않습니다:
MMAPv1 제한 사항 | 짧은 설명 |
---|---|
네임스페이스 수 | MMAPv1의 경우 네임스페이스 수는 네임스페이스 파일 크기를 628로 나눈 값으로 제한됩니다. |
네임스페이스 파일 크기 | MMAPv1의 경우 네임스페이스 파일은 2047메가바이트를 넘지 않아야 합니다. |
데이터베이스 크기 | MMAPv1 스토리지 엔진은 각 데이터베이스를 16,000개 이하의 데이터 파일로 제한합니다. |
데이터 크기 | MMAPv1의 경우 단일 mongod 인스턴스는 기본 운영 체제에서 제공하는 최대 가상 메모리 주소 공간을 초과하는 데이터 세트를 관리할 수 없습니다. |
데이터베이스의 컬렉션 수 | MMAPv1 스토리지 엔진의 경우, 데이터베이스 내 컬렉션의 최대 수는 네임스페이스 파일의 크기와 데이터베이스 내 컬렉션의 인덱스 수에 따라 결정됩니다. |
절차
다음 절차는 롤링 방식으로 복제본 세트를 업데이트합니다. 이 절차는 먼저 세컨더리 멤버를 업데이트한 다음 프라이머리 를 강등시키고 물러난 멤버를 업데이트합니다.
멤버를 WiredTiger로 업데이트하려면 멤버의 데이터를 제거하고 WiredTiger로 mongod
를 시작한 다음 초기 동기화를 수행합니다.
A. 세컨더리 멤버를 WiredTiger로 업데이트합니다.
세컨더리 멤버를 한 번에 하나씩 업데이트합니다.
세컨더리 멤버를 종료합니다.
mongosh
에서 세컨더리를 종료합니다.
use admin db.shutdownServer()
WiredTiger로 실행되는 새 mongod
에 대한 데이터 디렉토리를 준비합니다.
WiredTiger 스토리지 엔진으로 실행할 새 mongod
인스턴스에 대한 데이터 디렉토리를 준비합니다. mongod
에는 이 디렉토리에 대한 읽기 및 쓰기 권한이 있어야 합니다. 중지된 세컨더리 멤버의 현재 데이터 디렉토리 내용을 삭제하거나 새 디렉토리를 완전히 만들 수 있습니다.
mongod
WiredTiger를 사용하면 다른 스토리지 엔진으로 생성된 데이터 파일로 시작되지 않습니다.
WiredTiger의 구성을 업데이트합니다.
mongod
인스턴스 구성에서 MMAPv1 구성 옵션을 제거합니다.
WiredTiger로 mongod
를 시작합니다.
mongod
을(를) 시작하고 wiredTiger
을(를) --storageEngine
(으)로 지정하고 준비된 WiredTiger용 데이터 디렉토리를 --dbpath
으)로 지정합니다.
필요에 따라 추가 옵션을 지정합니다(예: --bind_ip
).
경고
공개적으로 액세스할 수 있는 IP 주소에 인스턴스를 바인딩하기 전에 무단 액세스로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 보안 검사 목록을 참조하세요. 최소한으로 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려하세요.
--dbpath
에 데이터가 없으므로 mongod
초기 동기화 를 수행합니다. 초기 동기화 프로세스의 길이는 데이터베이스의 크기와 복제본 세트 멤버 간의 네트워크 연결에 따라 달라집니다.
구성 파일에서 옵션을 지정할 수도 있습니다. 스토리지 엔진을 지정하려면 storage.engine
설정을 사용합니다.
나머지 세컨더리 멤버에 대해 이 단계를 반복하여 한 번에 하나씩 업데이트합니다.
B. 프라이머리를 강등합니다.
중요
복제본 세트의 모든 멤버가 WiredTiger를 사용하도록 업데이트하는 경우, 프라이머리를 업데이트하기 전에 먼저 모든 세컨더리 멤버가 업데이트되었는지 확인합니다.
모든 세컨더리 멤버가 WiredTiger로 업그레이드되면 mongosh
를 프라이머리에 연결하고 rs.stepDown()
를 사용하여 프라이머리를 물러나고 새 프라이머리를 선택합니다.
rs.stepDown()
C. 강등된 프라이머리를 업데이트합니다.
프라이머리가 물러나 세컨더리가 되면 이전과 같이 WiredTiger를 사용하도록 세컨더리를 업데이트합니다.
세컨더리 멤버를 종료합니다.
mongosh
에서 세컨더리를 종료합니다.
use admin db.shutdownServer()
WiredTiger로 실행되는 새 mongod
에 대한 데이터 디렉토리를 준비합니다.
WiredTiger 스토리지 엔진으로 실행할 새 mongod
인스턴스에 대한 데이터 디렉토리를 준비합니다. mongod
에는 이 디렉토리에 대한 읽기 및 쓰기 권한이 있어야 합니다. 중지된 세컨더리 멤버의 현재 데이터 디렉토리 내용을 삭제하거나 새 디렉토리를 완전히 만들 수 있습니다.
mongod
WiredTiger를 사용하면 다른 스토리지 엔진으로 생성된 데이터 파일로 시작되지 않습니다.
WiredTiger의 구성을 업데이트합니다.
mongod
인스턴스 구성에서 MMAPv1 구성 옵션을 제거합니다.
WiredTiger로 mongod
를 시작합니다.
mongod
을(를) 시작하고 wiredTiger
을(를) --storageEngine
(으)로 지정하고 준비된 WiredTiger용 데이터 디렉토리를 --dbpath
으)로 지정합니다.
필요에 따라 추가 옵션을 지정합니다(예: --bind_ip
).
경고
공개적으로 액세스할 수 있는 IP 주소에 인스턴스를 바인딩하기 전에 무단 액세스로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 보안 검사 목록을 참조하세요. 최소한으로 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려하세요.
--dbpath
에 데이터가 없으므로 mongod
초기 동기화 를 수행합니다. 초기 동기화 프로세스의 길이는 데이터베이스의 크기와 복제본 세트 멤버 간의 네트워크 연결에 따라 달라집니다.
구성 파일에서 옵션을 지정할 수도 있습니다. 스토리지 엔진을 지정하려면 storage.engine
설정을 사용합니다.