programing

MongoDB 복제본 세트를 독립 실행형 서버로 변환하는 방법

muds 2023. 7. 15. 10:40
반응형

MongoDB 복제본 세트를 독립 실행형 서버로 변환하는 방법

4개의 복제 세트가 있으며 구성은 다음과 같습니다.

{
 "_id": "rs_0",
 "version": 5,
 "members" : [
  {"_id": 1, "host": "127.0.0.1:27001"},
  {"_id": 2, "host": "127.0.0.1:27002"},
  {"_id": 3, "host": "127.0.0.1:27003"},
  {"_id": 4, "host": "127.0.0.1:27004"}
 ]
}

다음을 사용하여 모든 세트에 연결할 수 있습니다.mongo --port <port>

독립 실행형을 복제본 집합으로 변환에 대한 정보를 가져오는 문서가 있지만, 복제본 집합에서 독립 실행형으로 다시 변환하는 방법을 알려줄 수 있는 사람이 있습니까?

복제본 집합에서 모든 보조 호스트를 제거하고(rs.remove('host:port'), replSet 매개 변수 없이 mongo deamon을 다시 시작합니다(/etc/mongo.conf 편집). 그러면 보조 호스트가 독립 실행형 모드로 다시 시작됩니다.

기본 호스트는 rs.remove를 사용하여 복제본 세트에서 제거할 수 없으므로 까다로운 호스트입니다.복제본 집합에 기본 노드만 있으면 mongo 셸을 종료하고 mongo를 중지해야 합니다.그런 다음 /etc/mongo.conf를 편집하고 replSet 매개 변수를 제거하고 mongo를 다시 시작합니다.일단 mongo를 시작하면 이미 독립 실행형 모드에 있지만 mongo 셸은 다음과 같은 메시지를 표시합니다.

2015-07-31T 12:02:51.112+0100 [initandlisten] ** WARNING: mongod가 --replSet 없이 시작되었지만 1개의 문서가 로컬에 있습니다.system.syset

경고를 제거하려면 두 가지 절차를 수행할 수 있습니다. 1) 로컬 데이터베이스를 삭제하고 mongo를 다시 시작합니다.

use local
db.dropDatabase();

/etc/init.d/mongod restart

아니면 그렇게 급진적이 되고 싶지 않다면, 다음과 같이 할 수 있습니다.

use local
db.system.replset.find()

그러면 다음과 같은 메시지가 표시됩니다.

{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] }

그런 다음 다음을 사용하여 삭제합니다.

db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "host" : "hostprimary:mongoport" } ] })

아마 다음과 같은 메시지가 표시될 것입니다.

WriteResult({ "nRemoved" : 1 })

이제 몽고를 다시 시작하면 경고가 사라집니다. 그러면 몽고는 경고 없이 독립 실행형 모드로 전환됩니다.

복제본 집합에서 호스트를 제거하기만 하면 됩니다(rs.remove('host:port')), 를 사용하지 않고 다시 시작합니다.replSet매개 변수가 다시 독립 실행형이 됩니다.

Ubuntu 시스템에서

  1. mongo 서버 중지
  2. /etc/mongod.conf 열기
  3. 복제 및 replSetName 행에 주석 달기
#replication:
   #replSetName: rs0
  1. mongo 서버를 시작하고 mongo 셸로 이동합니다.
  2. 로컬 데이터베이스 삭제

use local

db.dropDatabase()
  1. mongo 다시 시작

MongoDB 설명서는 복제본 세트 구성원에 대한 유지관리를 수행하기 위해 다음 사항을 제안합니다. 이 경우 복제본 세트 구성원은 추가 작업을 위해 독립 실행형 모드로 전환됩니다.거의 수정하지 않고 독립형으로 만들 수 있습니다.

  1. 해당 노드가 샤드의 유일한 노드인 경우 여기 MongoDB 설명서에 따라 청크를 다른 샤드로 배출합니다. 그렇지 않으면 샤드 데이터베이스가 손상됩니다.
    • mongos에 연결하여 밸런서를 사용하도록 설정했는지 확인하고 실행합니다.sh.startBalancer(timeout, interval)
    • 해당 샤드의 경우 관리 데이터베이스로 이동하여db.adminCommand( { removeShard: "mongodb0" } )
    • 위의 removeShard 명령을 반복하여 배출 상태를 확인하고 배출이 완료될 때까지 기다립니다.
  2. 해당 노드가 기본일 경우 다음을 수행합니다.rs.stepDown(300)
  3. 를 합니다.db.shutdownServer()
  4. 다음 방법으로 yaml 구성을 변경합니다.
    • replication.replSetName 주석 달기(명령줄에서 --replSetName)
    • sharding.clusterRole for shard 또는 config server(명령줄에서 --shardsvc 및 --configsvr) 주석을 추가합니다.
    • net.port 주석을 추가한 다음 다른 포트로 변경(명령줄의 --port)
  5. mongod 인스턴스 시작
  6. 인 경우 하여 mongod를 합니다.rs.remove("host:port")

이 후 해당 노드가 독립 실행형 모드로 실행되고 있어야 합니다.

다음 단계를 수행합니다.

  1. 보조 서버의 mongo 셸로 이동

  2. 다음 명령을 사용하여 보조 서버를 중지합니다. use admin db.shutdownServer()

  3. Linux shell-on secondary 서버로 이동하고 아래 명령을 입력합니다.

sudo 서비스 mongod stop

MongoDB 복제 시작 중 -

  • 보조 서버에서 Linux 셸로 이동하고 아래 명령을 입력합니다.

    sudo service mongod 시작 MongoDB 복제 시작 -

  • primary로 이동하고 아래 명령을 입력하여 복제를 시작합니다.

rs.s.s.

rs.add("2차 -1: 포트 번호")

rs.add("보조-2: 포트 번호")

rs.add({ "_id" : 3, "host" : "Hidden_member:port no", "priority" : 0, "hidden" : true })

rs.status()

언급URL : https://stackoverflow.com/questions/16914281/how-to-convert-a-mongodb-replica-set-to-a-stand-alone-server

반응형