Установить mongoDB (дочерний процесс завершился неудачно, вышел с номером ошибки 100)
Я попытался установить mongoDB на мой macbook-воздух.
Я загрузил заархивированный файл с официального сайта и извлек этот файл и переместился в корневой каталог.
После этого в этом каталоге я создал папку data/db и /log.
Вот мой mongodb.config
, который описывает базовую конфигурацию для моей БД.
dbpath = /mongodb/data/db
logpath = /mongodb/log/mongo.log
logappend = true
#bind ip = 127.0.0.1
port = 27017
fork = true
rest = true
verbose = true
#auth = true
#noauth = true
Кроме того, я хочу знать, что означает #
в файле конфигурации.
Я помещал этот файл в /mongodb/bin
, /mongodb
- это каталог, в который я извлекал файлы.
Я открыл терминал и ввел ./mongod --config mongodb.config
, и я получил это обратно.
Juneyoung-ui-MacBook-Air:bin juneyoungoh$ ./mongod --config mongodb.config
about to fork child process, waiting until server is ready for connections.
forked process: 1775
all output going to: /mongodb/log/mongo.log
ERROR: child process failed, exited with error number 100
Как я могу справиться с этой ошибкой и что это значит?
Ответы
Ответ 1
Созданные вами папки данных, скорее всего, были созданы с помощью sudo
, да? Они принадлежат root
и не доступны для записи вашим обычным пользователям. Если вы являетесь единственным пользователем своего macbook, измените права собственности на каталоги:
sudo chown juneyoungoh /data
sudo chown juneyoungoh /data/db
sudo chown juneyoungoh /data/log
Если вы планируете установить это на общедоступном компьютере или где-то законным, прочитайте больше о методах безопасности mongo в других местах. Я просто заставлю вас работать на вашем macbook.
Ответ 2
У меня была аналогичная проблема, и она не была связана с какой-либо проблемой sudo. Я пытался оправиться от паники ядра!
Когда я смотрю на папку с данными, я обнаружил, что там был файл mongod.lock. В моем случае эта страница помогла много: http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/. Как они объясняют,
если mongod.lock не является файлом с нулевым байтом, тогда mongod откажется запускаться.
Я тестировал это решение в своей среде, и он отлично работает:
- Удалите файл
mongod.lock
.
- Восстановить базу данных:
mongod --dbpath /your/db/path --repair
- Run mongod:
mongod --dbpath /your/db/path
Ответ 3
На моей машине была такая же проблема. В файле журнала был:
Пн Июл 29 09: 57: 13.689 [initandlisten] ОШИБКА: Недостаточное свободное пространство для файла журнала
Пн Июл 29 09: 57: 13.689 [initandlisten] Пожалуйста, сделайте не менее 3379MB доступным в /var/mongoexp/rs 2/journal или используйте --smallfiles
Это было решено с помощью mongod --smallfiles
. Или, если вы запустите mongod с опцией --config, чем в файле конфигурации, отключите ведение журнала с помощью записи nojournal=true
(удалите начало #). Некоторое место на диске также решит вышеупомянутую проблему.
Ответ 4
Аналогичная проблема с той же ошибкой - я пытался запустить ремонт script
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
Проверено ps aux | grep mongo
и убедитесь, что демон запущен. Остановите его, а затем выполните ремонт script без проблем.
Надеюсь, что это может быть полезно для кого-то другого.
Ответ 5
Это потому, что вы, вероятно, не закрыли mongodb правильно, и вы не начинаете mongodb правильно. Согласно вашему mongodb.config
, у вас есть dbpath = /mongodb/data/db
- поэтому я предполагаю, что вы создали репозиторий /mongodb/data/db
? Позвольте мне прояснить все этапы.
В mongodb.config
измените dbpath = /mongodb/data/db
на dbpath = /data/db
. На вашем терминале создайте репозиторий db, набрав: mkdir /data/db
. Теперь у вас есть репозиторий - вы можете начать свое монго.
Чтобы запустить mongo в фоновом режиме: mongod --dbpath /data/db --fork --logpath /dev/null
.
-
/data/db
- это местоположение db.
-
--fork
означает, что вы хотите запустить mongo в фоновом режиме - deamon.
-
--logpath /dev/null
означает, что вы не хотите регистрироваться - вы можете изменить это, заменив /dev/null
на путь, например /var/log/mongo.log
- TO SHUTDOWN MONGODB
Подключите к вашему монго, набрав: mongo
, а затем use admin
и db.shutdownServer()
. Как объяснять в mongoDB
Если этот метод не работает по какой-либо причине, вы всегда можете убить процесс.
Найдите идентификатор процесса mongodb, набрав: lsof -i:27017
, предполагая, что ваш mongodb запущен на порту 27017
Введите kill <PID>
, замените <PID>
на значение, найденное предыдущей командой.
Ответ 6
У меня была такая же ошибка в linux (Centos), и это сработало для меня
-
Удалите mongod.lock из dbpath
$ rm /var/lib/mongo/mongod.lock
-
Отредактируйте процесс mongod
$ mongod --repair
-
Запустите конфигурацию mongod
$ mongod --config /etc/mongod.conf
Ответ 7
У меня была такая же ошибка. Я провел его интерактивно, чтобы увидеть журнал.
2014-10-21T10:12:35.418-0400 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017
Затем я использовал lsof
, чтобы узнать, какой процесс использует мой порт.
$ lsof -i:27017
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mongod 2106 MYUSERID 10u IPv4 0x635b71ec3b65b4a1 0t0 TCP *:27017 (LISTEN)
Это был mongod
, который я раньше вилка и забыл отключить (так как я не видел, чтобы он работал в моем bash окне).
Просто убив его, запустив kill 2106
, включил мой процесс для запуска без ошибки 100.
Ответ 8
Как правило, эта ошибка возникает, когда файл mongod.conf не может найти определенный путь к хранилищу базы данных или хранилищу журнала или, возможно, к хранилищу процессов, или, возможно, он не получает разрешение на доступ к каталогам конфигурации и файлам, объявленным в mongod..conf
Чтобы устранить эту ошибку, нам нужно просмотреть журнал, сгенерированный MongoDB, в котором будет четко указано, к какому файлу или каталогу MongoDB не доступен
вышеуказанная ошибка может выглядеть как на скриншоте ниже ![enter image description here]()
![enter image description here]()
Ответ 9
создайте папку "data" и "db" внутри нее, в пути "/" вашего сервера. на самом деле вы должны создать или изменить права доступа к папке, в которой будут храниться данные!