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


