之前安装使用的是 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.

准备:

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 源

https://mirrors.cloud.tencent.com/

[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 argPID文件路径,不设定则不指定PID文件.
--fork以守护进程的方式运行,创建服务器进程(fork server process).
--auth启用验证.
--noauth不启用验证.
--cpu定期显示CPU利用率和iowait利用率.
--dbpath arg指定数据库路径.
--directoryperdb设置每个数据库分别独立保存在单独的目录.
--journal启用日志选项(journaling),MongoDB的数据操作写入到journal文件夹的文件里.
--nojournal不启用 journaling.
--journalOptions argjournaling 诊断选项.
--maxConns arg最大同时连接数 默认1000000.
--quota限制每个数据库的文件数,设置默认为8.
--quotaFiles arg每个 db 允许的文件数,依赖于 --quota.
--repair修复所有数据库run repair on all dbs.
--repairpath arg修复库生成的文件的目录,默认为目录名称dbpath.
--smallfiles使用较小的默认文件
--sysinfo打印一些诊断系统信息
--shutdownkill正在运行的服务.

运行如:

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. 数据仓库路径修改

Ubuntu - Mongodb 数据仓库路径修改 - AIUAI

默认情况下,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
Last modification:July 26th, 2019 at 02:56 pm