본문 바로가기
국비교육

MongoDB 7일차

by Diligejy 2019. 4. 23.

1. 샤딩이란?
MongoDB에 의한 수평 스케일을 실현하는 구조로 샤드는 여러 노드에 걸친 데이터의 분산 배치 구조

MongoDB의 데이터를 분할하여 각 서버에 저장해 나갈 자동 샤드를 구성한다.

 

데이터를 여러 서버에 분할, 데이터의 분할은 MongoDB가 분할된 데이터는 상황에 따라 각 Shard로 이동

MongoDB 이용자(앱)은 여러 서버를 의식하지 않아도 된다.

 

복제가 동일한 데이터의 사본을 여러 DB가 가진 반면,

Sharding은 다른 데이터를 여러 DB에 넣는다.

 

따라서 보통의 운용은 Sharding + ReplicaSet(복제) 로 구성된다.

 

ⓐ 샤드 : 실제로 데이터가 저장되어 있는 mongod 프로세스 하나의 문서는 하나의 샤드에 저장되어 샤드 간의 데이터 복제는 되지 않는다. 복제 구성하는 것을 권장한다.

 

ⓑ config 서버 : 샤드 메타 데이터를 관리하는 mongod 프로세스로 단일 장애 지점이 되므로, 여러 config 서버로 구성하는 것을 추천한다.

 

ⓒ mongos 서버 : 샤드의 라우팅 프로세스. 

샤드와 클라이언트를 연계시킨다. 필요하다면 여러 mongos 서버를 가진다. mongod 프로세스가 아니기 떄문에, 상태와 데이터를 가지고 있지 않다.

 

ⓓ 샤드 키 : 데이터를 분산하는 범위의 키로 복수 지정할 수 있다.

키에 어떤 범위의 데이터가 어떤 샤드에 저장되는지는 MongoDB가 관리하고 데이터의 편차에 따라 자동으로 조정한다.

 

ⓔ 청크 : 샤드의 덩어리는 분산 데이터의 단위.

구체적으로는 컬렉션의 연속된 범위의 데이터에서 여러 문서이다.

청크의 최대 크기(64M)에 도달하면 분할된 샤드가 가지고 있는 청크 수에 따라

필요한 경우 다른 샤드로 이동한다. 청크의 최대 크기는 변경할 수 있다.

 

2. 클러스터 구성 요소

primary 서버 : 복제 마스터, 데이터의 마스터를 유지

secondary 서버 : 복제 세컨더리, 데이터 복사본을 유지

arbiter 서버 : 자동으로 fail over할 때 새 기본 노드를 선택 지시

config 서버 : 샤드 구성 정보와 분포를 유지

mongos 서버 : 샤드 구성에서 데이터 요청에 대한 라우팅을 실시

 

3.

샤딩.ppt
1.11MB

4.

 

5.

mongo localhost:27030이 실행이 안된다. 왜그럴까?

 

log파일을 보자.

 

저널링이 문제다.

 

그럼 myrs.bat파일을 가서 journal을 없애준다.

그렇게 해준 뒤 myrs.bat를 실행해주면

 

다음과 같이 화면이 사라지지 않고 실행됨을 알 수 있다.

 

이런 뒤 mydata02폴더를 보면

저널과 기록지가 생겼다

이렇게 한 뒤 myrs.bat를 실행한 상태로 mongo localhost:27030에 접속하면

다음과 같이 접속이 됨을 알 수 있다.

 

27030으로 접속하면 RS:PRIMARY가 발생하고

27031, 27032로 접속하면

RS:SECONDARY라고 나온다

 

rs.remove를 통해 host를 삭제한 뒤 상태를 확인해주고

rs host 삭제

_id 2번이 삭제되고 1번까지만 있음을 확인할 수 있다.

 

그런 뒤 rs.add를 해주면

rs.add
_id : 2가 추가됨

 

 

 

6.

코드몽키처럼 따라만 쳤는데, 명령어가 알고 싶었다.

 

먼저 mongod --shardsvr에서 shardsvr이란 무엇인가?
https://docs.mongodb.com/manual/reference/program/mongod/

 

 

mongod — MongoDB Manual

Path to CA File. Used for validating secure client connection to KMIP server. Note Starting in 4.0, on macOS or Windows, you can use a certificate from the operating system’s secure store instead of a PEM key file. See --kmipClientCertificateSelector. When

docs.mongodb.com

--shardsvr

Required if starting a shard server.

 

Configures this mongod instance as a shard in a sharded cluster. The default port for these instances is27018.

IMPORTANT

 

Starting in MongoDB 3.6, you must deploy shards as replica sets. See the --replSet option to deploy mongod as part of a replica set.

 

Do not use the --shardsvr with the skipShardingConfigurationChecks parameter. That is, if you are temporarily starting the mongod as a standalone for maintenance operations, include the parameterskipShardingConfigurationChecks and exclude --shardsvr. Once maintenance has completed, remove the skipShardingConfigurationChecks parameter and restart with --shardsvr.

 

다음은 replSet

--replSet <setname>

 

Configures replication. Specify a replica set name as an argument to this set. All hosts in the replica set must have the same set name.

 

Starting in MongoDB 4.0,

If your application connects to more than one replica set, each set should have a distinct name. Some drivers group replica set connections by replica set name.

 

-> 이미 API문서에서 --replSet과 --nojournal을 같이 쓰지 말라고 했기 때문에 에러가 발생할 수밖에 없었다.

 

7.

시간 모니터링을 위해서 timeStamp를 보면 된다.

 

8.

 

'국비교육' 카테고리의 다른 글

자바 Lambda식  (0) 2019.04.25
Python 1일차  (0) 2019.04.24
MongoDB 6일차  (0) 2019.04.22
MongoDB 5일차  (0) 2019.04.19
MongoDB 수업 4일차  (0) 2019.04.18

댓글