ReplicaSet으로 sharding 구성된 MongoDB 클러스터를 올렸다 내렸다 하다가,

어느 순간 shell 명령어가 안먹히는것이었다.

물론 어플리케이션에서도.

shell에서 에러메세지는 setShardVersion failed 어쩌고 뭐 old version 이라느니 하는 메세지가 나왔고,

로그파일을 뒤져보니 SyncClusterConnection, assertion: "unauthorized db:admin lock type:1" 뭐 이딴식이었다. (db 이름은 그때그때 다를 수 있다)

여튼 난 손도 안댔는데(!) 지 혼자 저러고 있는 걸 보니 안타깝기도 하고,

그걸 어떻게 해보려는 내 모습이 안타깝기도 했는데,

결론은 아래와 같은 형태로 정상동작 시킬 수 있었던 것이다.

1. 전체 클러스터 shutdown

2. auth를 off한 상태에서 재시작

3. 각 ReplicaSet을 구성하는 mongod에 접속하여 user 추가

4. auth를 on한 상태로 전체 클러스터 재시작

 

db.repairDatabase()도 해봤었고 뭐 이것저것 한 상황이라 잘은 모르지만 여튼 저게 주효했던 것 같다.

정확한 원인은 모르겠다...-_-

Posted by bloodguy
,