Чего я хочу добиться, так это иметь сценарий /etc/init.d, который более надежно запускает Mongodb, даже если он вышел из строя - он должен попытаться выполнить авторемонт, если система находится в заблокированном состоянии.
Да, я мог бы написать это сам, но я думаю, что кто-то там уже сделал это.
Я заметил, что после отказа сервера сервер Mongodb находится в состоянии, когда он не перезапускается с помощью сценария /etc/init.d/mongod. Очевидно, что файл (ы) блокировки необходимо удалить, и его нужно запустить с параметром --repair и сначала исправить --dbpath, прежде чем его можно будет успешно перезапустить. В некоторых случаях нужно также изменить владельца db-файлов на пользователя, который запускает mongodb. Еще одна проблема заключается в том, что стандартный скрипт /etc/init.d/mongod не сообщает об ошибке в этой ситуации, а скорее радостно и некорректно возвращается со статусом «ОК», сообщая, что Mongod был запущен, хотя и не был.
$ sudo /etc/init.d/mongod start
Starting mongod: forked process: 9220
all output going to: /data/mongo/log/mongod.log
[ OK ]
$ sudo /etc/init.d/mongod status
mongod dead but subsys locked
Операционная система - CentOS или Fedora.
Кто-нибудь изменил сценарии /etc/init.d или указатель на такие сценарии, которые в такой ситуации пытаются выполнить восстановление автоматически? Или есть другой инструмент, который функционирует в качестве сторожевого устройства для Mongod?
Любые мнения о том, почему может быть плохой идеей попытаться автоматически восстановить mongodb?
$ sudo /etc/init.d/mongod status
mongod dead but subsys locked
$ sudo ls -l /var/lib/mongo/mongod.lock
-rw-r--r--. 1 mongod mongod 5 Nov 19 11:52 /var/lib/mongo/mongod.lock
$ sudo tail -50 /data/mongo/log/mongod.log
**************
old lock file: /data/mongo/db/mongod.lock. probably means unclean shutdown
recommend removing file and running --repair
see: http://dochub.mongodb.org/core/repair for more information
*************
Sat Nov 19 11:55:44 exception in initAndListen std::exception: old lock file, terminating
Sat Nov 19 11:55:44 dbexit:
Sat Nov 19 11:55:44 shutdown: going to close listening sockets...
Sat Nov 19 11:55:44 shutdown: going to flush oplog...
Sat Nov 19 11:55:44 shutdown: going to close sockets...
Sat Nov 19 11:55:44 shutdown: waiting for fs preallocator...
Sat Nov 19 11:55:44 shutdown: closing all files...
Sat Nov 19 11:55:44 closeAllFiles() finished
Sat Nov 19 11:55:44 dbexit: really exiting now