[MongoDB] MongoDB Atlas 데이터들을 AWS 서버에 옮기기! (AWS EC2 인스턴스 생성, ubuntu에 MongoDB 설치, MongoDB Compass)

흑수·2021년 10월 13일
1

mongodb

목록 보기
1/1

안녕하세요. 오늘은 MongoDB Atlas의 데이터들을 AWS 서버에 MongoDB를 새롭게 만들어 옮기는 방법을 알아보겠습니다. 저는 음파 라는 음악 취향 공유 서비스를 운영하고 있는데 mongoDB Atlas M10 티어를 이용해서 디비를 관리하고 있습니다.

근데 왜 바꾸려고 하는가 ?!

첫째는 생각보다 돈이 많이 나가고, Atlas M10 티어를 통해 제공해주는 서비스를 이용하지 않기 때문입니다..

(사실 처음에 어떻게 하는지 몰라서 구글링해서 Atlas 무료 티어를 이용하다 M10 티어로 업그레이드 한 건 비밀)

대신, AWS EC2 인스턴스를 하나 만들어 그곳에 새롭게 mongoDB를 만들어주려고 합니다..!!

친구가 도와주기도 했고, 맨땅에 헤딩하면서 했기 때문에 차근차근 정리해보겠습니다.

AWS EC2

우선 몽고 디비를 호스팅할 서버가 필요한데요,, aws ec2 프리티어를 이용해서 인스턴스를 하나 만들어 줍니다. (차후에 api콜을 많이 하게 되면 값이 지불이 되지만, M10 티어보다는 훨씬 적은 비용입니다.)

인스턴스 생성 방법

  1. ec2에 접속하게 되면 우측 상단에 인스턴스 시작을 눌러줍니다.
  2. 여러 운영체제가 나오는데 해당하는 운영체제를 선택해줍니다.
    (저는 Ubuntu Server 20.04 LTS (HVM), SSD Volume Type을 선택했답니다.)
  3. 인스턴스 유형을 선택할 수 있는데, 프리 티어를 이용했어요.
  4. 시작하기
  5. 키 페어 생성 또는 선택을 하라고 하는데 ec2가 처음이신분은 생성을, 기존의 pem 키와 동일하게 이용하실 분은 선택하시면 됩니다.
  6. 짠 완성!

인바운드 규칙 설정

자 이제 포트를 누구에게 개방할 것인가,, 어떤 포트를 개방할 것인가를 설정해야 해요.
포트는 일종의 관문인데, 이곳을 통해 업로드나 다운로드 등이 가능하다고 해요.

그렇다면, 우리는 몽고디비를 호스팅할 서버를 만들었으니까, 외부에서 몽고디비를 이용하기 위해 이 서버로 들어올 수 있어야 겠죠?

인바운드 규칙을 설정해야 해요.

인바운드 규칙은 말 그대로 바운드(서버) 안으로 들어오는 규칙이에요. 그렇다면 어떤 포트를 이용해야 할까요? 설정하기 나름이겠지만 기본적으로 몽고디비에서 사용하는 포트는 디폴트는 27017이랍니다.

설정 방법
1. 해당하는 인스턴스를 클릭해서 들어갑니다.
2. 아래쪽 보안탭에 보이는 보안 그룹을 선택해서 들어갑니다.
3. 인바운드 규칙 수정을 눌러줍니다.
4. 유형은 사용자 지정 TCP를 선택하고 해당하는 포트를 입력(기본적으로는 27017) CIDR블록의 경우 접속을 허락할 IP를 적어주면 됩니다.
(0.0.0.0/0을 이용하면 모두에게 개방을 한다는 이야기에요. 다만, 모두에게 개방하다보니 보안상의 문제가 존재할 수 있습니다. 몽고디비에 요청할 서버의 IP를 알고 계신다면 여기에 적어주시면 될 것 같아요.)

ex) 내가 서비스하고 있는 서버의 IP가 123.123.123.123이라면 몽고디비 서버 개방하는 곳에 123.123.123.123/32를 적어주시면 된답니다. 혹시라도 로컬로 작업하는 경우에 집의 네트워크를 개방해주고, 카페 같은 곳에서 작업을 한다면 추가로 넣어줘야 해요. (0.0.0.0/0을 한번 넣어주면 어디든 접속 가능해요!!)

MongoDB

설치

패키지 관리 시스템에서 사용할 공개키를 가져옵니다.

> sudo wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - 

몽고디비를 위한 list 파일을 생성합니다.

> sudo echo "deb http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

로컬 패키지(저장소)를 업데이트 해줍니다.

> sudo apt-get update

몽고디비를 설치해줍니다.

> sudo apt-get install -y mongodb-org

이후, 설치가 완료되면 몽고디비를 실행시켜줍니다.

> sudo service mongod start

현재, 몽고디비의 상태를 확인할 수 있습니다.

> sudo service mongod status

설정

  1. mongoDB 관리자 계정 추가
// 쉘에서 mongo 실행
> mongo

// 데이터베이스 관리자로 전환
> use admin

// 관리자 계정 생성 (여기서 생성하는 아이디, 비밀번호로 추후에 compass를 통해 접속이 가능합니다.)
>  db.createUser({
    user:'아이디',
    pwd:'비밀번호',
    roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]
})
  1. 외부 접속 설정
// 외부로부터 접속이 가능하도록 설정하는 역할을 합니다.
> sudo vi /etc/mongod.conf

// 위에서 설정하신 포트(몽고디비의 디폴트는 27017)와 ip를 각각 port와 bindIp에 적어줍니다.
(어째서인지 저는 0.0.0.0 밖에 되지 않더라구요,,)

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0

security:
  authorization: enabled
  1. 적용
> sudo service mongod restart

MongoDB Compass

mongoDB Compass는 몽고디비를 관리하는 GUI에요. 커맨드창에서 작업하기가 불편하기도 하고, 이렇게 편한 툴이 있으니 데이터 조회, 삭제가 얼마나 간편하게요?

다만 Compass로 접속을 하기위해서는 mongo db URI를 알아야 합니다.

mongodb://[username:password@]host1[:port1],...hostN[:portN]][/[defaultauthdb][?options]]
([]는 생략이 가능하다는 의미입니다.)

이런 형식의 URI를 갖게 되는데, 예를 들어 볼게요.

위에서 설정한 관리자 계정의 아이디: velogTest,
비밀번호: velog1234
몽고 디비를 돌리는 서버의 ip: 123.123.123.123
포트: 27017
접속하고자 하는 데이터베이스: dev

URI: mongodb://velogTest:velog1234@123.123.123.123:27017/dev?authSource=admin

이런 URI를 얻을 수 있답니다.

이제 이 uri를 토대로 compass에 로그인을 할 수 있습니다. 뒤에 아래를 추가적으로 붙여줍니다.

readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false

최종 Compass 접속 URI

mongodb://velogTest:velog1234@123.123.123.123:27017/dev?authSource=admin&readPreference=primary&appname=MongoDB%20Compass&directConnection=true&ssl=false

이곳에 넣어주고 connect를 시켜줍니다.

데이터 옮기기

데이터를 옮기는 방법은 매우 간단해요,, (구글링 엄청 한건 비밀)
옮기고 싶은 데이터 베이스를 A, 데이터를 옮기려는 새로운 데이터 베이스를 B라고 할게요.
방법은 데이터들을 csv나 json파일로 export한 뒤, 새로운 데이터베이스에 import하는 형식입니다.

1.Export

해당하는 데이터 베이스 collection에 들어가면, 상단 Collection 탭에서 export를 할 수 있습니다.


조건에 맞는 쿼리를 날리던지, 전체를 모두 선택할 수 있습니다.


해당하는 필드를 선택해서 추출할 수 있답니다.


json으로 뽑을건지, csv파일로 뽑을건지 형식을 정해주면 export 완료입니다!!

2.Import

Filter 아래에 보면 Add Data가 있는데, 아까 export한 파일을 import해주면 끝이 납니다!! 참 쉽죠?

참고

https://coterie.tistory.com/20
https://here4you.tistory.com/272
https://docs.mongodb.com/manual/reference/connection-string/

이상, 흑수였습니다. 감사합니다!

profile
기록용

0개의 댓글