Recientemente actualicé a Ubuntu 16.04, después de lo cual MongoDB 3.0.2 no se inicia.
$ sudo service mongod start
lo que arrojaría un error:
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.
Vi estos registros de errores al ejecutarsystemctl status mongod.service
● mongod.service
Loaded: loaded (/etc/init.d/mongod; bad; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2016-04-29 10:48:02 IST; 10s ago
Docs: man:systemd-sysv-generator(8)
Process: 8624 ExecStart=/etc/init.d/mongod start (code=exited, status=1/FAILURE)
mongod[8223]: Rather than invoking init scripts through /etc/init.d, use the service(8)
mongod[8223]: utility, e.g. service mongod start
mongod[8223]: initctl: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection
mongod[8223]: Since the script you are attempting to invoke has been converted to an
mongod[8223]: Upstart job, you may also use the start(8) utility, e.g. start mongod
mongod[8223]: start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection r
systemd[1]: mongod.service: Control process exited, code=exited status=1
systemd[1]: Failed to start mongod.service.
systemd[1]: mongod.service: Unit entered failed state.
systemd[1]: mongod.service: Failed with result 'exit-code'.
Probé las soluciones mencionadas a continuación, pero ninguna funcionó:
- Creó un archivo /lib/systemd/system/mongodb.service con el siguiente contenido:
[Unidad] Descripción=Base de datos orientada a documentos, de alto rendimiento y sin esquemas After=network.target
[Servicio] Usuario=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf
[Instalar] WantedBy=multi-user.target
- Intenté instalar upstartv
sudo apt-get install upstart-sysv
Respuesta1
- elimine upstart-sysv, puede iniciar mongo mediante una unidad systemd.
- verifique su archivo de configuración mongod.config. no debería haber
processManagement.fork
:true
- verifique su dbpath de mongo y
mongodb
el usuario de las carpetas de registro (en el archivo de servicio) con el que ejecuta su script debe tener permiso para acceder a estos archivos. - Si aún tiene problemas, verifique su archivo mongod.log (lo especificó en el archivo de configuración). Puede encontrar errores más detallados allí.
Respuesta2
OK lo hice:
- Respaldo:
# cp -vr /var/lib/mongodb /raíz/
# cp /etc/mongod.conf /root
- Se eliminó el antiguo inicio:
# rm -fr /etc/init.d/mongod
3 - Creó el archivo/etc/systemd/system/multi-user.target.wants/mongod.service, como:
# nano /etc/systemd/system/multi-user.target.wants/mongod.service
4 - Copié este script de otro sistema que ya era Xenial:
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual
[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/env bash -c "numactl --interleave=all /usr/bin/mongod --quiet --config /etc/mongod.conf"
# file size
LimitFSIZE=infinity
# cpu time
LimitCPU=infinity
# virtual memory size
LimitAS=infinity
# open files
LimitNOFILE=64000
# processes/threads
LimitNPROC=64000
# total threads (user+kernel)
TasksMax=infinity
TasksAccounting=false
# Recommended limits for for mongod as specified in
# http://docs.mongodb.org/manual/reference/ulimit/#recommended-settings
[Install]
WantedBy=multi-user.target
5 - Aún falla si intentas iniciarlo (mira el comando de inicio, usanumactl, entonces:
# apt-get install -y numactl
6 - Servicios de recarga:
# systemctl daemon-reload
7 - Elimina los bloqueos antiguos (reza para que tu base de datos esté sana):
# rm -fr /var/lib/mongodb/mongod.lock
8 - Reinicia, comprueba el estado y sé feliz:
# systemctl restart mongod.service
# systemctl status mongod.service
● mongod.service - High-performance, schema-free document-oriented database
Loaded: loaded (/etc/systemd/system/multi-user.target.wants/mongod.service; bad; vendor preset: enabled)
Active: active (running) since Qui 2018-05-17 21:15:16 -03; 2s ago
Docs: https://docs.mongodb.org/manual
Main PID: 6301 (mongod)
CGroup: /system.slice/mongod.service
└─6301 /usr/bin/mongod --quiet --config /etc/mongod.conf
Mai 17 21:15:16 xx-server systemd[1]: Started High-performance, schema-free document-oriented database.
```
Me acabo de enfrentar a esto hoy, así que tal vez todavía haya algunos sistemas Trusty que sean Xenial usando MongoDB en este ámbito de LTS. Perdón por el marcado, todavía estoy mejorando esto. ¡Lo mejor para todos ustedes!