安装 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
修改配置文件 sudo 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
修改配置文件 sudo nano /etc/mongod.conf,例如,将缓存上限设为 320GB:
# engine:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 320重启服务:
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配置副本集
sudo 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()使用命令行部署副本集
关闭实例
mongoshuse 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: 身份验证
初始化副本集
同上。