2014-04-10 5 views
0

현재 mongodb 2.4.8에 있습니다. 1 차, 2 차 및 중재자로 구성된 하나의 머신에 복제 세트가 있습니다. 나는 인정을 받았다. 내 문제는 중재자로 로그인 할 수없고, "db.logRotate();를 인증 및 실행 할 수 없다는 것입니다." 권한에 계속 실패합니다. 내가 뭘 잘못하고 있는지, 아니면이 일을 할 수 없는지 알 수 없으며, 대신 "kill usr1"을해야합니다.은 mongodb arbiter에서 인증 할 수 없습니다.

+0

을 내가 jpsf에서 제안하는 명령을 실행하고 난 다음 얻을 :> adminuse 관리자 를 사용하는 관리자를 dB로 전환 > db.runCommand ({ logRotate : 1}), db.runCommand ({logRotate : 1}); { "ok": 0, "errmsg": "unauthorized"} –

+1

"인증되지 않은"오류는 인증을 사용 중이며 관리 데이터베이스에서 작업을 수행 할 수있는 적절한 권한을 가진 사용자로 로그인하지 않았 음을 의미합니다. 2.4에서 logRotate 명령에는 "clusterAdmin"특권이 필요합니다. – daveh

+1

로그를 1 차 또는 2 차 모두 성공적으로 회전시킬 수 있습니다. 중재자에 대해이 명령을 사용할 수는 없습니다. 중재인도 인증 할 수 없습니다. 내가 사용하는 사용자 ID는 "clusterAdmin"권한을가집니다. –

답변

0

Mongo 복제는 사용자를 동기화 할 때 중재자를 완전히 무시하는 것처럼 보입니다. 내 클러스터에서 keyFile 인증을 사용하고, 항상 단지 어떤 권한도없이 중재자에 로그인 할 수있게 해줍니다. 로컬 시스템에서 logRotate 명령이 작동합니다 (localhostAuthBypass 때문에). 원격 셸에서 로그인하면 명령에 대한 권한이 없습니다.

그러나 나는 항상 로그를 회전시키는 야간 cronjob을 예약합니다. 당신은 심지어 몽고 쉘에 로그인하지 않고 한 라이너로이 작업을 수행 할 수 있습니다 간단히 말하자면, 그것은 단지 :

kill -10 $(cat <pidfile>) 
00 00 * * * /usr/bin/kill -10 /mongo/mongo.pid >>/mongo/logrotation.log 2>&1 

"-10"로그를 회전 몽고를 알려줍니다 SIGUSR1을 의미한다. processManagement.pidFilePath (2.6) 또는 --pidfilepath (2.4) 옵션을 사용하고 있는지 확인하고이 명령에 나열된 것과 동일한 pidfilepath가 있는지 확인하십시오. 당신은 서버에서 실행되는 여러 mongos 경우

이 아니면 :

for file in /<mongo_pidfile_directory>/*.pid ; do kill -10 $(cat $file) ; done 
+0

현재 우리는 생산중인 복제 세트에 중재자가 없습니다. 귀하의 해결 방법은 알고 있기 때문에 우리가 중재인을 가지고 dev에 있기 때문에 그것은 전혀 나를 허용하지 않기 때문에 중재자에서 아무것도 할 수 없습니다. 매우 실망 스럽다. –

관련 문제