Heroku의 대표적인 MongoDB add-on인 mLab이 2020년 11월 10일 Heroku apps로부터 제거된다. (관련링크)
UOSTime은 mLab을 사용중이었고, 따라서 DB를 옮길 필요가 생겼다. 우리는 MongoDB Atlas를 선택했다. 무료로 사용할 수 있고 전세계 다양한 지역에 DB가 있어서 지연시간을 최소화할 수 있으며, 충분히 신뢰할 수 있고 보안도 우수하기 때문이다.
DB를 옮기기 위해서, mLab으로부터 DB의 내용을 파일로 추출한 다음, Atlas에 넣어주었다.
전제조건
이 글은 DB를 옮기는 과정을 간단히 적은 것으로 다음을 전제로 설명한다.
- 본인이 사용하는 시스템에 Mongo가 설치되어 있다. 나는 Windows를 사용하므로 이 글 또한 Windows를 기준으로 한다.
- 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를 선택하여 확인할 수 있다.