上篇文章,我們講到了,使用EOS保存數據使用MongoDB插件,那麼我們今天看看MongoDB是如何安裝的。我參考了MongoDB官方文檔,介紹兩種方式安裝,供大家參考。
方式一:從apt-get安裝
- 添加mongodb簽名到APT
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
- 創建/etc/apt/sources.list.d/mongodb-org-4.0.list文件並寫入命令
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
- 更新軟件源列表
sudo apt-get update
- 安裝mongodb(默認是安裝穩定版)
sudo apt-get install -y mongodb-org
- 或者安裝指定版本:
sudo apt-get install -y mongodb-org=4.0.1 mongodb-org-server=4.0.1 mongodb-org-shell=4.0.1 mongodb-org-mongos=4.0.1 mongodb-org-tools=4.0.1
方式二:從 .tar.gz 二進制包安裝
6. 下載最新安裝包
官網下載地址:https://www.mongodb.com/download-center?jmp=nav#community
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz
- 解壓
tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.2.9.tgz
-
重命名並移動到安裝目錄(可自定義)
sudo mv mongodb-linux-x86_64-ubuntu1404-3.2.9/ /usr/local/mongodb # 將解壓包拷貝到指定目錄進行安裝
-
創建 mongo 的數據目錄
MongoDB 默認的數據目錄是 /data/db/ ,就直接使用默認的。sudo mkdir -p /data/db #創建數據存儲目錄 sudo chmod 755 /data/* #賦予目錄權限
-
啓動
mongod #啓動服務端 mongo #啓動客戶端
配置MongoDB
控制的配置文件在:/etc/mongodb.conf
控制腳本在:/etc/init.d/mongodb
MongoDB實例會把數據存放在:/var/lib/mongodb
日誌存放在:/var/log/mongodb
我們需要限制Mongodb使用內存大小,如下配置:
打開/etc/mongodb.conf
增加如下:
...
storage:
dbPath: /data/mongodb
journal:
enabled: true
storage :
wiredTiger :
engineConfig :
cacheSizeGB : 4
...
默認由mongodb用戶運行。
如果顯示目錄不存在的話,需要運行下列命令指定文件夾:
```
mongod --dbpath /var/lib/mongodb
```
如果想要切換用戶運行MongoDB的話,需要設置 /var/lib/mongodb 、 /var/log/mongodb兩個目錄的權限
啓動、停止、重啓
```
sudo service mongodb start
sudo service mongodb stop
sudo service mongodb restart
```
通過mongodb shell測試安裝結果
```
mongodb
```
卸載MongoDB
停止MongoDB
```
sudo service mongod stop
```
移除包文件
```
sudo apt-get purge mongodb-org*
```
刪除存放數據的目錄
```
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
```
曾經我們要定義一個系統啓動時自啓動服務的方式是在/etc/init.d 目錄下寫一個腳本來執行,現在在ubuntu的服務模式下,我們可以丟棄那種方式,服務模式的命令是service,而現在的ubuntu系統推崇使用的systemctl命令,他倆的使用方法的區別就在於參數的順序。
- 定義一個配置文件mongod.conf
- 定義一個服務文件,放置在/etc/systemd/system/
參考文檔
MongoDB官方文檔:https://docs.mongodb.com/getting-started/shell/tutorial/install-mongodb-on-ubuntu/
Ubuntu下MongoDB 安裝教程及簡單操作:http://www.linuxidc.com/Linux/2016-07/133254.htm
如果我們在啓動mongoDb過程中發現如下問題:
Failed to start mongod.service: Unit not found
解決辦法如下:
服務模式啓動mongodb
我們也可以使用ubuntu系統的服務模式。
1、創建配置文件:
sudo vim /etc/systemd/system/mongodb.service
2、在裏面追加文本:
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
[Service]
User=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
[Install]
WantedBy=multi-user.target
3、保存,退出
4、啓動服務
sudo systemctl start mongodb
sudo systemctl status mongodb
顯示如下:
eos@eos-VirtualBox:~$ sudo systemctl start mongodb
eos@eos-VirtualBox:~$ sudo systemctl status mongodb
● mongodb.service - High-performance, schema-free document-oriented database
Loaded: loaded (/etc/systemd/system/mongodb.service; disabled; vendor preset: enabled)
Active: active (running) since 二 2019-06-11 11:03:32 CST; 13s ago
Main PID: 1610 (mongod)
CGroup: /system.slice/mongodb.service
└─1610 /usr/bin/mongod --quiet --config /etc/mongod.conf
6月 11 11:03:32 eos-VirtualBox systemd[1]: Started High-performance, schema-free document-oriented database.
mongoDB遇到的一些問題
service mongodb start 失敗
status顯示failed
eos@eos-VirtualBox~ # service mongod start
eos@eos-VirtualBox~ # service mongod status
● mongod.service - High-performance, schema-free document-oriented database
Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Tue 2017-08-15 12:03:51 CEST; 2s ago
Docs: https://docs.mongodb.org/manual
Process: 26942 ExecStart=/usr/bin/mongod --config /etc/mongod.conf (code=exited, status=100)
Main PID: 26942 (code=exited, status=100)
Aug 15 12:03:50 machine systemd[1]: Started High-performance, schema-free document-oriented database.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Main process exited, code=exited, status=100/n/a
Aug 15 12:03:51 machine systemd[1]: mongod.service: Unit entered failed state.
Aug 15 12:03:51 machine systemd[1]: mongod.service: Failed with result 'exit-code'.
修復方法:
cd 到/var/lib/mongodb 文件夾下(我也不知道爲什麼非要cd到這個文件夾下,但是事實證明需要到這個目錄下才行)
chown -R mongodb:mongodb /var/lib/mongodb
然後重啓mongodb服務。
修改mongodb數據文件
修改配置文件
sudo vim /etc/mongo.conf
修改如下配置
# mongod.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
#dbPath: /var/lib/mongodb
dbPath: /media/eos/hdd/mongodb //修改爲指定位置
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
#path: /var/log/mongodb/mongod.log
path: /media/eos/hdd/mongodblog/mongod.log //修改爲指定位置
首先用mongodb啓動mongo 指定數據庫文件後,帶上–repair參數
mongodb --dbpath /media/eos/hdd/mongodb --repair
顯示如下:
eos@eos-B250M-D2V:/media/eos/hdd$ sudo mongod -dbpath /media/eos/hdd/mongodb --repair
2019-08-16T14:58:51.211+0800 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] MongoDB starting : pid=21206 port=27017 dbpath=/media/eos/hdd/mongodb 64-bit host=eos-B250M-D2V
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] db version v4.0.1
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] git version: 54f1582fc6eb01de4d4c42f26fc133e623f065fb
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] allocator: tcmalloc
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] modules: none
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] build environment:
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] distmod: ubuntu1604
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] distarch: x86_64
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] target_arch: x86_64
2019-08-16T14:58:51.215+0800 I CONTROL [initandlisten] options: { repair: true, storage: { dbPath: "/media/eos/hdd/mongodb" } }
2019-08-16T14:58:51.216+0800 I STORAGE [initandlisten] Detected data files in /media/eos/hdd/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2019-08-16T14:58:51.216+0800 I STORAGE [initandlisten]
2019-08-16T14:58:51.216+0800 I STORAGE [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
恭喜你,安裝成功。可以,配置節點連接EOS了。
2018年11月10整理於深圳
2019年06月11修改與深圳