일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- probability
- 몽고디비
- MongoDB
- 주일설교
- Deep learning
- WebGL
- data science
- 빅데이타
- 김양재
- openCV
- 김양재 목사님
- 김양재 목사
- 확률
- 우리들교회
- 데이터 과학
- Statistics
- nodeJS
- Big Data
- R
- 빅 데이타
- 통계
- Artificial Intelligence
- 인공지능
- 딥러닝
- node.js
- No SQL
- 빅 데이터
- 빅데이터
- Machine Learning
- c++
- Today
- Total
목록replication (9)
Scientific Computing & Data Science
by Geol Choi | April 10, 2014MongoDB에서 인증을 통해 마스터와 슬레이브 노드 간 복제를 하고자 할 경우에는 슬레이브 노드가 마스터 노드의 데이터에 접근할 수 있는 권한을 설정할 수 있는 방법이 있다. 접근을 하고자 하는 마스터 노드의 db에 username과 password를 지정하여 user를 추가하고 슬레이브 노드에도 동일한 username과 password를 갖는 user를 추가한다.user를 추가하는 방법은 createUser() 메써드를 사용하는 것이다. 예를 들어, test라는 db에 다음과 같이 user를 추가해 보자:> use test switched to db test > db.createUser( ... { ... user: "cinema4d", ... pw..
by Geol Choi | April 9, 2014마스터 또는 슬레이브 노드 모두에 대하여 다음과 같이 명령을 입력해 보자: > show dbs admin (empty) local 0.078GB DB 리스트를 살펴보면 최소한 admin과 local이 존재할 것이다. local은 로컬 데이터베이스로써 마스터 노드와 슬레이브 노드에 모두 존재하며 복제와 관련된 상태 정보가 저장되어 있으며, 로컬이라는 이름대로 로컬 노드에만 저장되며 복제되지 않는다.마스터 노드(포트 번호 3000이라고 가정)와 슬레이브 노드(포트 번호 3001이라고 가정)에 대한 각각의 local DB의 내용을 살펴보자:마스터 노드:> use local switched to db local > db.getCollectionNames() [ ..
by Geol Choi | April 9, 2014슬레이브 노드가 시작될 때 가장 먼저하는 일은 마스터 노드의 데이터 전체를 동기화하는 것이다. 슬레이브 노드는 마스터 노드의 모든 도큐먼트를 복제하는데 이것은 엄청 부담이 되는 연산이다. 초기 동기화가 완료되면 슬레이브 노드는 마스터 노드의 oplog를 쿼리하고 연산을 수행하여 최신 상태로 데이터를 유지한다. 만약 슬레이브 노드의 연산이 마스터 노드에서 수행되고 있는 연산에서 매우 뒤쳐져 있는 상황이라면 슬레이브 노드의 동기화는 실패하게 될 것이다. 즉, 동기화에 실패한 슬레이브 노드는 마스터 노드에서 수행되고 있는 연산 속도를 더 이상 따라잡지 못하게 되는 상황이 발생하게 된다.동기화에서 이탈하게 되면 슬레이브 노드는 복제를 멈추고 마스터 노드의 데이터..
by Geol Choi | April 6, 2014oplog(operation log)는 마스터 노드에 요청되는 연산들이 로그로 기록되는 파일이며, local이라는 이름의 db 내의 oplog.rs(rs는 Replica Set의 이름)이라는 이름의 컬렉션 내에 저장된다. 예를 들어 oplog의 내용을 출력하면 다음과 같다:> show dbs local 4.279296875GB test 0.0625GB > use local switched to db local > db.getCollectionNames() [ "oplog.rs", "slaves", "startup_log", "system.indexes", "system.replset" ] > db.oplog.rs.find().pretty() { "ts" ..
by Geol Choi | March 29, 2014마스터 노드의 연산 부담을 줄이기 위해 슬레이브 노드를 마스터 노드와 함께 데이터 처리 연산에 참여시키는 방법이 있다. 방법은 간단한다. 일반적으로 슬레이브를 지정하는 옵션인 --slave와 함께 마스터를 지정하는 옵션인 --master를 동시에 지정하는 것이다. 예를 들면,$ mongod --dbpath [SLAVE_DATA_PATH] --port [PORT_NUM] --slave --source localhost:3000 --master와 같이 입력한다.마스터와 슬레이브 옵션을 동시에 지정하는 것이 꽤나 이상해 보일 수 있으나, 슬레이브 노드와 같이 마스터 노드의 데이터 복제 역할을 수행하는 동시에 마스터 노드와 같이 데이터 처리 역할 또한 수행하도..
by Geol Choi | March 29, 2014지난 글에서 Replica Set을 구성하는 방법에 대해 자세하게 다뤘다. 지난 글에서는 1대의 머쉰에서 localhost를 통해 Replica Set을 구성한 바 있다. 이번 글에서는 여러 대의 머쉰에서 Replica Set을 구성하는 방법에 대해 알아보도록 하겠다.진행은 튜토리얼 방식이며, 제시되는 OS 및 IP(IP 대신 DNS를 입력해도 무방함) 등은 예를 들어 설명하기 위함이며 각자 자신의 환경에 맞게 응용하기 바란다. 한 번 따라해 보면 쉽게 자신의 환경으로 설정할 수 있으리라 믿는다.이 예제에서는 총 2대의 머쉰을 사용하였으며, 각각 Windows와 Mac OS 환경이며, 설정되는 노드는 모두 3개(PRIMARY 1개, SECONDARY 2..
by Geol Choi | March 29, 2014MongoDB의 슬레이브 노드의 역할을 정리하면 다음과 같다: 데이터 유실 또는 마스터 노드의 다운타임에서의 패일오버 메커니즘 기능 수행백업을 위한 소스읽기 스케일아웃데이터 처리 수행 이 중 "읽기 스케일아웃"은 데이터를 읽을 때 PRIMARY(마스터)에 집중되는 부담을 SECONDARY(슬레이브)에 분산하는 것이 목적이다. 이 때 주의할 것은, MongoDB에서 데이터 복제는 비동기(Asynchronous)로 진행된다는 것이다.쓰기에 대한 연산 부담의 분산은 향후 자동샤딩(Autosharding) 부분에서 집중적으로 다루도록 하겠다.읽기 스케일아웃 방법은 다음과 같다.우선 Replica Set이 설정되어 있다고 가정한다. Replica Set을 설정하..
by Geol Choi | March 27, 2014이번 글에서는 MongoDB의 가장 중요한 개념 중 하나인 Replica Set에 대해 알아보도록 하겠다. Replica Set은 기본적으로 자동 패일오버 기능을 갖는 마스터-슬레이브 클러스터이지만, 마스터-슬레이브 클러스터의 가장 큰 차이점은 마스터 노드가 가변적이라는 것이다. 즉, 현재 마스터 노드로 지정된 인스턴스가 다운될 경우 다른 노드가 마스터 노드로 자동 지정된다는 점이다. 마스터-슬레이브 클러스터와 Replica Set과의 공통점은, 단 하나의 마스터 노드(PRIMARY 노드라고도 함)와 여러 개의 슬레이브 노드(SECONDARY 노드라고도 함)를 갖는다는 점이다. 개념적으로는 별 것 아니지만 실행에 있어서 어려움이 있을 것이란 예상이 들기..
by Geol Choi | March 26, 2014데이터베이스의 관리자 역할 중 가장 중요한 것 중 하나는 아마도 데이터를 안전하게 지키는 것이다. 이를 위해 가장 기본적인 일은 원본 데이터를 실시간에 가깝게 끊임없이 복제 데이터를 만드는 것이며, 마스터-슬레이브 복제(Master-Slave Replication) 모델이 이러한 기능을 수행하는 것이다. 즉, 원본 데이터는 마스터의 데이터베이스에 저장하고 하나 이상의 슬레이브를 만들어 각 슬레이브의 데이터베이스에 마스터의 데이터를 복제하는 것이다. 다음 그림은 클라이언트 어플리케이션과 마스터-슬레이브 간 관계를 설명한 것이다. [그림 1.] 클라이언트 어플리케이션-마스터(Primary)-슬레이브(Secondary) 간 데이터 관계. 마스터-슬레이브 복제..