MongoDB-복제

복제는 여러 서버에서 데이터를 동기화하는 프로세스입니다. 복제는 중복성을 제공하고 서로 다른 데이터베이스 서버에있는 여러 데이터 복사본을 통해 데이터 가용성을 높입니다. 복제는 단일 서버의 손실로부터 데이터베이스를 보호합니다. 또한 복제를 통해 하드웨어 오류 및 서비스 중단으로부터 복구 할 수 있습니다. 데이터의 추가 복사본을 사용하면 재해 복구,보고 또는 백업 전용으로 사용할 수 있습니다.

왜 복제인가?

  • 데이터를 안전하게 유지하려면
  • 높은 (24 * 7) 데이터 가용성
  • 재해 복구
  • 유지 관리를위한 다운 타임 없음 (예 : 백업, 인덱스 재 구축, 압축)
  • 읽기 배율 (읽을 추가 복사본)
  • 복제본 세트는 애플리케이션에 투명합니다.

MongoDB에서 복제가 작동하는 방식

MongoDB는 복제 세트를 사용하여 복제를 수행합니다. 복제 세트는mongod동일한 데이터 세트를 호스팅하는 인스턴스. 복제본에서 한 노드는 모든 쓰기 작업을 수신하는 기본 노드입니다. 보조와 같은 다른 모든 인스턴스는 동일한 데이터 세트를 갖도록 기본에서 작업을 적용합니다. 복제본 세트에는 하나의 기본 노드 만있을 수 있습니다.

  • 복제본 세트는 두 개 이상의 노드 그룹입니다 (일반적으로 최소 3 개의 노드가 필요함).

  • 복제본 세트에서 한 노드는 기본 노드이고 나머지 노드는 보조 노드입니다.

  • 모든 데이터는 기본 노드에서 보조 노드로 복제됩니다.

  • 자동 장애 조치 또는 유지 관리시 기본에 대한 선택이 설정되고 새 기본 노드가 선택됩니다.

  • 장애가 발생한 노드를 복구 한 후 다시 복제 세트에 가입하고 보조 노드로 작동합니다.

클라이언트 애플리케이션이 항상 기본 노드와 상호 작용하고 기본 노드가 데이터를 보조 노드에 복제하는 MongoDB 복제의 일반적인 다이어그램이 표시됩니다.

복제 세트 기능

  • N 노드의 클러스터
  • 하나의 노드가 기본이 될 수 있습니다.
  • 모든 쓰기 작업이 기본으로 이동
  • 자동 장애 조치
  • 자동 복구
  • 예비 선거의 합의 선거

복제 세트 설정

이 자습서에서는 독립형 MongoDB 인스턴스를 복제본 세트로 변환합니다. 복제 세트로 변환하는 단계는 다음과 같습니다.

  • 이미 MongoDB 서버를 실행중인 종료.

  • -replSet 옵션을 지정하여 MongoDB 서버를 시작하십시오. 다음은 --replSet의 기본 구문입니다.

mongod --port "PORT" --dbpath "YOUR_DB_DATA_PATH" --replSet "REPLICA_SET_INSTANCE_NAME"

mongod --port 27017 --dbpath "D:\set up\mongodb\data" --replSet rs0
  • 포트 27017에서 이름이 rs0 인 mongod 인스턴스를 시작합니다.

  • 이제 명령 프롬프트를 시작하고이 mongod 인스턴스에 연결하십시오.

  • Mongo 클라이언트에서 다음 명령을 실행하십시오. rs.initiate() 새 복제 세트를 시작합니다.

  • 복제본 세트 구성을 확인하려면 다음 명령을 실행하십시오. rs.conf(). 복제 세트의 상태를 확인하려면 다음 명령을 실행하십시오.rs.status().

복제 세트에 구성원 추가

복제본 세트에 구성원을 추가하려면 여러 머신에서 mongod 인스턴스를 시작하십시오. 이제 mongo 클라이언트를 시작하고 명령을 실행하십시오.rs.add().

통사론

기본 구문 rs.add() 명령은 다음과 같습니다-

>rs.add(HOST_NAME:PORT)

mongod 인스턴스 이름이 다음과 같다고 가정합니다. mongod1.net 포트에서 실행 중입니다. 27017. 이 인스턴스를 복제본 세트에 추가하려면 다음 명령어를 실행하세요.rs.add() Mongo 클라이언트에서.

>rs.add("mongod1.net:27017")
>

mongod 인스턴스는 기본 노드에 연결된 경우에만 복제본 세트에 추가 할 수 있습니다. 기본에 연결되어 있는지 확인하려면 다음 명령을 실행하십시오.db.isMaster() 몽고 클라이언트에서.