모니터링 및 백업

70_Lecture/MongoDB
공유하기:

모니터링 및 백업

1. 실시간 모니터링 도구

  • mongostat: 서버별로 초당 쿼리 수, 메모리 사용량, 연결 수 등을 실시간 테이블 형식으로 출력.
  • mongotop: 컬렉션별로 읽기/쓰기 대기 시간을 측정하여 어떤 컬렉션이 병목인지 파악.
  • db.serverStatus(): 엔진의 성능 카운터, 잠금(Lock) 상태 등 방대한 정보를 포함.

2. 백업 및 복구 방법

mongodump / mongorestore

  • 특징: BSON 형식으로 데이터를 덤프. 소규모 DB나 특정 데이터 레이아웃 이동에 적합.
  • 단점: 대규모 데이터셋에서는 성능 부하가 크고 시간이 오래 걸림.

정지 백업 (Filesystem Snapshot)

  • 특징: LVM이나 클라우드 스냅샷 기능을 사용하여 디스크 전체를 복사.
  • 유의: 데이터 불일치를 막기 위해 스냅샷 직전에 db.fsyncLock()을 걸거나 저널링이 활성화되어 있어야 함.

3. 사후 분석 (Profiling)

특정 시간 이상 소요되는 쿼리를 로그에 남겨 추적합니다.

  • 0: 프로파일링 끔.
  • 1: 특정 임계치(기본 100ms)를 넘는 쿼리만 기록.
  • 2: 모든 연산 기록.

4. 실습 명령어

# 터미널에서 전체 통계 확인
mongostat --host localhost:27017
 
# 특정 DB를 특정 폴더로 백업
mongodump --db myDB --out ./backup_data
 
# 백업 파일로 데이터 복구
mongorestore --db myDB ./backup_data/myDB

5. 시험 팁 (Certification Tips)

  • mongodumpmongoexport의 차이를 이해하세요 (mongoexport는 JSON/CSV 포맷으로 데이터 타입 유실 가능성이 있음).
  • 복제 환경(Replica Set)에서는 Secondary 노드에서 백업을 수행하여 Primary 부하를 줄이는 것이 정석입니다.

6. 베스트 프랙티스

  • 백업 파일이 제대로 작동하는지 정기적으로 복구(Restore) 테스트를 수행하세요.
  • 비정상적인 지연 시간이 발생할 경우 프로파일링 레벨을 1로 조정하여 병목 쿼리를 찾아내세요.