MongoDB의 저널링 이해



블로그는 MongoDB의 저널링에 대한 간략한 설명을 제공합니다.

Mongod 쓰기 작업 작업

Mongod는 주로 공유 뷰의 메모리에서 쓰기 작업을 호스팅합니다. 실제 디스크에 메모리 매핑이 있기 때문에 공유라고합니다.





배열 정렬 C ++

예를 들어, 사용자의 데이터 파일은 데이터 dd에 보관되며 메모리 매핑이 있습니다. 여기서는 먼저 모든 데이터를 메모리로 푸시하고 지정된 간격 후에 데이터를 메모리로 플래시합니다.이 작업은 60 초마다 발생하며 사용자는이 프로세스에 영향을주지 않습니다.

여기서이 프로세스를 No Journal 옵션이라고합니다. 즉, 메모리에서 디스크로 데이터를 저장하는 데 60 초의 지연이 있거나 갑작스러운 종료가 발생하면 메모리에있는 모든 데이터를 검색 할 수 없음을 의미합니다. 따라서 저널링이 여기서 관련됩니다.



저널링은 기본적으로 버전 2.4.10 이전에는 비활성화되었지만 이후에는 활성화되었음을 아는 것이 중요합니다.

mongod 프로세스가 시작되는 순간 다음 문장이 관찰 될 수 있습니다.

저널 디렉토리 = D : Rana2custom datajournal



여기에서 Journal Directory는 데이터 디렉토리 내의 하위 디렉토리이며 기본적으로 활성화되어 있습니다.

MongoDB의 저널링이란 무엇입니까?

이 프로세스에서 mongod에서 쓰기 작업이 발생하고 개인보기에서 변경 사항이 생성됩니다. 첫 번째 블록은 메모리이고 두 번째 블록은‘내 디스크’입니다. '저널 커밋 간격'이라고하는 지정된 간격 후에 개인보기는 해당 작업을 저널 디렉터리 (디스크에 있음)에 기록합니다.

저널 커밋이 발생하면 mongod는 데이터를 공유 뷰로 푸시합니다. 프로세스의 일부로 공유 뷰에서 실제 데이터 디렉토리에 기록됩니다 (이 프로세스는 백그라운드에서 발생 함). 기본적인 장점은주기가 60 초에서 200 밀리 초로 단축된다는 것입니다.

어느 시점에서나 중단이 발생하거나 플래시 디스크를 지난 59 초 동안 사용할 수없는 시나리오 (저널 디렉토리 / 쓰기 작업의 기존 데이터를 염두에 두어야 함)에서 다음에 mongod가 시작되면 기본적으로 모든 쓰기 작업을 재생합니다. 실제 데이터 디렉토리에 기록하고 기록합니다.

어떻게 작동합니까?

여기서 커밋이 발생하면 동일한 작업이 공유보기에서 재생되고 60 초 후에 플래시 디스크가 발생합니다.

깜박 인 후 데이터가 처리됩니다. 여기에있는 데이터는 저널 디렉터리에서 처리 된 것으로 표시됩니다. 즉, 60 초마다 복사 된 데이터와 저널에서 제거 될 데이터를 확인합니다.

저널링을 사용하는 것은 로그를 사용하는 것과 같으며, 그 이유는 내구성을 높이기 위해 쓰기 작업 로그를 생성하기 때문입니다. 저널링은 임시 저장소이므로 쓰기 작업 로그 만 저널 디렉터리에 보류 상태로 유지됩니다. 또한 공유 뷰에는 데이터가 있지만 저널 디렉토리에는 작업이 있습니다.

예를 들어, 사용자가 저널링없이 일부 데이터를 쓰고 있다면 어떤 데이터가 기록 되든 메모리 매핑을 통해 사용자는 데이터가 기록 된 위치를 알 수 있습니다.

비공개보기와 공유보기 간 연결

커밋이 발생하면 저널 디렉터리에 프로세스로 표시되고 공유 / 개인보기의 현재보기 (데이터 공유 없음)에 대해 다른 매핑이 수행됩니다.

차트에서 모든 파란색 항목은 RAM (랜덤 액세스 메모리)에 있으며 Saffron은 디스크를 나타냅니다.

데이터가 데이터 디렉토리에 플래시되지 않고 쓰기 작업이 데이터 디렉토리에있는 경우 mongod는 데이터 디렉토리에 쓰기 작업을 다시 처리하고 적용합니다.

주목해야 할 중요한 점은 저널 커밋 전에 충돌이 발생하는 시나리오에서추가됨200 밀리 초 이내에 손실됩니다.

자바 스크립트의 이벤트는 무엇입니까

또한 저널 디렉토리에 실제 작업을 계속 기록합니다.

예제 문에서 ‘Db.class.insert’ 삽입 작업 인 데이터는 클래스 작업에 삽입됩니다. 따라서 클래스 작업은 실제로 유지되지 않지만 작업은 상주합니다.

또한 저널 사용이 지연되면 성능에 영향을 미친다는 사실도 관찰해야합니다.

비동기식 프로세스로 백그라운드에서 저널링을 사용하고 동기식으로 작업을 수행하지 않을 수도 있습니다. 저널링은 프로덕션에서도 권장됩니다.

두 번째로 '200 밀리 초'의 저널 커밋 간격 시간 프레임을 구성 할 수 있으며, 3 ~ 300 밀리 초 사이의 '– – 저널 커밋 간격'으로 활성화 할 수 있으며, 이는 모두 작동하지 않는 요구 사항에 따라 달라집니다 (쓰기 빈도 및 저널 디렉토리에 얼마나 자주 쓰고 싶어하는지). 과중한 쓰기 작업이 진행되는 경우에는 밀리 초를 줄이는 것이 좋습니다.

또한 개인보기는 공유보기와 매핑되므로 개인보기는 실제 데이터를 보유합니다. 여기에서 공유 된보기는 데이터 디렉토리로 깜박입니다.

이 프로세스에서 얻을 수있는 이점은 서버 충돌이 발생하고 플래시에 기록해야하는 데이터가없는 경우 다음 서버를 다시 시작하는 mongod가 저널 디렉터리에서 복구를 확인한다는 것입니다. 데이터 디렉터리에서 작업을 복구, 재생 및 쓰기 한 다음 시작합니다.

질문이 있으십니까? 댓글 섹션에 언급하시면 다시 연락 드리겠습니다.

Windows 10에 PHP를 설치하는 방법

관련 게시물: