MongoDB 복제(복제본 세트)
MongoDB 복제는 여러 서버에서 데이터를 동기화하는 프로세스입니다.
복제는 데이터의 중복 백업을 제공하고 데이터 사본을 여러 서버에 저장하여 데이터 가용성을 향상시킵니다. 그리고 데이터의 보안을 보장할 수 있습니다.
복제를 사용하면 하드웨어 오류 및 서비스 중단으로부터 데이터를 복구할 수도 있습니다.
복제란 무엇입니까?
데이터 보안 보장
데이터 고가용성(24*7)
재해 복구
유지 관리(백업, 재인덱싱, 압축 등)에 다운타임이 필요하지 않음
데이터 분산 읽기
MongoDB 복제 원칙
Mongodb 복제에는 노드가 2개 이상 필요합니다. 그 중 하나는 클라이언트 요청 처리를 담당하는 마스터 노드이고, 나머지는 마스터 노드에 데이터 복제를 담당하는 슬레이브 노드입니다.
mongodb 각 노드의 일반적인 배치 방법은 하나의 마스터와 하나의 슬레이브, 하나의 마스터와 여러 슬레이브입니다.
마스터 노드는 모든 작업 oplog를 기록합니다. 슬레이브 노드는 주기적으로 마스터 노드를 폴링하여 이러한 작업을 얻은 다음 자체 데이터 복사본에서 이러한 작업을 수행하여 슬레이브 노드의 데이터가 있는지 확인합니다. 마스터 노드와 일치합니다.
MongoDB 복제 구조 다이어그램은 다음과 같습니다.
위 구조 다이어그램은 클라이언트가 마스터 노드에서 데이터를 읽고 클라이언트에 데이터를 쓰는 것을 보여줍니다. . 마스터 노드는, 마스터 노드와 슬레이브 노드 간의 데이터 상호 작용은 데이터 일관성을 보장합니다.
복제 세트 기능:
N개 노드의 클러스터
모든 노드가 마스터 노드 역할을 할 수 있습니다
모든 쓰기는 기본 노드에 있습니다
자동 장애 조치
자동 복구
MongoDB 복제본 세트 설정
이 튜토리얼에서는 동일한 MongoDB를 사용하여 MongoDB 마스터-슬레이브 실험을 수행합니다. 단계는 다음과 같습니다.
1. 실행 중인 MongoDB 서버를 닫습니다.
이제 --replSet 옵션을 지정하여 mongoDB를 시작합니다. --replSet의 기본 구문 형식은 다음과 같습니다.
mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"
Instance
mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
위 인스턴스는 포트 번호가 27017인 rs0이라는 MongoDB 인스턴스를 시작합니다.
시작 후 명령 프롬프트를 열고 mongoDB 서비스에 연결합니다.
Mongo 클라이언트에서 rs.initiate() 명령을 사용하여 새 복제본 세트를 시작합니다.
rs.conf()를 사용하여 복제본 세트의 구성을 볼 수 있습니다.
복제 세트의 상태를 보려면 rs.status() 명령을 사용하세요
레플리카 세트에 멤버 추가
레플리카 세트의 멤버를 추가하려면 mongo 서비스를 시작하기 위해 여러 대의 서버를 사용해야 합니다. Mongo 클라이언트를 입력하고 rs.add() 메소드를 사용하여 복제본 세트의 구성원을 추가하십시오.
구문
rs.add() 명령의 기본 구문 형식은 다음과 같습니다:>rs.add(HOST_NAME:PORT)
Instance
포트를 사용하여 mongod1.net이라는 Mongo를 시작했다고 가정합니다. 번호 27017 서브. 클라이언트 명령 창에서 rs.add() 명령을 사용하여 복제본 세트에 추가합니다.
>rs.add("mongod1.net:27017") >
MongoDB에서는 마스터 노드를 통해서만 Mongo 서비스를 레플리카 세트에 추가할 수 있습니다. 현재 실행 중인 Mongo 서비스가 마스터 노드인지 확인하려면 db.isMaster() 명령을 사용하면 됩니다.
MongoDB의 복제본 세트는 일반적인 마스터-슬레이브와 다릅니다. 마스터-슬레이브의 모든 서비스는 호스트가 다운된 후 중지되는 반면, 복제본 세트에서는 호스트가 다운된 후 복제본이 대신합니다. 마스터 노드가 되어 마스터 노드가 됩니다. 가동 중지 시간이 없습니다.