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 서버 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()
시도 가능
'리눅스 18.04 TLS Ubuntu > MongoDB' 카테고리의 다른 글
MongoDB SSL 인증서 생성 및 적용 (2) | 2019.06.04 |
---|---|
mongodb 외부에서 mongo 접속/계정 존재 상태시 접근 방법 (0) | 2019.03.07 |
MongoDB - 사용자 계정 추가 (0) | 2019.02.20 |