MongoDB는 서버 충돌 후 시작되지 않습니다.
내 Ubuntu 컴퓨터가 충돌했으며 다시 시작했을 때 MongoDB가 작동하지 않았습니다. 다음 명령을 시도하고 다음 출력을 얻었습니다.
$ mongo
Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
$ service mongodb status
mongodb stop/waiting
$ service mongodb restart
stop: Unknown instance:
start: Rejected send message, 1 matched rules; type="method_call",
sender=":1.57" (uid=1000 pid=2227 comm="start mongodb ")
interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)"
requested_reply="0"
destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
$ tail /var/log/mongodb/mongodb.log
[initandlisten] exception in initAndListen: 12596 old lock file, terminating
dbexit:
[initandlisten] shutdown: going to close listening sockets...
[initandlisten] shutdown: going to flush diaglog...
[initandlisten] shutdown: going to close sockets...
[initandlisten] shutdown: waiting for fs preallocator...
[initandlisten] shutdown: closing all files...
[initandlisten] closeAllFiles() finished
dbexit: really exiting now
(웹 사이트 레이아웃과 일치하도록 출력 형식이 변경되었습니다.)
어떻게 된 거예요? 어떻게 고칠 수 있습니까?
로그 파일은 "이전 잠금 파일" 이 있음을 알려줍니다 . MongoDB는 실행되는 동안 잠금 파일을 유지합니다 . 이 파일은 시작될 때 생성하고 중지되면 삭제합니다. 컴퓨터가 충돌 할 때 (또는 MongoDB가 충돌 (예 :를 통해 kill
))되면이 파일은 삭제되지 않으므로 데이터베이스가 시작되지 않습니다. 이 파일의 존재는 MongoDB의 부정확 한 종료를 나타냅니다.
다음 두 가지를 수행 할 수 있습니다.
이것이 개발 머신이고 데이터베이스를 사용하지 않았고 프로그램도없는 경우 수동으로 파일을 제거 할 수 있습니다. Ubuntu 12.10에서 실행되는 MongoDB 2.2.2의 경우
/var/lib/mongodb/mongod.lock
. 다른 버전의 경우 파일이 다른 경로에 있거나 이름이mongo.lock
.더 안전한 경로는 MongoDB의 내구성 및 수리 가이드 를 따르는 것 입니다. 요약하면 위의 구성을 사용하는 시스템의 경우 다음 명령을 실행해야합니다.
sudo -u mongodb mongod --repair --dbpath /var/lib/mongodb/ sudo service mongod start
내가해야 할 일은 실행하는 것뿐입니다. sudo mongod --repair
그때:
수도 몽고
내 경험을 바탕으로 저는 보통 데이터베이스 폴더 안에있는 "mongod.lock"파일을 삭제합니다. 제 경우에는 :
* 내 우분투 즉 "data"폴더에서 데이터베이스가 설치된 위치를 찾습니다. (cd data); 파일 목록 (ls) * 그런 다음 "rm mongod.lock"파일을 발행하여 데이터베이스 충돌시 자동으로 생성 된 "mongod.lock"파일을 제거합니다.
그 후 "./mongod"를 실행하여 mongo deamon을 시작하거나 mongo를 실행하여 mongo shell을 시작합니다. 그리고 모든 것이 잘 될 것입니다.
Bluepill 또는 Monit 등과 같은 모니터링 도구를 사용하지 않았다면 어떤 이유로 인해 서버 충돌 후 mongo가 데몬을 자동으로 시작하지 않았기 때문에이 문제에 직면해야 하며이 sudo service mongod restart
문제를 생각한 것처럼 수동으로 작동해야 하지만 필요합니다 더 많은 작업을 수행하려면 mongo /etc/mongod.conf
데몬을 시작하기 전에 dbpath를 확인하십시오 .
나를 위해 그것은
storage:
dbPath: /var/lib/mongodb
mongod
명령을 입력하면 MongoDB starting : pid=10795 port=27017 dbpath=/data/db 64-bit host=xyz.com
dbpath가 /etc/mongod.conf에 언급 된 것과 동일한 지 확인합니다.
이렇게하려면 입력 sudo mongod --dbpath /var/lib/mongodb
한 다음 mongod
명령을 사용 하여 원하는 dbpath에서 mongo 프로세스를 시작할 수 있습니다.
참고 :mongod
명령으로 mongo 프로세스 시작
서버에 충분한 여유 공간이 있는지 확인하십시오. 남은 공간이 없으면 mongodb가 시작되지 않습니다.
이것이 최선의 해결책은 아닐 수 있지만, 필사적이라면 시도해 볼 수 있습니다. 저널 만 문제가되는 것 같아서 다음 단계를 밟았습니다.
- 새 데이터 디렉토리를 만듭니다 . 아마도 / var / lib / mongodb2
- 새 데이터 디렉토리를 가리 키도록 mongod.conf 를 업데이트하십시오 .
- mongoDB를 시작하십시오 .
- If it starts successfully, then you can shut down mongo again and proceed, otherwise you can stop reading here.
- Locate your previous data dir and copy the files for your database(s) to your new data directory (example, admin.0 admin.1 admin.ns, etc)
- Start mongoDB again (still using the new data directory)
After completing these steps (took less than 5 min), I was up and running and all data appeared to be ok.
Thank's guys. We also faced an issue where MongoDB was restarting over and over again an it was complaining about old lock file. I stopped MongoDB from Windows service list and then I deleted the mongod.lock
file. After that I was able to start MongoDB service correctly and it worked fine.
Removing .lock
file from mongo data directory dbpath
works for me.
e.g sudo sudo rm {data-directory}/mongod.lock
참고URL : https://stackoverflow.com/questions/13700261/mongodb-wont-start-after-server-crash
'Programing' 카테고리의 다른 글
MySQL에서 인덱스 크기를 알아내는 방법 (0) | 2020.10.26 |
---|---|
지도 작업에서 튜플 풀기 (0) | 2020.10.26 |
쿼리와 같은 안전한 ActiveRecord (0) | 2020.10.26 |
한 데이터베이스에서 다른 데이터베이스로 테이블 값을 삽입하는 방법은 무엇입니까? (0) | 2020.10.26 |
지난 10 일 동안의 날짜로 기록을 나열하는 방법은 무엇입니까? (0) | 2020.10.26 |