之前安装使用的是 Mongodb 3.6.5 - Ubuntu - Mongodb 3.6.5 安装[旧版本],现在官网已经更新到 4.0.3
,这里记录一下该版本的安装过程(大致类似于 Mongodb 3.6.5 版本的安装).
MongoDB 提供了 64 位 Ubuntu LTS 版本的包,如:14.04 LTS (trusty), 16.04 LTS (xenial), Ubuntu18.04.
准备:
- Ubuntu 16.04
- MongoDB download-center
1. MongoDB 社区版的安装和卸载
这里采用官方推荐的 .deb
包的方式安装.
1.1. 官方源
[1] - 导入 MongoDB public GPG Key:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
[2] - 创建 MongoDB 列表文件 list file - /etc/apt/sources.list.d/mongodb-org-4.0.list
:
# Ubuntu16.04
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/testing multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
# Ubuntu14.04
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/testing multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
# Ubuntu18.04
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
默认源可能速度慢,这里建议更换为国内阿里源:
# Ubuntu16.04
echo "deb [ arch=amd64,arm64 ] https://mirrors.aliyun.com/mongodb/apt/ubuntu xenial/mongodb-org/testing multiverse" | tee /etc/apt/sources.list.d/mongodb-org-4.0.list
貌似已经有 4.1 版本了, 2018.11.07
1.2. Tencent 源
[1] - 执行以下命令,导入 MongoDB GPG 公钥:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 68818C72E52529D4
[2] - 配置 mirror 路径:
#Ubuntu 14.04
echo "deb [ arch=amd64 ] http://mirrors.cloud.tencent.com/mongodb/apt/ubuntu trusty/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
#Ubuntu 16.04
echo "deb [ arch=amd64 ] http://mirrors.cloud.tencent.com/mongodb/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
#Ubuntu 18.04
echo "deb [ arch=amd64 ] http://mirrors.cloud.tencent.com/mongodb/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
1.3. 安装与卸载
[3] - 安装 MongoDB:
sudo apt-get update
sudo apt-get install -y mongodb-org
也安装指定版本 MongoDB,如:
sudo apt-get install -y mongodb-org=4.0.3 mongodb-org-server=4.3 mongodb-org-shell=4.0.3 mongodb-org-mongos=4.0.3 mongodb-org-tools=4.0.3
其中,替换 mongodb-org=4.0.3
到指定版本即可.
[4] - 卸载 MongoDB
# 停止 MongoDB service
sudo service mongod stop
# 卸载 MongoDB
sudo apt-get purge mongodb-org*
# 删除 MongoDB 数据库和 log 文件
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
2. MongoDB 简单使用
2.1 mongod service
# 启动服务
sudo service mongod start
# 停止服务
sudo service mongod stop
# 重启服务
sudo service mongod restart
# 查看 MongoDB service 状态:
sudo service mongod status
另外,需要设置开机启动,否则,默认是当服务器或者主机重启后,mongodb service 会停止.
sudo systemctl enable mongod
验证 MongoDB service 是否成功启动:
查看 log 文件的内容 - /var/log/mongodb/mongod.log
:
如:
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] MongoDB starting : pid=27670 port=27017 dbpath=/var/lib/mongodb 64-bit host=DBRPC
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] db version v4.0.3
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] git version: 7ea530946fa7880364d88c8d8b6026bbc9ffa48c
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] allocator: tcmalloc
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] modules: none
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] build environment:
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] distmod: ubuntu1604
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] distarch: x86_64
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] target_arch: x86_64
2018-11-07T11:50:28.918+0800 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
如果出现如下错误:
mongod: unrecognized service
需安装 mongodb-server
:
sudo apt install mongodb-server
2.2 mongod 参数
mongod --help
部分参数输出说明如:
参数 | 说明 |
---|---|
--quiet | 不显示输出. |
--port arg | 指定服务端口号,默认端口27017. |
--bind_ip arg | 指定服务IP地址(多个ip以逗号隔开),默认为localhost(127.0.0.1),则仅限本机访问. |
--bind_ip_all | 所有 IP 地址都可访问. |
--ipv6 | 启用 IPv6 支持(默认不启用). |
--logpath arg | 指定输出的日志文件(指定的是文件不是目录). |
--logappend | 使用追加的方式(非重写方式)写入日志. |
--pidfilepath arg | PID文件路径,不设定则不指定PID文件. |
--fork | 以守护进程的方式运行,创建服务器进程(fork server process). |
--auth | 启用验证. |
--noauth | 不启用验证. |
--cpu | 定期显示CPU利用率和iowait利用率. |
--dbpath arg | 指定数据库路径. |
--directoryperdb | 设置每个数据库分别独立保存在单独的目录. |
--journal | 启用日志选项(journaling),MongoDB的数据操作写入到journal文件夹的文件里. |
--nojournal | 不启用 journaling. |
--journalOptions arg | journaling 诊断选项. |
--maxConns arg | 最大同时连接数 默认1000000. |
--quota | 限制每个数据库的文件数,设置默认为8. |
--quotaFiles arg | 每个 db 允许的文件数,依赖于 --quota. |
--repair | 修复所有数据库run repair on all dbs. |
--repairpath arg | 修复库生成的文件的目录,默认为目录名称dbpath. |
--smallfiles | 使用较小的默认文件 |
--sysinfo | 打印一些诊断系统信息 |
--shutdown | kill正在运行的服务. |
运行如:
mongod --port 27030 --bind_ip_all --dbpath=/data/dbs --quiet --fork --logpath=/data/logs/mongodb.log
使用 MongoDB:
mongo
> show dbs
> use db_test
> exit
3. MongoDB 问题汇总
3.1. 数据仓库路径修改
默认情况下,MongoDB 数据文件保存在 /var/lib/mongodb
,log 文件保存在 var/log/mongodb
.
自定义数据文件和 log 文件保存路径,可以编辑配置文件 /etc/mongod.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
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# logging 数据保存路径.
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
#security:
#operationProfiling:
#replication:
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
3.2. 查看 mongod 端口
#检查mongodb 进程.
sudo netstat -tunlp | grep mongod
如:
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 17342/mongod