🛠️ MongoDB DBA가 꼭 챙겨야 할 관리 포인트 정리


MongoDB를 운영 환경에 도입했다면, 이제부터는 DBA 입장에서의 관리 전략이 중요합니다.
이 글에서는 MongoDB를 안정적으로 운영하기 위한 주요 관리 포인트를 하나씩 짚어볼게요.


1️⃣ 운영 환경 구성

✅ Replica Set

  • MongoDB 고가용성을 위한 기본 구성
  • 최소 3개 이상의 노드 구성: 1 Primary + 2 Secondary
  • 자동 Failover 지원
rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "mongo1:27017" },
    { _id: 1, host: "mongo2:27017" },
    { _id: 2, host: "mongo3:27017" }
  ]
});

✅ Sharding

  • 수평 확장(Scale-out)을 위한 기능
  • 샤드 키(Shard Key) 선정이 매우 중요
  • 불균형 파티셔닝은 성능 저하로 이어짐
📌 샤딩은 반드시 트래픽 패턴 기반으로 설계해야 합니다.

2️⃣ 모니터링 포인트

운영 환경에서는 지속적인 모니터링이 필수입니다.

🧪 주요 명령어

  • mongostat: 실시간 트래픽 확인
  • mongotop: 컬렉션별 읽기/쓰기 시간 확인

📊 MongoDB Atlas Monitoring

  • CPU, 메모리, IOPS, 컬렉션별 쿼리 수행 시간
  • Slow Query Analytics 제공
🔍 300ms 이상 걸리는 쿼리는 slow query log로 추적하세요.

3️⃣ 성능 최적화

✅ 인덱스 관리

  • 쿼리에 사용되는 필드는 인덱스 필수
  • 복합 인덱스는 순서 중요 ({ a: 1, b: 1 })

✅ 쿼리 분석

db.collection.find({ a: 1 }).explain("executionStats")
  • COLLSCAN → 인덱스 미사용 경고
  • IXSCAN → 인덱스 정상 사용

✅ Write Concern / Read Concern

  • 데이터 일관성을 위해 적절히 조정 필요
  • 기본: { w: "majority" }

4️⃣ 백업과 복구

🧰 mongodump & mongorestore

# 백업
mongodump --out=/data/backup

# 복구
mongorestore /data/backup

🌀 Point-in-Time 복구 (MongoDB Atlas)

  • 클러스터 설정 시 PITR(지점 복구) 설정 가능
  • 실수로 인한 삭제/변경 복구에 유용

5️⃣ 사용자 권한과 보안

🔐 Role-Based Access Control (RBAC)

  • read, readWrite, dbAdmin 등 역할 기반 권한
  • 운영 계정에는 최소 권한 부여 원칙 적용

🔒 인증 & 암호화

  • 비밀번호 인증 기본
  • LDAP, Kerberos 등 외부 인증 연동 가능
  • 데이터 암호화: TLS/SSL + Encryption-at-Rest

6️⃣ 장애 대응 체크리스트

  • Primary 전환 감지 (rs.status())
  • Secondary 복제 지연 확인 (Replication Lag)
  • 디스크 공간, 커넥션 수 상시 모니터링
  • 애플리케이션에서 재시도 로직 포함 여부 확인
📍 MongoDB는 장애 발생 시 자동 복구 기능이 있지만, DBA의 사전 대응 설계가 핵심입니다.

✅ 마무리 요약

  • Replica Set은 기본, Sharding은 상황에 따라
  • 인덱스/쿼리 분석은 성능 유지의 핵심
  • 권한 관리와 백업은 운영 안정성의 필수 요소
  • Atlas 활용 시 시각화된 모니터링과 자동 백업이 장점

 

도움이 되셨다면 공감과 구독도 부탁드립니다! 😊

+ Recent posts