官方文档:https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/
系统环境:ubuntu16.04.5
mongodb:3.2.X
概述:
虽然Ubuntu有自己的mongodb包,但是官方的MongoDB Community Edition packages 一般比较新。
本版本Mongodb 只为 64位长期维护的Ubuntu 发布版本提供安装包,如14.04 LTS(trusty),16.04 LTS(xenial)等。 其它版本的也可能可以使用,但是不受支持。
Ubuntu 12.04 LTS(precise) 不支持 MongoDB 3.2。
包
mongodb-org 这个包会安自动装下面的包
mongodb-org-server 包含mongod 的守护进程 和 相关的配置与初始化脚本
mongodb-org-mongos 包含 mongos 守护进程,(mongos相当于分布式路由?)
mongodb-org-shell 包含 mongo 脚本
mongodb-org-tools 包含mongodb的工具:mongoimport bsondump,mongodump,mongoexport,mongofiles,mongooplog,mongoperf,mongorestore,mongostat,mongotop
这些包 是和 ubuntu 提供的 mongodb,mongodb-server,mongodb-clients 冲突的。
包里提供默认的配置文件是 /etc/mongod.conf,其中 bind_ip 设置为 127.0.0.1。做分片前可以根据自己情况调整。
初始化脚本
mongodb-org 包含各种初始化脚本,如 /etc/init.d/mongod. 可以用于管理守护进程,stop,sart,restart.
默认没有mongos的初始化脚本,可以令mongod脚本创建自己的mongos脚本。
安装MongoDB Community Edition
1. 为包管理器导入mongodb的 public key( Ubuntu包管理工具(如dpkg,apt)需要通过包发布者的带签名包的GPG keys 进行身份认证和一致性检验 )
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927
2. 为MongoDB 添加一个源列表
创建 /etc/apt/sources.list.d/mongodb-org-3.2.list 列表文件(适用于Ubuntu16.04)
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
这是官方的源列表,官方MongoDB的软件源仓库可以对大陆用户不太友好, 建议使用阿里云的MongoDB软件源仓库, 执行以下命令:
echo "deb http://mirrors.aliyun.com/mongodb/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
3. 重新加载包源
sudo apt-get update
可能会报错
Err:3 cdrom://Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Release amd64 (20180731) xenial/main amd64 Packages
Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs
E: Failed to fetch cdrom://Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Release amd64 (20180731)/dists/xenial/main/binary-amd64/Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs
E: Some index files failed to download. They have been ignored, or old ones used instead.
解决apt-get update 无法添加新的cd-rom的错误
这个原因是cdrom已经被包含在源之中。要修改这个问题,我们需要将它从软件源中移除。
vim /etc/apt/sources.list
其中有一行 deb cdrom:[Ubuntu-Server 16.04.15 LTS ....
将该行屏蔽就可以解决这个问题
4. 安装mongodb 包
如果是安装最新版本的MongoDB
sudo apt-get install -y mongodb-org
如果是想安装指定版本的mongodb,如3.2.21
sudo apt-get install -y mongodb-org=3.2.21 mongodb-org-server=3.2.21 mongodb-org-shell=3.2.21 mongodb-org-mongos=3.2.21 mongodb-org-tools=3.2.21
注意:如果只指定 mongodb-org=3.2.21 是会被忽略的
锁定MongoDB版本
虽然我们指定的版本,但是如果有新版本可用的话,apt-get 将会更新包。为了防止意外的更新,需要锁定包版本。
echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-org-shell hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections
运行MongoDB Community Edition
Mongodb默认将数据存储在 /var/lib/mongodb,日志存储在/var/log/mongodb,并且使用mongodb帐号。 可以根据情况修改/etc/mongod.conf。
如果你想使用其它帐号运行mongodb,需要给帐号这两个文件夹的/var/lib/mongodb , /var/log/mongodb 的读和执行权限。
1. 启动 MongoDB
sudo service mongod start
2. 检查 MongoDB是否已经成功启动
cat /var/log/mongodb/mongod.log
[initandlisten] waiting for connections on port 27017
3. 停止 MongoDB
sudo service mongod stop
4. 重启 MongoDB
sudo service mongod restart
5. 设置开机启动
sudo systemctl enable mongod
注意.网上很多方法是 在/etc/init.d建立一个脚本,并执行update-rc.d mongod defaults,这些都是Sysinit方式,使用systemd方式的话,只需要上面这一句即可
如何卸载MongoDB
1. 停止 服务
sudo service mongod stop
2. 删除 包
sudo apt-get purge mongodb-org*
3. 删除数据 和 日志(慎重)
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb