Ubuntu 16.04로 업그레이드한 후 MongoDB 3.0.2가 시작되지 않습니다.

Ubuntu 16.04로 업그레이드한 후 MongoDB 3.0.2가 시작되지 않습니다.

최근 Ubuntu 16.04로 업그레이드한 후 MongoDB 3.0.2가 시작되지 않습니다.

$ sudo service mongod start

오류가 발생합니다.

Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

실행하여 이러한 오류 로그를 보았습니다.systemctl 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'.

아래에 언급된 해결 방법을 시도했지만 아무 것도 효과가 없었습니다.

  1. 다음 내용으로 /lib/systemd/system/mongodb.service 파일을 생성했습니다.

[단위] 설명=고성능, 스키마 없는 문서 중심 데이터베이스 After=network.target

[서비스] 사용자=mongodb ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[설치] WantedBy=multi-user.target

  1. upstartv 설치를 시도했습니다. sudo apt-get install upstart-sysv

답변1

  • upstart-sysv를 제거하면 시스템 단위로 mongo를 시작할 수 있습니다.
  • mongod.config 구성 파일을 확인하세요. 그러지 말았어야 했는데processManagement.fork:true
  • 스크립트를 실행하는 mongo dbpath 및 로그 폴더 mongodb사용자(서비스 파일)가 이러한 파일에 액세스할 수 있는 권한이 있는지 확인하십시오.
  • 여전히 문제가 있는 경우 mongod.log 파일(구성 파일에 지정)을 확인하면 거기에서 더 자세한 오류를 찾을 수 있습니다.

답변2

네, 제가 그랬습니다:

    • 지원:

    # cp -vr /var/lib/mongodb /root/

    # cp /etc/mongod.conf /root

    • 이전 초기화를 삭제했습니다.

    # rm -fr /etc/init.d/mongod

3 - 파일 생성/etc/systemd/system/multi-user.target.wants/mongod.service, 좋다:

# nano /etc/systemd/system/multi-user.target.wants/mongod.service

4 - 이미 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 - 시작하려고 하면 여전히 실패합니다(시작 명령을 살펴보세요.numactl, 그래서:

# apt-get install -y numactl

6 - 서비스 다시 로드:

# systemctl daemon-reload

7 - 오래된 잠금을 제거합니다(데이터베이스가 정상이 되도록 기도하세요):

# rm -fr /var/lib/mongodb/mongod.lock

8 - 다시 시작하고 상태를 확인한 후 만족하세요.

# 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.

````

저는 오늘 이 문제에 직면했습니다. 따라서 이 LTS 영역 주변에 MongoDB를 사용하는 Xenial이 될 일부 Trusty 시스템이 여전히 있을 수 있습니다. 마크업을 해서 죄송합니다. 아직 개선 중입니다. 여러분 모두에게 최고입니다!

관련 정보