자체 관리형 복제본 세트를 WiredTiger 로 변경
참고
collMod
명령에 대한noPadding
및usePowerOf2Sizes
MMAPv1 옵션이 제거되었습니다.WiredTiger로 업그레이드해야 합니다. MongoDB는 버전 4.2에서 더 이상 사용되지 않는 MMAPv1 스토리지 엔진을 제거했습니다.
WiredTiger를 사용하도록 복제본 세트를 업데이트하려면 이 튜토리얼을 사용하세요. 이 절차는 다운타임을 방지하기 위해 롤링 방식으로 복제본 세트를 업데이트합니다.
고려 사항
복제본 세트에는 서로 다른 스토리지 엔진을 사용하는 노드가 있을 수 있습니다. 따라서 노드가 WiredTiger 스토리지 엔진을 사용하도록 업데이트할 수 있습니다.
PSA 3-멤버 아키텍처
WiredTiger에서 사용할 수 있는 "majority"
읽기 고려는 기본적으로 활성화되어 있습니다. 그러나 PSA(프라이머리-세컨더리-중재자) 아키텍처를 사용하는 세 멤버 복제본 세트에서는 "majority"
읽기 고려를 비활성화할 수 있습니다. 세 멤버 PSA 아키텍처에 대한 "majority"
읽기 고려를 비활성화하면 캐시 압력 증가를 방지할 수 있습니다.
아래의 절차 는 "majority"
--enableMajorityReadConcern false
를포함하여 PSA 아키텍처에 대한 읽기 고려를 비활성화합니다.
참고
"majority"
읽기 고려(read concern)를 비활성화해도 변경 스트림 가용성에는 영향을 주지 않습니다.
PSA 아키텍처 및 읽기 고려 "majority"
에 대한 자세한 내용은 프라이머리-세컨더리--중재자 복제본 세트를 참조하세요.
로컬 호스트에 기본 바인딩
XFS 및 WiredTiger
WiredTiger 스토리지 엔진의 경우, Linux에서는 데이터 저장 노드에 XFS를 사용하는 것이 좋습니다. 자세한 내용은 커널 및 파일 시스템을 참조하세요.
MMAPv1 전용 제한 사항
WiredTiger로 업그레이드하면 WiredTiger 배포에는 다음과 같은 MMAPv1 전용 제한 사항이 적용되지 않습니다:
MMAPv1 제한 사항 | 짧은 설명 |
---|---|
네임스페이스 수 | MMAPv1의 경우 네임스페이스 수는 네임스페이스 파일 크기를 628로 나눈 값으로 제한됩니다. |
네임스페이스 파일 크기 | MMAPv1의 경우 네임스페이스 파일은 2047메가바이트를 넘지 않아야 합니다. |
데이터베이스 크기 | MMAPv1 스토리지 엔진은 각 데이터베이스를 16,000개 이하의 데이터 파일로 제한합니다. |
데이터 크기 | MMAPv1의 경우 단일 |
데이터베이스의 컬렉션 수 | MMAPv1 스토리지 엔진의 경우, 데이터베이스 내 컬렉션의 최대 수는 네임스페이스 파일의 크기와 데이터베이스 내 컬렉션의 인덱스 수에 따라 결정됩니다. |
절차
다음 절차는 롤링 방식으로 복제본 세트를 업데이트합니다. 절차는 세컨더리 멤버를 먼저 업데이트한 다음 프라이머리를 스텝다운하고 스텝다운된 멤버를 업데이트합니다.
멤버를 WiredTiger로 업데이트하기 위한 절차로 멤버의 데이터를 제거하고 WiredTiger로 mongod
를 시작한 다음 초기 동기화를 수행합니다.
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'를 사용하도록 업데이트하는 경우, 프라이머리 멤버를 업데이트하기 전에 모든 세컨더리 멤버가 먼저 업데이트되었는지 확인하세요.
모든 세컨더리 멤버가 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
설정을 사용합니다.