서버 크래시 후 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 -- 수리
그 후, 다음과 같이 합니다.
스도몽고드
지금까지의 경험을 바탕으로 데이터베이스 폴더 내에 있는 "mongod.lock" 파일을 삭제합니다.내 경우:
* Ubuntu에서 데이터베이스가 설치되어 있는 곳을 참조합니다.data. (cd data) folder. (ls) 파일 목록 표시 * 데이터베이스 크래시 시 자동으로 생성된 "mongod.lock" 파일을 "rm mongod.lock" 파일로 삭제합니다.
그 후 ".mongod"를 발행하여 mongo deamon을 기동하거나 mongo를 발행하여 mongo shell을 기동합니다.모든 게 잘 될 거야
서버에 사용 가능한 공간이 충분한지 확인합니다.자리가 없으면 mongodb가 시작되지 않습니다.
Bluepill이나 Monit 등의 모니터링 툴을 사용하지 않은 경우 이 문제에 직면해야 합니다.어떤 이유로 인해 서버가 크래쉬한 후 mongo가 데몬을 자동으로 시작하지 않으면 수동으로 작동시켜야 하기 때문입니다.sudo service mongod restart
이 문제를 이해했습니다만, 몇 가지 작업이 더 필요합니다.dbpath를 확인해 주세요./etc/mongod.conf
daemonmongo daemon을 에.
저는요.
storage:
dbPath: /var/lib/mongodb
시mongod
MongoDB starting : pid=10795 port=27017 dbpath=/data/db 64-bit host=xyz.com
가 /confdbpath /etc/mongod.conf에된 것과 합니다.
, 라고 입력해 주세요.sudo mongod --dbpath /var/lib/mongodb
에 런음음음 and를 사용하다mongod
dbpath mongo mongo opathpath 。
참고로 mongo 프로세스를 시작합니다.mongod
이것이 최선의 해결책은 아닐지도 모르지만, 만약 당신이 절박하다면 이것을 시도해 볼 수 있다.저널만 문제인 것 같아서 다음 절차를 밟았습니다.
- 새 데이터 디렉토리를 만듭니다./var/lib/mongodb2일 수 있습니다.
- mongod.conf를 업데이트하여 새 데이터 dir를 가리킵니다.
- mongoDB를 기동합니다.
- 정상적으로 기동하면, 다시 mongo 를 셧다운 해 속행할 수 있습니다.그 이외의 경우는, 여기서 읽기를 정지할 수 있습니다.
- 이전 데이터 디렉토리를 찾아 데이터베이스 파일을 새 데이터 디렉토리에 복사합니다(예: admin.0 admin.1 admin.ns 등).
- mongoDB를 다시 시작합니다(새 데이터 디렉토리를 계속 사용).
이 절차를 완료(5분 이내에 완료)한 후 실행 중이었고 모든 데이터는 정상으로 나타났습니다.
감사합니다.또, MongoDB가 재기동해, 낡은 록 파일에 대해 불평하는 문제도 있었습니다.Windows 서비스 리스트에서 MongoDB를 정지하고 나서mongod.lock
그 후, MongoDB 서비스를 올바르게 기동할 수 있었고, 정상적으로 동작했습니다.
「」의 삭제".lock
directory mongo dbpath
잘 먹히네요.
: ★sudo sudo rm {data-directory}/mongod.lock
언급URL : https://stackoverflow.com/questions/13700261/mongodb-wont-start-after-server-crash
'sourcecode' 카테고리의 다른 글
dump()에 필요한 위치 인수 1개가 없음: python json의 'fp' (0) | 2023.02.15 |
---|---|
Google App Engine에서 JSON을 해석하려면 어떻게 해야 합니까? (0) | 2023.02.15 |
Response JSON을 Flutter에서 객체로 변환하는 방법 (0) | 2023.02.15 |
Wordpress wp-admin이 https로 리다이렉트합니다. (0) | 2023.02.15 |
@RequestBody가 null 값을 가져옵니다. (0) | 2023.02.15 |