NextJs 풀스택 구축기 3 replica set

OkGyoung·2023년 11월 8일
0

이전 로그인 로직을 만드는 과정에서 발생한 Prisma의 replica set에 관한 문제입니다.

기본적으로 Prisma는 ORM이기에 SQL을 중점으로 만들어 졌습니다. 하지만 MongoDB를 사용하면 필연적으로 replica set오류를 볼것입니다. 물론 MongoDB Atlas는 자체적으로 replica set을 제공하기에 따로 적용하지 않아도 되지만 로컬, 혹은 클라우드에 직접 인스턴스를 만들어 이용중이라면 따로 replica set을 설정해야합니다.

그래서 replica set가 뭔데?

쉽게 말하면 동기화입니다. 2개 이상의 데이터서버가 서로 동기화되어서 트랜젝션을 문제없이 수행하도록 도와주고 각 서버오류에 적절하게 대응해 사용자가 문제없이 이용하도록 하는 것입니다.

장점?

  1. 데이터서버가 여러개이고 동기화되어 안전하게 데이터를 보존합니다.
  2. 운영에 따른 서버 다운을 방지합니다.
  3. !Prisma를 이용할 수 있습니다.

사실상 본인은 3번 이유가 큰 이유 였습니다. 물론 Atlas를 이용할 생각이지만 당장 로컬환경에서 개발 중이기에 다양한 테스트를 위해 로컬환경에서 구축했습니다.

로컬환경에서 MongoDB replica set

환경변수가 등록되고 MongoDB가 설치되었다는 가정하에 진행합니다.

먼저 최소 2개이상의 데이터베이스를 실행해야하기 때문에 데이터를 저장할 공간 2개를 만들어 줍니다.

path1 -> D:경로...
path2 -> D:경로...

그 후 cmd를 2개를 실행 후 2개의 DB서버를 실행합니다.

mongod --replSet replica이름 --dbpath path1 --port 27017
mongod --replSet replica이름 --dbpath path2 --port 27018

포트는 서로 다르게하고 임의의 replica이름를 작성합니다.

마지막으로 mongosh를 실행 후

config = { _id : "replica이름", members : [
{_id : 0 , host : "localhost:27017"},
{_id : 1 , host : "localhost:27018"}
]}

위처럼 config를 만들고

rs.initiate(config);
rs.status()

config를 적용하고 rs.status()를 확인하면 정상 작동하는 것을 볼 수 있고 또한 Prisma도 잘 작동합니다!

profile
이유를 생각하는 개발자

0개의 댓글