서로 다른 서버 간 MongoDB 컬렉션 데이터 마이그레이션(ubuntu)

2025. 7. 3. 20:30·개발 일상

상황

특정 백엔드 서버의 추가 기능 개발을 위해 동일한 테스트 환경 구축 작업을 하며, MongoDB에서 특정 컬렉션만 복사해서 옮겨야 할 일이 생겼다
이 경우, 써드파티 프로그램을 이용하는 방법도 있지만, 라이센스 이슈나 상업적 이용 이슈로 인해 CLI를 활용하는 것이 나을 수 있다.
이번에는 mongodump, mongorestore 명령어를 이용해 서로 다른 서버에 위치한 MongoDB 간 컬렉션 복사를 진행하였다.

작업 환경

  • os: Ubuntu 22.04
  • 외부의 특정 원격 서버 A(특정 ip)
  • 테스트용 로컬 서버 B (localhost)

목적

서버 A에 있는 MongoDB의 특정 컬렉션을 로컬 서버 B로 동일하게 복사하되, 컬렉션 데이터와 메타데이터(bson + metadata.json)를 그대로 가져와야 한다.

1. 원격 서버의 컬렉션 백업

로컬 PC에서 다음 명령어를 실행
--host는 원격 서버 A의 MongoDB 주소를 지정하고, --out은 로컬 디렉토리로 지정했다.

mongodump \
  --host <원격서버_IP> \
  --port 20717 \
  -u <사용자명> \
  --authenticationDatabase admin \
  -d <원본DB명> \
  -c <컬렉션명> \
  --out ./mongo_backup
  • 포트의 경우 기본 포트(27107)가 아닌 경우 해당 포트 번호를 입력
  • 명령어 실행 시 비밀번호 입력이 필요한 경우 자동으로 프롬프트에서 입력을 요청하므로, 보안 상 이유로도 별도로 -p 옵션을 넣지 않는게 좋다
  • 인증 db(authenticationDatabase)의 경우 기본적으로 변경 안했으면 admin지만, 변경한 경우 해당 db명 입력
  • 저장 경로는 위에서는 특정 경로(./mongo_backup)입력했지만, 각자 원하는 경로로 설정하면 된다

백업이 완료되면 저장 경로에 다음과 같은 파일이 생성된다.

./mongo_backup/
  └── <원본DB명>/
        ├── <컬렉션명>.bson
        └── <컬렉션명>.metadata.json

백업을 원격 서버에서 실행하고, 파일이 원격 서버에 저장된 경우에는
scp, rsync 등을 통해 백업 파일을 로컬로 복사해야 한다.
하지만 위처럼 로컬에서 직접 mongodump를 실행한 경우에는
백업 파일 이동 단계는 생략 가능하다.

2. 로컬 서버로 컬렉션 복원

백업된 .bson 파일을 로컬 MongoDB로 복원한다

mongorestore \
  --host localhost \
  --port 27017 \
  -u <사용자명> \
  --authenticationDatabase admin \
  -d <대상DB명> \
  -c <컬렉션명> \
  ./mongo_backup/<원본DB명>/<컬렉션명>.bson
  • 마찬가지로 비밀번호 입력이 필요한 경우 자동으로 요청하므로, -p 옵션을 넣지 않아도 된다
  • 복원 시 .metadata.json도 자동으로 참조되어 인덱스까지 포함해 복구된다

3. 복원 결과 확인

MongoDB Shell 또는 mongosh를 이용해 데이터가 정상 복원됐는지 확인하거나 또는 사용하는 써드파티 프로그램(studio 3t, mongodb compass)로 조회해보면 된다.

아래는 cli(mongosh) 확인 예시

mongosh --host localhost -u <사용자명> --authenticationDatabase admin
use <대상DB명>
db.<컬렉션명>.find({})

정상적으로 데이터들이 출력되었는지 확인

정리

데이터 마이그레이션을 수동으로 진행할 일이 많다면 이 방식이 가장 안정적이고 명확하다.
GUI 툴에 비해 유연성이 높고, 자동화에도 유리하다.

저작자표시 (새창열림)

'개발 일상' 카테고리의 다른 글

React 사이드바 토글 시 ECharts 레이아웃 깨짐 해결법 (w.ResizeObserver)  (0) 2025.11.27
Windows 서버에서 FastAPI 자동 실행 시 발생한 서비스 오류 대응기  (0) 2025.11.11
[ubuntu 22.04] 최신 chrome 브라우저에서 키보드 입력 문제 해결법  (1) 2025.06.23
YOLO 객체 감지 후 위험 영역 판단 로직 개선기  (1) 2025.06.10
대량의 파일, 효율적으로 압축 & 전송하기 – 우분투 기반 백업 최적화  (2) 2025.06.02
'개발 일상' 카테고리의 다른 글
  • React 사이드바 토글 시 ECharts 레이아웃 깨짐 해결법 (w.ResizeObserver)
  • Windows 서버에서 FastAPI 자동 실행 시 발생한 서비스 오류 대응기
  • [ubuntu 22.04] 최신 chrome 브라우저에서 키보드 입력 문제 해결법
  • YOLO 객체 감지 후 위험 영역 판단 로직 개선기
레실이
레실이
  • 레실이
    레실이의 티스토리
    레실이
  • 전체
    오늘
    어제
    • 분류 전체보기 (91)
      • SE Bootcamp 내용 정리 (63)
      • 알고리즘 연습 (7)
      • Project 주저리 (4)
      • 기술 면접 source (3)
      • 개발 일상 (12)
      • 생성 AI 활용 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    react
    state
    자료구조
    fastapi
    문자열
    객체
    MVC
    인증/보안
    ubuntu
    promise
    CSR
    useRef
    DOM
    Python
    CSS
    useState
    JavaScript
    node
    Linux
    IT
    데이터베이스
    mongoDB
    CORS
    PickAndDrink
    ORM
    JS
    비동기
    Ajax
    node.js
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
레실이
서로 다른 서버 간 MongoDB 컬렉션 데이터 마이그레이션(ubuntu)
상단으로

티스토리툴바