'db 복제'에 해당되는 글 1건


RePlica 란

- 하나의 DB 정보를 다른 서버와 공유 및 복제 기능

복제를 하기 위해선 세가지로 분류 된다.

PRIMARY , SECONDARY , Arbiter

PRIMARY : DB를 공유시킬 서버 (메인 역할) 

SECONDARY : 공유되는 DB를 받을 서버 (복제/백업 공간 (여러대 가능))

Arbiter : PRIMARY / SECONDARY 서버를 모니터링 해주는 역할

(끊어지는지 확인 가능)

 

RePlica 적용 방법

1. mongod.config 파일을 설정 해주어야 한다. config 파일은  Primary/Secondary

서버 두대다 설정 (replication: ReplSetName:"ABCD") 동일한 네임

설정

- 자기가 설정한 config로 실행 할때 mongod -f mongod.config 실행 해주어야함

2. Config 설정이 끝나고 난 뒤 우선 Primary 서버랑 Secondary 서버랑 서로 통신이 되는지 확인하여야 한다. 방화벽 걸리는지 등 확인,  접속 명령은 아래와 같다.

mongod localhost:27017

3. DB가 담겨져있는, 공유를 하여야 할 Primary 서버로 접근 (쉘/직접 접근 가능)

아래와 같이 예를 든다.

  • Primary : 192.168.100.100       (DB가 담겨져 있는곳)
  • Secondary : 192.168.100.101   (공유/복제 할 곳)
  • Arbiter : 192.168.100.102        (모니터링)
  • PRIMARY 서버 rs (Replication Set) 설정

    PRIMARY는 id 0 에 설정,

    SECONDARY는 id 1에 설정 SECONDARY 한대만 설정할거라 id 1번만 주었지만

    여러대 할경우 id 2,3,4 만들고 호스트네임 추가 가능

    그리고 젤 처음 id는 ReplSetName으로 설정

    $rs.initiate(
       {
          _id: "ABCD",
          version: 1,
          members: [
             { _id: 0, host : "192.168.100.100:27017" },
             { _id: 1, host : "192.168.100.101:27017" }
          ]
       }
    )

    그럼 PRIMARY 서버에서

    "> " 였던 prompt가

    "ABCD:PRIMARY > " 로 바뀌어져 있음

    4. 구성이 잘되었는지 확인 rs.status() 그럼 해당 서버 (PRIMARY/SECONDARY)

    상태가 보임 등록한 호스트 리스트들을 볼려면 rs.config() 입력

    PRIMARY 접속 후

    Robo 몽고 툴로 둘다 접속하여 PRMARY에 데이터를 만들고 SECONDARY에도 쌓이는지 확인

    SECONDARY 접속하여

    show dbs 등 명령어는 안됨 기존 mongo 자체에서 SECONDARY 서버는 변조를 막기 위해 제한 해둠 그걸 해제 하기 위해선

    rs.slaveOk() 명령어를 하여 해제하고

    show dbs

    db.collection()

    db.getcollection('테이블').find()

    시도 가능

     

     


    블로그 이미지

    _B_G_

    ,