mongodump 압축 백업과 네임스페이스 변경 복구하기

목차

MongoDB Database Tools의 mongodump와 mongorestore를 사용하는 절차입니다. 두 도구는 mongosh 안이 아니라 OS 셸에서 실행합니다. 서버 버전과 도구 호환성을 확인하고 복구 대상과 원본의 major 버전·FCV 조건도 확인합니다.

디렉터리 백업

원본의 --host --localhost 오타를 수정했습니다. 사용자 lieper는 필요한 백업 권한이 이미 있다고 가정합니다. 암호 값은 명령에 적지 않고 프롬프트로 입력합니다.

TERMINAL / CONFIG
umask 077
mkdir -p /home/lieper/mongodump
mongodump --host localhost --port 57017 --username lieper --authenticationDatabase admin --db appdb --gzip --out /home/lieper/mongodump

--gzip은 BSON 파일을 압축합니다. 컬렉션 데이터·메타데이터·인덱스 정의가 대상이며, 실행 중 쓰기가 있는 데이터의 일관성은 별도로 검토합니다. 특정 DB 덤프에 --oplog만 붙이면 모든 문제가 해결된다고 가정하지 않습니다.

별도 DB로 시험 복구

백업 루트 디렉터리를 지정하고 --nsInclude로 원본 네임스페이스를 고릅니다. --nsFrom과 --nsTo를 함께 사용하면 appdb의 컬렉션을 restore_check로 바꾸어 복구할 수 있습니다. 별도 시험 서버에서 진행하는 것을 우선합니다.

TERMINAL / CONFIG
mongorestore --host localhost --port 57017 --username lieper --authenticationDatabase admin --gzip --nsInclude='appdb.*' --nsFrom='appdb.*' --nsTo='restore_check.*' /home/lieper/mongodump

셸이 *를 확장하지 않도록 네임스페이스 패턴을 따옴표로 감쌉니다. 같은 대상에 반복 복구하면 중복 키 오류나 기존 문서가 남는 문제가 있을 수 있습니다. --drop은 기존 컬렉션을 삭제하므로 일반 시험 명령에 자동으로 추가하지 않습니다.

복구 검증

종료 코드와 복구 로그의 실패 건수를 확인합니다. 컬렉션 목록·문서 수·인덱스·대표 조회 결과를 비교한 뒤 백업을 별도 저장소에 보관합니다. 사용자·역할까지 복구해야 한다면 데이터만의 백업과 범위가 다르므로 따로 설계합니다.
참고: https://www.mongodb.com/docs/database-tools/mongorestore/

DB › MongoDB
MongoDB 목록