보관함

MongoDB 운영 메모 – 샤드 클러스터 종료와 시작 순서, 레플리카셋, 샤딩

mongos, config server(레플리카셋), 샤드 여러 개(각각 primary, secondary, arbiter)로 된 클러스터를 운영하며 정리한 내용이다. 호스트 이름과 <password>, appdb 는 예시다.

1. IP 대신 호스트 이름 쓰기

레플리카셋 설정에 IP 를 넣어 두면 서버 IP 가 바뀔 때 멤버를 찾지 못해 클러스터가 멈춘다. 각 서버의 /etc/hosts 에 같은 이름을 등록하고 이름으로 구성한다.

이 경우 MongoDB Compass 같은 외부 클라이언트는 이 이름을 모르기 때문에 레플리카셋으로 접속하면 멤버를 찾지 못한다. 외부에서는 directConnection=true 로 한 서버에 붙거나 mongos 로 접속한다.

2. 종료 순서

  1. mongos 를 먼저 내린다.
  2. config server 를 내린다.
  3. 각 샤드를 내린다. secondary → primary → arbiter 순서.

3. 시작 순서

  1. config server 를 먼저 올린다.
  2. 각 샤드를 올린다. arbiter → primary → secondary 순서.
  3. 마지막으로 mongos 를 올린다.

4. 열린 파일 수 늘리기

5. 설치 (Ubuntu)

6. 레플리카셋 구성

arbiter 를 추가할 때 Reconfig attempted to install a config that would change the implicit default write concern 오류가 나면 기본 write concern 을 먼저 정한다.

IP 로 만든 레플리카셋을 호스트 이름으로 바꿀 때는 rs.reconfig(새설정, { force: true }) 를 쓴다. 멤버 제거는 rs.remove("host:27017").

7. config server 와 샤드 등록

8. 컬렉션 샤딩

  • 범위 조회가 많으면 { userId: "hashed", createdAt: 1 } 처럼 복합 샤드 키를 쓴다.
  • 샤드 키를 잘못 골랐으면 5.0 부터 sh.reshardCollection("appdb.transactions", { _id: "hashed" }) 로 바꿀 수 있다.

9. balancer

10. 계정

11. 백업과 복원

샤드 클러스터는 mongos 를 통해 백업하고 복원한다. 예전의 mongorestore --db … --dir … 형식은 deprecated 라 --nsInclude 를 쓴다.

12. 레플리카셋 설정을 지우고 단독 서버로 돌릴 때

참고: Learn MongoDB The Hard Way – Sharding

관련 글: MongoDB 집계(aggregation) 정리 – count, distinct, $group, 파이프라인

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.