Docs Menu

자체 관리형 세컨더리를 중재자로 전환

If you have a 보조 in a replicaSet that no longer needs to hold data but that needs to remain in the set to ensure that the set can elect a primary, you may convert the secondary to an 중재자 using either procedure in this tutorial. Both procedures are operationally equivalent:

  1. If your application is connecting directly to the secondary, modify the application so that MongoDB queries don't reach the secondary.

  2. 세컨더리를 종료합니다.

  3. Remove the 보조 from the replicaSet by calling the rs.remove() method. Perform this operation while connected to the current 기본 in mongosh:

    rs.remove("<hostname><:port>")
  4. Verify that the replica set no longer includes the secondary by calling the rs.conf() method in mongosh:

    rs.conf()
  5. Move the secondary's data directory to an archive folder. For example:

    mv /data/db /data/db-old

    참고

    옵션

    You may remove the data instead.

  6. Create a new, empty data directory to point to when restarting the mongod instance. You can reuse the previous name. For example:

    mkdir /data/db
  7. Restart the mongod instance for the secondary, specifying the port number, the empty data directory, and the replica set. You can use the same port number you used before. Issue a command similar to the following:

    경고

    인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.

    mongod --port 27021 --dbpath /data/db --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  8. In mongosh convert the secondary to an arbiter using the rs.addArb() method:

    rs.addArb("<hostname><:port>")
  9. Verify the arbiter belongs to the replica set by calling the rs.conf() method in mongosh.

    rs.conf()

    The arbiter member should include the following:

    "arbiterOnly" : true
  1. If your application is connecting directly to the secondary or has a connection string referencing the secondary, modify the application so that MongoDB queries don't reach the secondary.

  2. Create a new, empty data directory to be used with the new port number. For example:

    mkdir /data/db-temp
  3. Start a new mongod instance on the new port number, specifying the new data directory and the existing replica set. Issue a command similar to the following:

    경고

    인스턴스를 공개적으로 접근 가능한 IP 주소에 바인딩하기 전에 무단 접근으로부터 클러스터를 보호해야 합니다. 보안 권장 사항의 전체 목록은 자체 관리 배포서버에 대한 보안 검사 목록을 참조하세요. 최소한 인증을 활성화하고 네트워크 인프라를 강화하는 것을 고려합니다.

    mongod --port 27021 --dbpath /data/db-temp --replSet rs --bind_ip localhost,<hostname(s)|ip address(es)>
  4. In mongosh connected to the current primary, convert the new mongod instance to an arbiter using the rs.addArb() method:

    rs.addArb("<hostname><:port>")
  5. Verify the arbiter has been added to the replica set by calling the rs.conf() method in mongosh.

    rs.conf()

    The arbiter member should include the following:

    "arbiterOnly" : true
  6. 세컨더리를 종료합니다.

  7. Remove the 보조 from the replicaSet by calling the rs.remove() method in mongosh:

    rs.remove("<hostname><:port>")
  8. Verify that the replica set no longer includes the old secondary by calling the rs.conf() method in mongosh:

    rs.conf()
  9. Move the secondary's data directory to an archive folder. For example:

    mv /data/db /data/db-old

    참고

    옵션

    You may remove the data instead.