MongoDB 복제: 생성 방법 MongoDB 복제 세트

⚡ 스마트 요약

MongoDB 복제는 여러 위치에 동일한 데이터를 유지합니다. MongoDB 서버 장애로부터 서버를 보호하고 로드 밸런싱을 가능하게 합니다. 그룹화됨 MongoDB 인스턴스는 쓰기 작업을 처리하는 기본 멤버와 읽기 작업 및 장애 조치를 처리하는 보조 멤버로 구성된 복제 세트를 형성합니다.

  • 🗄️ 핵심 개념: 복제는 동일한 데이터를 여러 서버에 복사하여 기본 서버에 장애가 발생하더라도 정보에 계속 액세스할 수 있도록 합니다.
  • ???? 초등 및 중등: 복제 세트는 쓰기 작업을 처리하는 기본 멤버 하나와 읽기 작업을 처리하는 보조 멤버 하나로 구성됩니다.
  • 🚀 세트 생성: rs.initiate() 명령은 replSet 옵션을 사용하여 첫 번째 mongod 인스턴스가 시작된 후 복제 세트를 시작합니다.
  • 멤버 추가: rs.add() 명령은 보조 서버를 연결하고, rs.remove() 명령은 구성에서 멤버를 분리합니다.
  • 🔧 문제 해결 : rs.status() 및 rs.printReplicationInfo() 명령은 진단을 위해 하트비트 상태와 Oplog 크기를 표시합니다.

MongoDB 복제: 생성 방법 MongoDB 복제 세트

MongoDB 복제?

복제란 동일한 데이터가 둘 이상의 저장소에서 사용 가능하도록 보장하는 프로세스를 말합니다. MongoDB 서버. 이는 데이터 가용성을 높이기 위해 필요한 경우가 있습니다.

왜냐면 당신의 메인이라면 MongoDB 어떤 이유로든 서버가 다운되어 데이터에 액세스할 수 없습니다. 그러나 정기적으로 다른 서버에 데이터를 복제해 놓으면 기본 서버에 장애가 발생하더라도 다른 서버의 데이터에 액세스할 수 있습니다.

복제의 또 다른 목적은 로드 밸런싱의 가능성입니다. 시스템에 연결하는 사용자가 많은 경우 모든 사람을 하나의 시스템에 연결하는 대신 사용자를 여러 서버에 연결하여 부하를 균등하게 분배할 수 있습니다.

In MongoDB, 여러 MongoDB 서버들은 복제 세트(Replica Set)라는 그룹으로 묶입니다. 복제 세트에는 클라이언트의 모든 쓰기 작업을 처리하는 기본 서버(Primary Server)가 있습니다. 기본 서버 이후에 세트에 추가되는 모든 인스턴스는 보조 인스턴스(Secondary Server)라고 하며, 주로 읽기 작업에 사용됩니다.

복제본 세트를 생성하는 방법 MongoDB rs.initiate()를 사용하여 첫 번째 구성원 추가

이전 섹션에서 언급했듯이 복제를 활성화하려면 먼저 복제본 세트를 생성해야 합니다. MongoDB 인스턴스.

예시를 위해 ServerA, ServerB, ServerC라는 세 대의 서버가 있다고 가정해 보겠습니다. 이 구성에서 ServerA는 기본 서버가 되고, ServerB와 ServerC는 보조 서버가 됩니다. 아래 스크린샷을 보면 더 잘 이해할 수 있습니다.

복제본 세트 생성 위치 MongoDB

다음은 생성을 위해 따라야 할 단계입니다. MongoDB 세트에 첫 번째 구성원이 추가됨에 따라 복제 세트가 추가됩니다.

1단계) 모든 mongod.exe 인스턴스가 추가되었는지 확인합니다.

복제 세트에 추가될 모든 mongod.exe 인스턴스가 서로 다른 서버에 설치되어 있는지 확인하십시오. 이렇게 하면 한 서버에 장애가 발생하더라도 다른 서버를 사용할 수 있으므로 다른 인스턴스도 계속 실행될 수 있습니다. MongoDB 사용할 수 있습니다.

2단계) 모든 mongo.exe 인스턴스가 서로 연결됩니다.

모든 mongo.exe 인스턴스가 서로 연결될 수 있는지 확인하십시오. ServerA에서 아래 2개의 명령을 실행합니다.

mongo --host ServerB --port 27017
mongo --host ServerC --port 27017

마찬가지로 나머지 서버에서도 동일한 작업을 수행합니다.

3단계) ​​첫 번째 mongod.exe 인스턴스를 시작합니다.

첫 번째 mongod.exe 인스턴스를 replSet 옵션과 함께 시작하십시오. 이 옵션은 그룹을 제공합니다.ping 이 복제 세트에 포함될 모든 서버에 대해.

mongo --replSet "Replica1"

여기서 "Replica1"은 복제 세트의 이름입니다. 복제 세트 이름으로 의미 있는 이름을 선택할 수 있습니다.

4단계) 첫 번째 서버를 복제 세트에 추가합니다.

이제 첫 번째 서버가 복제 세트에 추가되었으므로 다음 단계는 rs.initiate() 명령을 실행하여 복제 세트를 초기화하는 것입니다.

5단계) 복제 세트를 확인합니다.

rs.conf() 명령을 실행하여 복제 세트가 올바르게 설정되었는지 확인하십시오.

복제본 세트: rs.add()를 사용하여 보조 추가

rs.add 명령만 사용하면 보조 서버를 복제본 세트에 추가할 수 있습니다. 이 명령은 보조 서버의 이름을 가져와 복제 세트에 서버를 추가합니다.

단계 1) ServerA, ServerB, ServerC 세 서버가 복제 세트에 포함되어야 하고, ServerA가 복제 세트의 기본 서버로 정의되어 있다고 가정해 보겠습니다.

ServerB와 ServerC를 복제 세트에 추가하려면 다음 명령을 실행하십시오.

rs.add("ServerB")
rs.add("ServerC")

복제본 세트: rs.remove()를 사용하여 재구성 또는 제거

구성 세트에서 서버를 제거하려면 "rs.remove" 명령을 사용해야 합니다.

단계 1) 먼저 제거하려는 인스턴스를 종료하십시오. mongo 셸에서 db.shutdownServer 명령을 실행하면 됩니다.

단계 2) 기본 서버에 연결합니다.

단계 3) rs.remove 명령을 사용하여 복제 세트에서 필요한 서버를 제거합니다. 예를 들어 ServerA, ServerB, ServerC로 구성된 복제 세트가 있고 ServerC를 복제 세트에서 제거하려면 다음 명령을 실행합니다.

rs.remove("ServerC")

복제본 세트 문제 해결

다음은 복제 세트 사용 중 문제가 발생했을 때 문제를 해결할 수 있는 동일한 방법입니다.

  1. 모든 mongo.exe 인스턴스가 서로 연결될 수 있는지 확인하십시오. ServerA, ServerB, ServerC라는 세 개의 서버가 있다고 가정해 보겠습니다. ServerA에서 다음 두 명령어를 실행하십시오.
    mongo --host ServerB --port 27017
    mongo --host ServerC --port 27017
  2. `rs.status` 명령을 실행하세요. 이 명령은 복제 세트의 상태를 보여줍니다. 기본적으로 각 멤버는 서버가 정상적으로 작동 중임을 나타내는 "하트비트" 메시지를 서로 주고받습니다. `status` 명령은 이러한 메시지의 상태를 확인하여 복제 세트 내 멤버에 문제가 있는지 여부를 보여줍니다.
  3. Oplog의 크기를 확인하세요. Oplog는 컬렉션입니다. MongoDB 에 수행된 쓰기 기록을 저장합니다. MongoDB 데이터 베이스. MongoDB 그런 다음 이 Oplog를 사용하여 복제본 세트의 다른 구성원에 쓰기를 복제합니다. Oplog를 확인하려면 필요한 멤버 인스턴스에 연결하고 rs.printReplicationInfo 명령을 실행하십시오. 이 명령은 로그 크기와 로그 파일이 가득 차기 전에 로그 파일에 트랜잭션을 보관할 수 있는 기간을 표시합니다.

자주 묻는 질문

예. AI 어시스턴트는 복제 세트에 대한 mongod 시작 옵션, rs.initiate() 구성 및 rs.add() 명령을 생성할 수 있습니다. 프로덕션 서버에 구성을 적용하기 전에 호스트 이름, 포트 및 멤버 우선순위를 항상 검토하십시오.

예. AI 기반 모니터링 도구는 rs.status() 및 Oplog 메트릭을 읽어 기본 서버보다 뒤처지는 보조 서버를 표시할 수 있습니다. 네트워크 지연이나 디스크 속도 저하와 같은 원인을 제시할 수 있지만, 조치를 취하기 전에 엔지니어가 확인해야 합니다.

MongoDB 투표권을 가진 구성원의 수를 홀수(일반적으로 3명)로 설정하여 선거에서 과반수 득표가 가능하도록 합니다. 데이터 노드를 2개만 사용할 수 있는 경우, 데이터를 저장하지 않고도 동점 상황을 해결할 수 있는 중재자를 추가할 수 있습니다.

주 후보자가 연락이 닿지 않게 되면, 나머지 구성원들이 선거를 실시하여 자격을 갖춘 차점 후보자를 자동으로 주 후보자로 승격시킵니다. 새로운 주 후보자가 선출되면 운영 이력서를 작성하고,ping 해당 애플리케이션은 다운타임이 최소화된 상태로 사용 가능합니다.

이 게시물을 요약하면 다음과 같습니다.