Не удалось перезапустить службу mongod, порт 27017 не используется - даже получение адреса уже используется ошибка - PullRequest
0 голосов
/ 02 февраля 2019

Я не могу запустить службу mongo db, если я пытаюсь запустить mongod, используя systemctl restart mongod получаю ошибку

Сбой задания для mongod.service, поскольку процесс управления завершился с кодом ошибки.Подробности смотрите в "systemctl status mongod.service" и "journalctl -xe".

Журналы: vi /var/log/mongo/mongod.log

enter image description here

В файле журнала, если я вижу сообщение ниже, похоже, порт уже используется

исключение в initAndListen std :: exception: listen: Адрес уже используется, завершается

netstat -apt| grep "27017" 

Нет идентификатора процесса.

Ниже приведен статус mongod: enter image description here

Я не получаю никакого решения,Ваша помощь будет принята с благодарностью.Спасибо.

Ответы [ 2 ]

0 голосов
/ 18 марта 2019

Одной из проблем было то, что файл блокировки, используемый MongoDB, мог иметь неправильное владение: -rw-r - r-- 1 корневой корень 0 марта 16 02:27 /var/lib/mongo/mongod.lock

Предложите вам просто удалить его, что позволит MongoDB воссоздать его правильно.Этот файл нужен только MongoDB, если он в данный момент работает, и в идеале файл должен существовать только в том случае, если он тоже выполняется, поскольку он содержит только копию идентификатора текущего процесса, под которым работает MongoDB.

Вторая проблемабудет сам файл конфигурации: /etc/mongod.conf.MongoDB ожидает, что файл будет в формате YAML, где очевидно, что пробелы имеют значение.У меня есть общий пример файла конфигурации, который работал на нашем сервере.

По сути, каждый отступ должен быть сделан с использованием двух пробелов для любых директив под их родительской директивой.

Дополнительные замечания:

Например, заголовок «net:» не имеет отступа, потому что он является вершиной своего уровня конфигурации, где «port:» и «bindIp:» каждый имеет два пробела, так как «net:"является их родительской директивой.Директива "ssl:" также имеет два пробела, так как ее родителем является "net:", но поскольку "mode:", "CAFile:" и "PEMKeyFile:" вместе принадлежат "ssl:", они идут под ней и сновакаждый занимает 2 дополнительных пробела для дальнейшего отступа в общей сложности 4 пробела.

Наконец, будет работать следующий перезапуск Монго:

systemctl restart mongod

или

systemctl restart mongod.service

# mongod.conf

# for documentation of all options, see:
#   http://docs.mongodb.org/manual/reference/configuration-options/

# where to write logging data.
systemLog:
  destination: file
  logAppend: true
  path: /var/log/mongodb/mongod.log

# Where and how to store data.
storage:
  dbPath: /var/lib/mongo
  journal:
    enabled: true
#  engine:
#  mmapv1:
#  wiredTiger:

# how the process runs
processManagement:
  fork: true  # fork and run in background
  pidFilePath: /var/run/mongodb/mongod.pid  # location of pidfile
  timeZoneInfo: /usr/share/zoneinfo

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0  # Listen to local interface only, comment to listen on all interfaces.
  ssl:
    mode: preferSSL
    CAFile: /etc/ssl/mongodb/RootCA/root-ca.pem
    PEMKeyFile: /etc/ssl/mongodb/host.omkieitsolutions.com.pem

security:
  authorization: enabled
  clusterAuthMode: keyFile

#operationProfiling:

#replication:
"/etc/mongod.conf" 50L, 990C           
0 голосов
/ 03 февраля 2019

Попытка запуска mongodb на другом порту и с другим каталогом данных, что может быть полезно, используйте приведенную ниже команду для запуска с другого порта и другого каталога данных

mongod --port 27027 --dbpath </path/to/your/data/directory>

Если эта работа, то какой-то процесс может использовать27017 или или у вас может быть запущен mongod в фоновом режиме, поэтому сначала проверьте идентификатор процесса и вручную уничтожьте его, как показано ниже

ps -Aef | grep 27017

или

ps -Aef | grep mongod

Найдите идентификатор процесса и уничтожьте его

 sudo kill -9 <processId>

Затем попробуйте перезапустить его, как вы делаете:

 systemctl restart mongod

или:

 /etc/init.d/mongodb restart

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...