安装 MongoDB
在 Ubuntu 上安装 MongoDB Community Edition - MongoDB 手册 v7.0
安装系统为 Ubuntu 22.04。
安装
安装依赖包:
sudo apt-get install gnupg curl
导入 MongoDB GPG 密钥:
curl -fsSL https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg --dearmor
- 国内访问
www.mongodb.org/static
有点慢,可能需要走代理
创建 MongoDB 列表文件:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
重新加载本地包列表:
sudo apt-get update
安装最新版本的 MongoDB:
sudo apt-get install -y mongodb-org
路径
目录
如果通过软件包管理器安装,则在安装过程中会创建数据目录 /var/lib/mongodb
和日志目录 /var/log/mongodb
。
默认情况下,MongoDB 使用 mongodb
用户账户运行。
如果更改运行 MongoDB 进程的用户,则必须修改数据和日志目录以赋予该用户访问这些目录的权限。
配置文件
MongoDB 官方软件包有一份配置文件 (/etc/mongod.conf
)。这些设置(如数据目录和日志目录规范)将在启动时生效。
换言之,如果在 MongoDB 实例运行时更改该配置文件,则必须才能使更改生效。
运行
以下运行步骤假定使用官方 mongodb-org 包且使用默认设置,而非 Ubuntu 提供的非官方 mongodb 包。
初始化系统
查看初始化系统:
ps --no-headers -o comm 1
默认输出:
systemd
启动
sudo systemctl start mongod
开机启动服务
sudo systemctl enable mongod
查看状态
sudo systemctl status mongod
停止
sudo systemctl stop mongod
重启
sudo systemctl restart mongod
命令行进入
mongosh
默认端口为 27017
。
允许远程访问
IP 绑定 — MongoDB 手册 v7.0
修改配置文件 nano /etc/mongod.conf
,将 bindIp
改为 0.0.0.0
,以允许所有 IP 远程访问:
# network interfaces
net:
port: 27017
# bindIp: 127.0.0.1
bindIp: 0.0.0.0
重启服务:
sudo systemctl restart mongod
设置内存占用上限
Is there any option to limit mongodb memory usage? - Stack Overflow
storage.wiredTiger.engineConfig.cacheSizeGB
修改配置文件 /etc/mongod.conf
,例如,将缓存上限设为 32GB:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 32
重启服务:
sudo systemctl restart mongod
安装 GUI 工具
13个Mongodb GUI可视化管理工具,总有一款适合你-阿里云开发者社区
MongoDB Compass
- 界面比较简陋,不过可以在设置里改成暗色模式
注意要下载完整版(区别于只读版和隔离版) :
Studio 3T
- 启动略慢
- 颜值比 Compass 高很多
- 需要注册账号,填写手机号,才能试用 30 天(免费版无法 SQL 查询)
连接到远程 MongoDB
mongodb://<hostname>:27017
部署副本集
将独立运行的 mongod 转换为副本集 - MongoDB 手册 v7.0
使用配置文件部署副本集
关闭实例服务
sudo systemctl stop mongod
配置副本集
nano /etc/mongod.conf
添加如下内容:
replication:
replSetName: "rs0"
# oplogSizeMB: <int>
# enableMajorityReadConcern: <boolean>
replSetName
: 副本集名称oplogSizeMB
: oplog 大小,默认为磁盘空间的 5%enableMajorityReadConcern
: 从 v5.0 开始不可更改,始终为true
,
配置文件选项: replication.replSetName
启动服务
sudo systemctl start mongod
初始化副本集
进入命令行:
mongosh
初始化副本集:
rs.initiate()
输出形如:
{
info2: 'no configuration specified. Using a default configuration for the set',
me: '<hostname>:27017',
ok: 1
}
查看副本集配置:
rs.conf()
输出形如:
{
_id: 'rs0',
version: 1,
term: 1,
members: [
{
_id: 0,
host: '<hostname>:27017',
arbiterOnly: false,
buildIndexes: true,
hidden: false,
priority: 1,
tags: {},
secondaryDelaySecs: Long('0'),
votes: 1
}
],
...
}
查看副本集状态:
rs.status()
使用命令行部署副本集
关闭实例
mongosh
use admin
db.adminCommand( { shutdown: 1, comment: "Convert to cluster" } )
启动实例
样例:
mongod --replSet rs0 --port 27017 --dbpath /path/to/mongodb/dbpath --authenticationDatabase "admin" --username "adminUser" --password
参数说明:
--replSet
: 副本集名称--port
: 进程端口--dbpath
: 数据库路径--authenticationDatabase
,--username
,--password
: 身份验证
初始化副本集
同上。