포시코딩

MongoDB Atlas에서 Local MongoDB로 데이터 옮기기 (Migrating from MongoDB Atlas to a local MongoDB) 본문

MongoDB

MongoDB Atlas에서 Local MongoDB로 데이터 옮기기 (Migrating from MongoDB Atlas to a local MongoDB)

포시 2022. 10. 4. 21:58
728x90

한글로 해당 내용을 찾긴 애매해서 구글링하기 쉽게 영어로 제목을 작성했는데 이 글을 보는 분들에게 도움이 됐음 좋겠다.

 

 

기존에 MongoDB Atlas라는 클라우드 데이터베이스를 통해 mongoDB를 사용했었는데

무료 클라우드 서비스다보니 사용하면서 오류 및 딜레이도 있고

데이터를 수정했다 락이 걸려 하루종일 뭐가 문제인지 찾아보는 일도 있었다.

 

때문에 이번에 새 프로젝트를 시작하기 전 예전에 애용했었던

MySQL, MSSQL처럼 local에 직접 설치해 사용하려고 마음 먹었다.

하지만 진행하려던 새 프로젝트가 기존 프로젝트를 리부팅 하는거기 때문에 데이터는 가져와야하는 상황.

 

데이터도 얼마 없고 경험도 없었다면 하나하나 다시 데이터를 넣었을텐데 

MongoDB Atlas에서 데이터를 추출해 local DB로 넣을 방법이 있을거 같다는 생각에 구글링을 시작했다.

 

결과적으로 성공했고, 공식홈페이지, 블로그와 stackoverflow 양키성님의 질문 답변을 통해 도움을 많이 받았다.

 

 

https://cloud.mongodb.com/v2/62844a0642fe7a26295e05ef#clusters/commandLineTools/Cluster0

 

Cloud: MongoDB Cloud

 

account.mongodb.com

https://velog.io/@yeonlisa/MongoDB-Importing-Exporting

 

 

MongoDB - Importing & Exporting

데이터를 어떤 로컬 장치나 다른 시스템으로 내보내거나, 혹은 가져온다고 가정 했을 때 데이터 형식에 따라 import(가져옴)와 export(내보냄) 명령어가 달라진다.데이터 형식의 특징이 다르기 때문

velog.io

https://stackoverflow.com/questions/48682173/how-to-import-dump-folder-into-mongodb-database

 

How to import dump folder into mongodb database?

I have created a mongo dump from a remote server and .bson and .metadata files stored in to a folder. I want to import this folder into my local mongodb. I am using robomongo as a mongodb client u...

stackoverflow.com

 

제일먼저 MongoDB Database Tools를 설치한다. 링크

export / import 를 하기위한 도구들이 여기 있기 때문.

해당 포스팅에선

export에 mongodump를,

import에 mongorestore를 사용할거임

 

windows 기준 zip 파일일텐데 압축해제 후 해당 파일들을 mongoDB가 설치된 경로에 옮겨준다.

C:\Program Files\MongoDB\Server\6.0

이제 준비 끝

MongoDB Atlas로 접속 후 옮길 DB가 있는 클러스터에서 제일 오른쪽에 있는 Cmd Line Tools 탭을 클릭

Binary Import and Export Tools로 진행할 예정이다.

그다음 명령프롬프트를 키고 export된 파일들을 받을 폴더로 먼저 이동한다.

나는 저번에 만든 c:\data\ 폴더에서 진행했음

mongodump에 해당하는 부분을 복사해서 비밀번호란도 채워넣은 후 입력해준다.

 

done dumping ~ 어쩌구를 하며 dump 폴더가 생성됨

들어가보면 원하던 Collection들이 다 들어있는걸 확인할 수 있다.

 

이제 내 local db에 넣어보자

이거는 지금 진행하는 DB -> 파일 -> DB 방식이 아니고 

A DB -> B DB 로 쏘는 방식으로 보여 패스하고 다른 방법을 찾아봤다. (맞는지 누가 테스트좀..)

구글링해서 답을 얻을 수 있었는데

그냥 간단하게 

mongorestore -d {db_name} {dump_folder_path}

만 쓰면 된다고 한다.

바로 테스트

GDGM이라는 db_name으로 가져올거고

해당 데이터들은 dump폴더안 GDGM폴더에 있기 때문에 경로를 저렇게 써줬다.

엔터를 누르니 마지막에 successfully된 항목 개수가 뜨고 실패한건 없다고 나오니 잘 된 것 같다.

켜져있던 Compass를 디스커넥트하고 다시 접속해보니

기본으로 있던 admin, config, local들 사이에

내 GDGM이라는 db가 있는것을 확인할 수 있었다!

안에 내용물도 제대로 있는지 확인까지 했으니 이제 제대로 개발을 시작할 준비가 끝났다..

 

 

위 내용중 버전이 바뀌며 달라질 내용도 있을거고

저와 다른 환경이면 진행 방법에 상이한 부분이 있을건데

만약 진행하며 그런게 있다면 댓글로 정보 공유 부탁드립니다.

728x90