2016-06-28 2 views
4

'admin'db의 관리자 사용자에게 'userAdminAnyDatabase'역할이없는 3 명의 구성원 (버전 2.4)의 mongodb 복제본 세트가 있습니다.mongodb 복제본 세트 외부에 잠김

이 역할은 모든 데이터베이스에서 사용자를 관리하는 데 필요합니다. 내가 현재 가지고

역할은 다음과 같습니다 [ "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin"]

나 자신에 대한 역할을 업데이트하거나 새로운 사용자를 생성 시도

그러나 나는 db.system에 액세스 할 수있는 권한이 없습니다 admin db에있는 사용자.

noauth = true로 설정하려고 시도했지만 도움이되지 않았습니다. keyFile을 제거 할 때 db는 다른 멤버와 동기화 할 수 없었고 (분명히) 복구 상태에 머물렀습니다.

스탠드 얼론 db (복제본 세트 없음)를 참조하는 similar question이 있으므로이 경우에는 도움이되지 않습니다.

시스템 중단 시간을 최소화하면서이 역할을 추가하는 가장 좋은 방법은 무엇입니까?

답변

1

mongodumpmongorestore을 사용하여 데이터를 백업 한 다음 올바른 권한으로 노드를 다시 작성하고 데이터를 복원하십시오.

그러나이 방법은 work한다 : 당신은 그때 자신을 잠근 경우

당신이 다음을 수행 할 필요가 다음 --auth를 제거

  1. 하여 MongoDB의 인스턴스를 중지하고/또는 --keyfile 옵션을 사용하십시오. 인증을 비활성화하려면
  2. 인증없이 인스턴스 시작
  3. 편집 필요
  4. 다시 시작과 사용자 인증 인스턴스는 스토리지 엔진으로 MMAP가 의미,
+0

감사합니다. 질문에 쓴 것처럼 복제 세트의 마스터 노드에서 인증을 사용하지 않으면 클러스터에 연결할 수 없습니다. 또한, mongodump & 복원은 매우 긴 정지 시간을 초래합니다. – odedfos

1

당신이 몽고 2.4을 사용하는 것처럼 할 수 있었다.

나의 제안은 다음과 같습니다

  1. 는 현재와 같은 미디어의 각 호스트하지만 다른 포트 및 설정 데이터베이스 디렉토리에 설정 유사한 복제본을 만들 수 있습니다.
  2. 구성 새 복제에 지역
  3. 변경 포트를 제외
  4. 정지 된 복제 세트 구성원
  5. MOVE 데이터베이스 파일을 새로운 디렉토리 에 실행되는 것과 같은 모든 인증 물건
  6. 그것을 시작 설정

다른 디렉토리로 파일을 이동하는 것은 포인터 변경 일뿐입니다. 이것은 몇 초가 걸릴 것입니다.

구현하기 전에 테스트하십시오.

모든 의견 환영합니다!

+0

op-log없이 데이터베이스 파일 (로컬 제외)을 이동하면 새 복제본 세트가 어떻게 영향을 받습니까? 동기화 방법을 알 수 있습니까? 또한 복제 지연으로 인해 모든 구성원간에 데이터가 정확하지 않은 경우에는 어떻게해야합니까? 그건 그렇고 내 스토리지 엔진은 tokumx – odedfos

+0

tokmux와 아무 경험이 없다 ... 당신은 먼저 마스터였던 하나를 복원해야합니다 – profesor79

+0

그냥 생각 ... oplog도 전송해야합니다 -하지만 여전히 스토리지 엔진 및 방법에 대해 생각 우리는 그걸 갈 수 있습니다 .... – profesor79

관련 문제