본문 바로가기
Java & Kotlin/Spring

Start Spring Data MongoDB - 2. MongoDB Single node replica set 설정

by devson 2021. 8. 30.

MongoDB에서 Transaction을 사용하기 위해서는 Replica Set이나 Sharded Cluster를 사용해야한다.

https://dba.stackexchange.com/questions/265236/how-can-we-use-transaction-in-mongodb-standalone-connection

https://docs.mongodb.com/manual/core/retryable-writes/

 

개발 시에 여러대에 MongoDB instance를 띄우고 Replica Set이나 Sharded Cluster를 구성하는 것은 불편하기 때문에 개발 시 단순 Transaction 처리를 위해서라면 하나의 MongoDB instance를 사용하여 Single node replica set을 구성하여 사용하는 방법을 사용할만하다.

이번 포스팅에서는 간단하게 Docker를 사용하여 Single node replica set을 구성하는 방법에 대해 알아보도록 하겠다.

 

(관련 코드는 여기에서 확인 가능하다)

 


 

MongoDB container 실행

Replica Set name은 rs 로 지정하여 MongoDB Docker container를 실행하도록 한다.

 

$ docker run --name mongo -d -p 27017:27017 mongo:4.4 \
		mongod --replSet rs

$ docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
be6a0ca8c06d   mongo:4.4   "docker-entrypoint.s…"   1 minutes ago   Up 1 minutes   0.0.0.0:27017->27017/tcp, :::27017->27017/tcp          mongo

 

Replica Set 설정

실행시킨 MongoDB instance에 Replica Set을 설정하도록 해보자.

먼저 MongoDB container에 mongo CLI로 접속을 한다.

$ docker exec -it mongo mongo

MongoDB shell version v4.4.8
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("211e22e2-7bd0-41d0-a0e4-cef0263cce7f") }
MongoDB server version: 4.4.8
Welcome to the MongoDB shell.

 

그리고 Replica Set 설정을 다음과 같이 진행하도록 한다.

> config = {
	"_id" : "rs",
	"members" : [
		{
			"_id" : 0,
			"host" : "localhost:27017"
		}
	]
};

> rs.initiate(config);
{ "ok" : 1 }

rs:PRIMARY>

 

이상없이 설정이 되었다면 CLI 상에서 Replica Set이 설정된 것을 확인할 수 있다.

 

MongoDB Compass를 통해 접속

Compass를 통해 Replica Set Name을 지정한 후 접속을 해보자.

 

성공적으로 접속이 되었다면 좌측에 CLUSTER 에 Replica Set이라고 표시가 되는 것을 확인할 수 있다.

 

다음은 Spring Boot Application과 MongoDB를 연동하는 과정에 대해 알아보도록 하겠다.

댓글