본문 바로가기

Develop

MongoDB migration from mLab to Atlas

Heroku의 대표적인 MongoDB add-onmLab이 2020년 11월 10일 Heroku apps로부터 제거된다. (관련링크)

 

mLab MongoDB Add-on Discontinued | Heroku Dev Center

mLab MongoDB Add-on Discontinued Change effective on 14 July 2020 The mLab team has discontinued their MongoDB add-on. The mLab MongoDB add-on will be removed from all Heroku apps on November 10, 2020. Users should remove add-on instances attached to their

devcenter.heroku.com

 

UOSTime은 mLab을 사용중이었고, 따라서 DB를 옮길 필요가 생겼다. 우리는 MongoDB Atlas를 선택했다. 무료로 사용할 수 있고 전세계 다양한 지역에 DB가 있어서 지연시간을 최소화할 수 있으며, 충분히 신뢰할 수 있고 보안도 우수하기 때문이다.

 

DB를 옮기기 위해서, mLab으로부터 DB의 내용을 파일로 추출한 다음, Atlas에 넣어주었다.

 

 

전제조건

이 글은 DB를 옮기는 과정을 간단히 적은 것으로 다음을 전제로 설명한다.

  1. 본인이 사용하는 시스템에 Mongo가 설치되어 있다. 나는 Windows를 사용하므로 이 글 또한 Windows를 기준으로 한다.
  2. MongoDB Atlas에 가입하여 새 프로젝트를 하나 생성하고 클러스터를 생성했다. 

 

 

DB 내용을 파일로 추출하기

MongoDB에서 하나의 DB는 여러 Collection으로 구성된다. MongoDB는 Collection별로 추출/삽입하거나 전체를 추출/삽입할 수 있는데, 나는 모든 Collection을 통째로 옮기고자 한다.

 

Mongo가 설치된 위치(나의 경우는 C:\Program Files\MongoDB\Server\4.2\bin 이다.)에서 dump라는 이름의 폴더를 만든다.

 

 

PowerShell이나 CMD 등을 관리자 권한으로 실행하고, 다음 명령을 실행한다.

 

mongodump -h mLab주소 -d DB이름 -u USER이름 -p USER비밀번호 -o ./dump

 

mLab주소는 대략 dsxxxxxx.mlab.com:xxxxx 같은 형태로 되어있다. DB이름과 USER이름, 비밀번호를 정확히 입력하여 실행하면 DB내용을 dump 폴더에 넣어준다.

 

위 내용은 mLab 웹페이지에서도 확인할 수 있다.

 

 

 

추출한 파일을 다른 DB에 넣기

 

PowerShell이나 CMD 등을 관리자 권한으로 실행하고, 다음 명령을 실행한다.

 

mongorestore --host HOST목록 --ssl --username USER이름 --password USER비밀번호 --authenticationDatabase admin

 

위 명령은 Atlas의 Cluster 화면에서 ... - Command Line Tools를 선택하여 확인할 수 있다.