Programing

mongodb의 저널 파일을 삭제해도 안전합니까?

lottogame 2020. 11. 20. 08:23
반응형

mongodb의 저널 파일을 삭제해도 안전합니까?


3.1G 저널 파일을 삭제 sudo service mongodb restart하면 실패합니다. 그러나이 파일은 너무 많은 공간을 차지하고 있습니다. 이 문제를 어떻게 해결할 수 있습니까? 어떻게 제거 할 수 있습니까?

bash$ du -sh /var/lib/mongodb/*
4.0K    _tmp
65M auction_development.0
128M    auction_development.1
17M auction_development.ns
3.1G    journal
4.0K    mongod.lock

요약 : 두 가지 옵션이 있습니다. --smallfilesMongoDB를 시작할 때 시작 옵션을 사용하여 저널 파일의 크기 를 128MB 제한 하거나 --nojournal옵션을 사용하여 저널링을 끕니다 . --nojournal프로덕션에서 사용 하는 것은 일반적으로 나쁜 생각이며 개발 중에도 다른 쓰기 문제를 사용하여 dev 및 prod에서 다른 코드를 사용하지 않는 것이 좋습니다.

긴 대답 : 아니요, 저널 파일을 삭제하는 것은 안전하지 않습니다. 저널링의 개념은 다음과 같습니다.

쓰기가 들어옵니다. 이제 쓰기를 지속적으로 만들고 데이터베이스를 지속하려면 쓰기가 어떻게 든 디스크로 이동해야합니다.

안타깝게도 디스크 쓰기는 RAM 쓰기에 비해 오랜 시간이 걸리므로 데이터베이스는 딜레마에 있습니다. 예기치 않은 종료로 인해 데이터가 손실 될 수 있으므로 디스크에 쓰지 않는 것은 위험합니다. 그러나 모든 단일 쓰기 작업에 대해 디스크에 기록하면 데이터베이스의 성능이 매우 저하되어 실제 목적으로 사용할 수 없게됩니다.

이제 데이터 파일 자체에 쓰는 대신 모든 요청에 ​​대해 작성하는 대신 데이터베이스는 아직 실제 데이터 파일에 커밋되지 않은 모든 작업을 저장하는 저널 파일에 추가합니다. 이것은 파일이 항상 읽고 쓰기 때문에 이미 '핫'하고 파일 묶음이 아닌 하나의 파일이며 마지막으로 모든 보류중인 작업을 100ms마다 일괄 적으로 작성하기 때문에 훨씬 빠릅니다. 기본적으로. 중간에이 파일을 삭제하면 혼란이 생깁니다.


mnemosyn의 답변에서 설명했듯이 저널링은 스토리지 엔진에 필수적입니다. 다행히도 어느 정도 제어 할 수 있습니다. 다음은 MongoDB 3.2까지 기본값이었던 MMAPv1 스토리지 엔진 용으로 작성되었습니다 . 그런 다음 WiredTiger 가 선택한 엔진이 되었으며이 답변의 하단에서 더 많은 정보를 찾을 수 있습니다.

MMAPv1

MongoDB <2.6 (비 YAML 구성)

개발 서버의 경우 다음 절차를 사용했습니다.

cp -p /etc/mongodb.conf /etc/mongodb.conf.orig
vi /etc/mongodb.conf

이제 삽입

smallfiles=true

mongodb.conf에 저장 한 다음 저장하십시오. smallfiles 는 저널 파일을 128MB로 제한합니다.

service mongodb stop
rm -rf /var/lib/mongodb/journal/*
service mongodb start

MongoDB> = 2.6 (YAML 구성)

YAML 구성 스타일 과 함께 MMAPv1을 사용하는 경우 위와 동일한 단계를 사용하여 구성을 백업하지만

  mmapv1:

구성 블록, 삽입

    smallFiles: true 

. 그런 다음 위와 같이 진행하여 저널을 제거하는 동안 서버를 다시 시작합니다.

WiredTiger (MongoDB> = 3.0, 3.2 이후 기본값)

개발 컴퓨터에서는 저널 압축 이 기본적으로 활성화되어 있으므로 WiredTiger 아래의 저널 파일은 MMAPv1보다 기본적으로 약간 작아야합니다 . 문서 에 따르면 "MongoDB 용 WiredTiger 저널 파일의 최대 크기 제한은 약 100MB입니다." "60 초 또는 2GB의 저널 데이터 간격으로 체크 포인트를 생성합니다 (즉, 스냅 샷 데이터를 디스크에 기록)."

따라서 데이터베이스에서 적은 양의 요청 (변경할 데이터가 거의 없음) 만 실행하는 경우 WiredTiger를 사용하는 저널 파일은 100MB의 낮은 배수를 초과하지 않아야합니다. 그러나 저널 파일의 크기는 구성 할 수없는 것 같습니다.


mongodb그 이후로 진화했습니다. 이제 v3.4.1 안정 .
나는 오전 V3.2 방법은 다음과 같습니다
주석 # mmapv1:이 보이는 있도록 :

  mmapv1:
    smallFiles: true 

다른 버전이있는 경우 페이지 storage Options에서 찾아보십시오 reference/configuration-options.

비우는 것을 잊지 마세요 journal

sudo service mongodb stop
sudo rm -rf /var/lib/mongodb/journal/*
sudo service mongodb start

참고 URL : https://stackoverflow.com/questions/19533019/is-it-safe-to-delete-the-journal-file-of-mongodb

반응형