MongoDB Trasaction 지원 때문에 꽤나 시간을 썻다. 이게 replica set이랑 무슨 상관이 있나?

Spring - mongodb transaction을 하기 위해서는 replica set 구성이 필요하다고 한다.

​

관련해서 까먹지 않으려면 정보를 남겨야 할 것 같다.

아래 정리는 MongoDB는 설치되어 있다는 가정하에 진행하겠다.

​

1. 디비 저장할 폴더 2개 만들기.

MongoDB는 실행 시 데이터 저장할 곳을 정할 수 있다. 나는

​

위 처럼 mst(Master DB 저장될 곳) / sla(Slave DB 저장될 곳) 두 개의 폴더를 만들어서 구성하려고 했다.

​

2. MongoDB 실행하기

로그를 보기 위해서 nohup 없이 실행(나중에 정상적으로 된 후, nohup을 맨 앞에 붙여서 실행 해주면 됨)

[Master 실행]

nohup mongod --bind_ip 0.0.0.0 --port 27017 --dbpath /home/kaonsoft/push/mongoDB/mst -replSet rs0 --smallfiles --oplogSize 128 > /dev/null &

[Slave 실행]

nohup mongod --bind_ip 0.0.0.0 --port 27018 --dbpath /home/kaonsoft/push/mongoDB/sla -replSet rs0 --smallfiles --oplogSize 128 > /dev/null &

​

*참고 : 포트 27017 / 27018 은 다 열려있어야 한다.

​

3. 콘솔에 접속 해서 initiate 하기.

나는 Robo 3T 1.3.1 를 이용해서 접속했다.

​

우선 Master로 쓸 DB Console에 접속 해 rs.initiate() 실행한다.

그러면 replica value가 setting 되는데, rs.status() 로 확인 해 보면

Master mongoDB 에 primary 로 나타나는 것을 확인할 수 있다.

​

그 후 Master mongoDB shall 에 Secondary 로 쓸 mongoDB 정보를 추가한다.

rs.add("hostName:port")

​

* 나는 VM 하나에서 Replica Set을 구성한 것이기 때문에 hostName은 마스터에 등록되어있는 name의 ip영역 혹은 hostname으로 등록해줘야 한다.

​

이러면 기본적인 replica set이 완성된다.

​

추가적으로 아비터 붙이는 것은 다음에...

현재 MongoDB 공홈에 접속하면 Linux cent os 관련 버전은 찾을 수 없다. (사실 RHEL 버전 깔면 상관없긴하다.)

​

그래서 리눅스 커맨드 이용을 Putty 로 하고 파일 업로드를 FileZilla 로 하는 사람은 난감할 수 있다. (사실 RHEL 버전 업로드 하면 상관없긴하다.)

​

하지만 Cent OS 에서는 파일을 따로 업로드 받아서 푸는 형태로 하지 않아도 MongoDB를 설치 할 수 있다.

​

​

[1단계 – 몽고DB 리포지토리(repository) 추가하기]

​

mongodb-org 패키지가 CentOS의 기본 리포지토리에 포함되어 있지 않기 때문에 리포지토리 파일을 생성하여 추가해 주어야 한다.

​

$ sudo vi /etc/yum.repos.d/mongodb-org.repo

​

다음의 내용을 작성 후 저장한다. 이 때 몽고DB 문서 혹은 웹 사이트를 참조하여 적절한 버전을 기술해 준다.

[mongodb-org-3.4]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

​

------------------------------------------------------------------------------------------------------------------------------------------------------------------

[추가!!]

MongoDB 4.0 이상 버전부터 Spring Transaction 기능을 사용할 수 있게됨으로써 위의 설정 정보를 4.0으로 올리고 몽고DB 설치를 해야 yum에서 4.0 버전을 설치 할 수 있다.

[mongodb-org-4.0]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.0/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc

​

Transaction이 필요하다면 위 설정 적용 필요

​

------------------------------------------------------------------------------------------------------------------------------------------------------------------

​

다음의 명령어를 이용하여 생성한 파일이 올바로 존재하는지 확인한다.

​

$ yum repolist

​

[2단계 – 몽고DB 설치하기]

​

앞서 작성한 mongodb-org 패키지를 yum을 이용해 실행한다.

​

$ sudo yum install mongodb-org

​

위의 명령을 입력하면 몽고DB 패키지를 설치할 것인지, 그리고 GPG 키를 임포트(imprt)할 것인지에 관련된 질문이 나타나며 수락하면 설치가 진행된다. 해당 프로세스가 끝나면 몽고DB의 설치는 완료된 것이며, 다음과 같은 명령어를 이용해 실행할 수 있다.

​

$ sudo systemctl start mongod

​

몽고DB를 중지하고자 할 경우 다음과 같은 명령어를 입력하면 된다.

​

$ sudo systemctl stop mongod

​

몽고DB 실행과 관련된 로그를 확인하고 싶을 경우에는 다음의 명령어를 이용한다.

​

$ sudo tail /var/log/mongodb/mongod.log

​

이와 같은 명령어들을 이용하여 몽고DB를 실행할 수 있다.

​

[3. 외부 접속 허용]

먼저 /etc/mongod.conf 파일에 접근하여 수정.

​

vi /etc/mongod.conf

맨 처음에는 기본 포트로 127.0.0.1 로 설정이 되어 있을 것인데, 이를 0.0.0.0으로 변경해야 함.

​

그리고 방화벽을 사용한다면 관련 Port 역시 오픈 시켜야 한다.

​

firewall-cmd --zone=public --permanent --add-port=27017/tcp

​

만약 Azure VM 혹은 Amazon 클라우드 사용하고 있다면 관련해서 Open처리를 해줘야 한다. Azure은 해봤는데 Amazon은 안 해 봤음...

​

​

(설치폴더는 다를 수 있음) E:\app\Administrator\diag\tnslsnr\WIN-KHF7ST29O0R\listener\trace

​

로그 4기가 넘는지 확인

​

+ Recent posts