MongoDB에서 마이그레이션을 위해 복제 사용

MongoDB에서 마이그레이션을 위해 복제 사용

머신 간 원활한 마이그레이션을 위한 방법으로 Mongo의 복제본 세트 기능을 사용하는 것이 흥미롭습니다. 내 Mongo 데이터베이스는 현재 독립형 인스턴스입니다. 권장되는 방법은 세 개의 독립적인 인스턴스를 복제본 세트로 실행하는 것입니다. 그러나 가용성 요구 사항은 현재 세 개의 독립적인 인스턴스를 실행하는 비용을 정당화할 만큼 높지 않습니다. 즉, 가동 중지 시간을 최대한 피하고 싶습니다.

서버에 큰 변화를 줄 때 이상적으로 하고 싶은 일은 필요한 변경 사항을 적용하여 새 서버를 부팅하는 것입니다(원본에서 복제하거나 원하는 변경 사항을 적용하여 처음부터 새로 구축할 수도 있음). 이 서버는 mongo 데이터베이스를 호스팅하고 있습니다.

이 새 서버를 테스트하는 동안 나는 이 서버를 숨겨진 보조 서버로 만들고 싶습니다. 이렇게 하면 데이터가 있지만 실제로 클라이언트 요청에 응답하지 않습니다. 새 서버에 익숙해지면 새 서버가 기본 서버가 되고 기존 서버가 숨겨진 보조 서버가 되도록 전환하고 싶습니다. 이런 방식으로 이전 서버는 계속해서 데이터를 가져오지만 클라이언트 요청을 처리하지 않습니다. 문제가 감지되면 기본 서버와 보조 서버를 다시 뒤집어 클라이언트를 이전 서버로 다시 보낼 수 있습니다. 며칠 후에 문제가 없다고 가정하면 이전 서버를 종료할 수 있습니다.

내 질문은 다음과 같습니다

  • 이 방법을 사용하면 어떤 문제가 발생할 수 있나요?
  • 가동 중지 시간 없이 한 서버에서 다른 서버로(클라이언트를 한 서버에서 다른 서버로) 데이터를 이동하려는 목표를 달성할 수 있습니까?
  • 향후 변경을 위해 이 작업을 수행하고 싶을 수도 있으므로 새 서버를 멤버가 0인 복제본 세트로 남겨 둘 것입니다. 나는 이것이 최소한 세 명의 구성원이 제공하는 고가용성을 제공하지 않는다는 것을 알고 있습니다. 하지만 이대로 놔둬도 손해가 없을까요? 아니면 독립형 인스턴스로 다시 전환하는 것이 가장 좋습니까?

답변1

기본을 선택하려면 복제본 세트에 최소 3개의 서버가 필요합니다. 기존 서버, 새 서버 및 그 중 하나에서 실행되는 중재자를 사용하여 세 번째 서버로 사용할 수 있습니다. 단일 서버 복제본 세트를 실행할 수 없습니다. 기본이 없으면 쓰기를 수행할 수 없습니다.

mongod 서비스를 중지/시작하지 않고는 독립형에서 복제 세트로 변경할 수 없습니다. mongod.conf를 사용하여 mongo를 다시 시작 --replSet replica_set_name하거나 해당 옵션을 추가 해야 합니다 .replSet=replica_set_name

동기화한 후에는 다시 독립 실행형으로 변환하는 것과 비슷한 프로세스가 됩니다(mongo 중지, replSet 구성 제거, mongo 시작).

클라이언트가 읽기 기본 설정으로 "기본"으로 구성된 경우 읽기가 보조로 이동하지 않습니다(보조는 주로 수평 확장이 아닌 내구성을 위해 사용되므로 이는 일반적으로 기본값입니다).

http://docs.mongodb.org/manual/tutorial/convert-standalone-to-replica-set/

관련 정보