English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

MongoDB 복제(복제 집합)

MongoDB 복제는 여러 서버에 데이터를 동기화하는 과정입니다.

복제는 데이터의 중복 백업을 제공하고, 여러 서버에 데이터 복제를 저장하여 데이터의 가용성을 높입니다. 또한 데이터의 보안을 보장할 수 있습니다.

복제는 하드웨어 고장 및 서비스 중단에서 데이터를 복구할 수 있도록 합니다.

복제는 무엇인가요?

  • 데이터의 보안을 보장합니다
  • 데이터 고가용성 (24*7)
  • 재해 복구
  • 정기 유지보수가 필요하지 않습니다(예: 백업, 인덱스 재구성, 압축)
  • 분산 읽기 데이터

MongoDB 복제 원리

mongodb의 복제는 최소 두 개의 노드가 필요합니다. 그 중 하나는 메인 노드로, 클라이언트 요청을 처리하며, 나머지는 슬라브 노드로, 메인 노드의 데이터를 복제합니다.

mongodb 각 노드의 일반적인 구성은: 하나의 메인 노드와 하나의 슬라브 노드, 하나의 메인 노드와 여러 개의 슬라브 노드입니다.

메인 노드는 모든 작업을 기록하는 oplog를 유지하며, 슬라브 노드는 주기적으로 메인 노드에서 이 작업을 가져와 자신의 데이터 복제에 이 작업을 적용하여 슬라브 노드의 데이터가 메인 노드와 일치하도록 합니다.

MongoDB 복제 구조도는 다음과 같습니다:

위 구조도에서 클라이언트는 메인 노드에서 데이터를 읽고, 클라이언트가 메인 노드에 데이터를 쓸 때, 메인 노드와 슬라브 노드는 데이터 일관성을 보장하기 위해 데이터 교류를 합니다.

복제집 특징:

  • N개의 노드 클러스터
  • 어떤 노드든 메인 노드로 사용될 수 있습니다.
  • 모든 쓰기 작업은 메인 노드에서 수행됩니다.
  • 자동 이전
  • 자동 복구

MongoDB 복제집 설정

이 튜토리얼에서는 MongoDB를 사용하여 MongoDB 주종 실험을 진행합니다. 작업 단계는 다음과 같습니다:

1제공하는 MongoDB 서버를 종료합니다.

지금은 다음을 지정하여 --복제집을 시작하려면 replSet 옵션을 사용합니다.--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

위 예제는 rs0라는 이름의 MongoDB 예제를 시작하며, 포트 번호는 다음과 같습니다:27017

시작 후 명령 프롬프트를 엽니다. mongoDB 서비스에 연결합니다.

Mongo客户端에서 rs.initiate() 명령어를 사용하여 새로운 복제집을 시작합니다.

복제집 구성을 확인하려면 rs.conf() 사용할 수 있습니다.

복제집 상태 확인하려면 rs.status() 명령어 사용

복제집 멤버 추가

복제 집합의 멤버를 추가하려면 여러 서버를 사용하여 mongo 서비스를 시작해야 합니다. MongoDB 클라이언트에 접속하여 rs.add() 메서드를 사용하여 복제 집합의 멤버를 추가합니다.

문법

rs.add() 명령의 기본 문법은 다음과 같습니다:
>rs.add(HOST_NAME:PORT)

온라인 예제

이미 mongod로 이름이 지정된 서비스를 시작했습니다.1.net, 포트 번호는27017의 MongoDB 서비스. 고객 명령 창에서 rs.add() 명령을 사용하여 복제 집합에 추가할 수 있습니다. 명령은 다음과 같습니다:

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

MongoDB에서는 마스터 노드를 통해만 MongoDB 서비스를 복제 집합에 추가할 수 있습니다. 현재 실행 중인 MongoDB 서비스가 마스터 노드인지 확인하려면 db.isMaster() 명령을 사용할 수 있습니다.

MongoDB의 복제 집합은 일반적인 주-종주식과 다릅니다. 주-종주식은 마스터가 고장 나면 모든 서비스가 중지되지만, 복제 집합은 마스터가 고장 나면 복제가 마스터 노드를 대체하여 마스터 노드가 되고, 고장이 발생하지 않습니다.