上篇文章,我们讲到了,使用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/mongod.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修改与深圳