安裝 mongodb 記錄


原創博文 轉載請注明出處

下載安裝 mongodb

參考:link

首先確定安裝路徑為:/usr/local/mongodb

  • 下載安裝
# 進入存放安裝包的路徑
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz     # 下載
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz                                    # 解壓
mv mongodb-linux-x86_64-3.0.6/ /usr/local/mongodb                           # 將解壓包拷貝到安裝目錄
  • 進入安裝目錄,創建數據庫目錄
cd /usr/local/mongodb
mkdir -p /data/db

此時數據庫目錄為 /usr/local/mongodb/data/db

  • 進入 MongoDB bin 目錄,運行測試是否能正常運行
cd /usr/local/mongodb/bin
./mongod

中間出現 exception: connect failed
原因是未指定數據庫位置

./mongod --dbpath /data/db

啟動 MongoDB 成功

  • 另開一個終端連接 MongoDB
cd /usr/local/mongodb/bin
./mongo
...
...
> 3+3
6
>

出現 > shell 界面則表示 MongoDB 正常啟動,仍出現exception: connect failed 表示啟動失敗,需另找原因


后台啟動 MongoDB

創建 MongoDB 啟動配置項文件

[root@localhost system]# cd /usr/local/mongodb/bin
[root@localhost bin]# touch mongodb.conf
[root@localhost bin]# vim mongodb.conf

port=27017
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/bin/mongodb.log
logappend=true
fork=true

注意上述配置項含義:

port = 端口號
dbpath= MongoDB 數據庫文件夾路徑
logpath = 后台啟動產生的 log 文件路徑
logappend = log 是否追加
fork = 后台啟動,這個一定要加

注意上述配置項路徑錯誤將導致啟動失敗

創建 system 后台啟動文件

[root@localhost bin]# cd /lib/systemd/system
[root@localhost bin]# vi mongodb.service
[Unit]  
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
  
[Service]
Type=forking
RuntimeDirectory=mongodb
RuntimeDirectoryMode=0751
# PIDFile=/var/run/mongodb/mongod.pid
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/bin/mongodb.conf  
PrivateTmp=false  
  
[Install]  
WantedBy=multi-user.target

后台啟動,開機啟動

[root@localhost bin]# system start mongodb.service
[root@localhost bin]# system enable mongodb.service

查看狀態

[root@localhost bin]# system status mongodb.service
â— mongodb.service - mongodb
   Loaded: loaded (/usr/lib/systemd/system/mongodb.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-07 16:06:04 CST; 10s ago
  Process: 6752 ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf (code=exited, status=0/SUCCESS)
 Main PID: 6756 (mongod)
    Tasks: 11
   CGroup: /system.slice/mongodb.service
           └─6756 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/bin/mongodb.conf

Oct 07 16:06:03 localhost.localdomain systemd[1]: Starting mongodb...
Oct 07 16:06:03 localhost.localdomain mongod[6752]: about to fork child process, waiting until server is ready for connections.
Oct 07 16:06:03 localhost.localdomain mongod[6752]: forked process: 6756
Oct 07 16:06:04 localhost.localdomain mongod[6752]: child process started successfully, parent exiting
Oct 07 16:06:04 localhost.localdomain systemd[1]: Started mongodb.

中間遇到的坑

mongodb進程莫名退出
現象:啟動了一段時間之后自己關閉 mongodb 進程

查看 log

2019-10-07T15:53:28.632+0800 I NETWORK  [initandlisten] waiting for connections on port 27017
2019-10-07T15:54:58.494+0800 I CONTROL  [signalProcessingThread] got signal 15 (Terminated), will terminate after current cmd ends
2019-10-07T15:54:58.494+0800 I CONTROL  [signalProcessingThread] now exiting
2019-10-07T15:54:58.494+0800 I NETWORK  [signalProcessingThread] shutdown: going to close listening sockets...
2019-10-07T15:54:58.494+0800 I NETWORK  [signalProcessingThread] closing listening socket: 6
2019-10-07T15:54:58.494+0800 I NETWORK  [signalProcessingThread] closing listening socket: 7
2019-10-07T15:54:58.494+0800 I NETWORK  [signalProcessingThread] removing socket file: /tmp/mongodb-27017.sock
2019-10-07T15:54:58.494+0800 I NETWORK  [signalProcessingThread] shutdown: going to flush diaglog...
2019-10-07T15:54:58.494+0800 I NETWORK  [signalProcessingThread] shutdown: going to close sockets...
2019-10-07T15:54:58.494+0800 I STORAGE  [signalProcessingThread] shutdown: waiting for fs preallocator...
2019-10-07T15:54:58.494+0800 I STORAGE  [signalProcessingThread] shutdown: final commit...
2019-10-07T15:54:58.506+0800 I JOURNAL  [signalProcessingThread] journalCleanup...
2019-10-07T15:54:58.506+0800 I JOURNAL  [signalProcessingThread] removeJournalFiles
2019-10-07T15:54:58.507+0800 I JOURNAL  [signalProcessingThread] Terminating durability thread ...
2019-10-07T15:54:58.605+0800 I JOURNAL  [journal writer] Journal writer thread stopped
2019-10-07T15:54:58.605+0800 I JOURNAL  [durability] Durability thread stopped
2019-10-07T15:54:58.605+0800 I STORAGE  [signalProcessingThread] shutdown: closing all files...
2019-10-07T15:54:58.605+0800 I STORAGE  [signalProcessingThread] closeAllFiles() finished
2019-10-07T15:54:58.605+0800 I STORAGE  [signalProcessingThread] shutdown: removing fs lock...
2019-10-07T15:54:58.605+0800 I CONTROL  [signalProcessingThread] dbexit:  rc: 0

但是把 systemctl stop 掉重新 start 注意到

root@instance-tbbjrcnc:~# systemctl status mongodb.service
?.mongodb.service - mongodb
   Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: failed (Result: timeout) since Tue 2019-08-13 10:32:22 CST; 8s ago
  Process: 23145 ExecStart=/usr/bin/mongod --config /etc/mongod.conf --fork (code=exited, status=0/SUCCESS)
      CPU: 716ms
 
Aug 13 10:30:52 instance-tbbjrcnc systemd[1]: Starting mongodb...
Aug 13 10:30:52 instance-tbbjrcnc mongod[23145]: 2019-08-13T10:30:52.295+0800 I STORAGE  [main] Max cache overflow file size custom option: 0
Aug 13 10:30:52 instance-tbbjrcnc mongod[23145]: about to fork child process, waiting until server is ready for connections.
Aug 13 10:30:52 instance-tbbjrcnc mongod[23145]: forked process: 23147
Aug 13 10:30:52 instance-tbbjrcnc mongod[23145]: child process started successfully, parent exiting
Aug 13 10:30:52 instance-tbbjrcnc systemd[1]: mongodb.service: PID file /var/run/mongodb/mongod.pid not readable (yet?) after start: No such file or directory
Aug 13 10:32:22 instance-tbbjrcnc systemd[1]: mongodb.service: Start operation timed out. Terminating.
Aug 13 10:32:22 instance-tbbjrcnc systemd[1]: Failed to start mongodb.
Aug 13 10:32:22 instance-tbbjrcnc systemd[1]: mongodb.service: Unit entered failed state.
Aug 13 10:32:22 instance-tbbjrcnc systemd[1]: mongodb.service: Failed with result 'timeout'.

報錯

mongodb.service: PID file /var/run/mongodb/mongod.pid not readable (yet?) after start: No such file or directory

沒有 /var/run/mongodb/mongod.pid 這個文件
由於趕時間后面直接注釋掉 mongodb.service 文件中的 pid 文件配置

[Service]
...
# PIDFile=/var/run/mongodb/mongod.pid
...

設置 mongodb.service 文件權限

chmod 754 mongodb.service

重新啟動,搞定!


參考:
Linux平台安裝MongoDB
mongoDB服務啟動失敗(exception: connect failed)
Linux安裝mongodb總結


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM