在 MongoDB 中,mongo、mongod、mongos是三个核心指令,分别对应不同的功能:
-
mongod:是 MongoDB 的数据库服务器进程,负责管理数据存储、处理客户端请求(如查询、插入等),是数据库的核心服务。启动
mongod后,MongoDB 才真正开始运行并提供数据服务。 -
mongo:是 MongoDB 的交互式命令行客户端工具,用于连接到
mongod或mongos进程,执行数据库操作(如创建集合、查询数据、管理用户等),类似 MySQL 的mysql客户端。 -
mongos:是 MongoDB 分片集群中的路由进程,用于协调分片集群的请求,将客户端操作分发到对应的分片服务器,同时聚合结果返回给客户端。只有在使用分片集群时才需要启动
mongos。
简单来说,mongod是数据库服务本身,mongo是操作数据库的客户端,mongos是分片集群的路由工具。
一、mongod
mongod 是 MongoDB 数据库的核心服务进程,负责管理数据存储、处理客户端请求(查询、插入、更新等),是运行 MongoDB 数据库的核心程序。以下是其详细用法解析:
1、基本语法
启动 MongoDB 服务的基本格式:
mongod [选项]
默认情况下,mongod 会使用默认配置(如端口 27017、数据目录 /data/db 等),但可通过选项自定义配置。
2、核心配置选项
①. 数据存储相关
-
--dbpath <路径>
指定数据文件的存储目录(必须手动创建,默认是/data/db或C:\data\db)。
示例:mongod --dbpath /var/lib/mongodb -
--logpath <路径>
指定日志文件路径(而非输出到控制台),需确保目录存在。
示例:mongod --logpath /var/log/mongodb/mongod.log -
--logappend
日志以追加方式写入(默认覆盖旧日志),通常与--logpath配合使用。
②. 网络与连接相关
-
--port <端口号>
指定服务监听的端口(默认27017),常用于多实例部署。
示例:mongod --port 27018 -
--bind_ip <IP地址>
指定允许连接的 IP 地址(默认只允许localhost连接)。
示例:mongod --bind_ip 0.0.0.0(允许所有 IP 连接,生产环境需谨慎) -
--auth
启用身份验证(连接时需提供用户名和密码),需先创建用户才能登录。
③. 服务运行相关
-
--fork
以守护进程(后台)模式运行(仅 Linux/macOS 支持)。
示例:mongod --fork --logpath /var/log/mongodb/mongod.log(需配合日志路径) -
--config <配置文件路径>
通过配置文件加载参数(推荐生产环境使用,避免命令行参数过长)。
示例:mongod --config /etc/mongod.conf -
--version
查看mongod版本信息。 -
--help
查看所有可用选项的详细说明。
3、配置文件示例
生产环境中,通常通过配置文件管理 mongod 参数(以 mongod.conf 为例):
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
net:
port: 27017
bindIp: 127.0.0.1
processManagement:
fork: true
security:
authorization: enabled # 等效于 --auth
启动时加载配置:mongod --config /etc/mongod.conf
4、启动与停止
- 启动服务:直接执行
mongod或带参数的命令。 - 停止服务:
- 交互式启动时,按
Ctrl + C终止。 - 后台模式(
--fork)时,使用mongosh连接后执行db.shutdownServer(),或通过进程 ID 终止:kill <pid>(不推荐kill -9,可能损坏数据)。
- 交互式启动时,按
5、注意事项
(1)首次启动前需手动创建数据目录(如 mkdir -p /data/db),否则会启动失败。
(2)生产环境必须启用身份验证(--auth)并限制 bindIp,避免未授权访问。
(3)日志和数据目录需确保 mongod 进程有读写权限。
(4)不同版本的 mongod 可能有选项差异,建议结合对应版本的官方文档。
总之,mongod 是 MongoDB 的 “发动机”,所有数据库操作都依赖它的运行,配置时需根据实际需求合理设置参数。
二、mongo
mongo 是 MongoDB 的交互式命令行客户端工具,用于连接数据库服务(mongod 或 mongos)并执行各种操作。以下是其核心用法和常见功能详解:
1、基本语法
启动 mongo 客户端并连接数据库的基本格式:
mongo [连接选项] [数据库名称]
- 若不指定选项,默认连接本地
mongod(地址localhost:27017),并进入test数据库。
2、常用连接选项
-
指定地址和端口:
连接远程或非默认端口的mongod/mongos:mongo --host 192.168.1.100 --port 27018 # 连接指定主机和端口 mongo mongodb://192.168.1.100:27018 # 用 URI 格式连接(等效) -
认证登录:
连接需要权限验证的数据库时,指定用户名和密码:mongo --username 用户名 --password 密码 --authenticationDatabase 认证数据库名称(注:
认证数据库通常是用户创建时所在的库,如admin) -
指定数据库:
连接指定的数据库:mongo admin --port 4000 mongo:启动 MongoDB 的命令行客户端工具。 admin:指定连接后默认进入的数据库名称(这里是 admin 数据库,常用于存储管理员用户信息)。 --port 4000:指定连接的 MongoDB 服务端口为 4000(默认端口是 27017,这里用非默认端口连接)。 整体作用:连接本地(默认主机 localhost)端口为 4000 的 MongoDB 服务,并自动切换到 admin 数据库。 -
其他常用选项:
--quiet:减少冗余输出,只显示关键信息。--eval "命令":直接执行指定命令(非交互式),例如:bash
mongo --eval "db.users.find().limit(1)" # 执行查询并退出
3、进入客户端后的核心操作
连接成功后,进入交互式环境,可执行 MongoDB shell 命令:
-
数据库操作:
- 切换 / 创建数据库:
use 数据库名(若不存在,插入数据时自动创建)。 - 查看当前数据库:
db。 - 查看所有数据库:
show dbs。 - 删除当前数据库:
db.dropDatabase()。
- 切换 / 创建数据库:
-
集合(表)操作:
- 创建集合:
db.createCollection("集合名")(可选,插入数据时会自动创建)。 - 查看当前库的集合:
show collections。 - 删除集合:
db.集合名.drop()。
- 创建集合:
-
数据操作:
- 插入:
db.集合名.insertOne({key: value})(单条)、insertMany([...])(多条)。 - 查询:
db.集合名.find(条件)(返回所有符合条件的文档)、findOne(条件)(返回第一条)。 - 更新:
db.集合名.updateOne(条件, { $set: {字段: 新值} })(单条)、updateMany()(多条)。 - 删除:
db.集合名.deleteOne(条件)(单条)、deleteMany(条件)(多条)。
- 插入:
-
其他常用命令:
- 查看帮助:
help(全局帮助)、db.集合名.help()(集合相关命令帮助)。 - 退出客户端:
exit或Ctrl + C。
- 查看帮助:
4、特点与注意事项
- 交互式:支持命令补全(按 Tab 键)、历史命令(上下箭头),适合调试和手动操作。
- 脚本执行:可执行
.js脚本文件,例如mongo script.js(脚本中可包含批量操作逻辑)。 - 版本兼容:
mongo客户端版本需与mongod服务版本兼容,否则可能出现命令不支持的问题。
简单来说,mongo 是操作 MongoDB 的 “控制台”,通过它可以直观地管理数据库、集合和数据。
三、mongos
mongos 是 MongoDB 分片集群(Sharded Cluster)中的路由进程,主要负责协调客户端请求在分片集群中的分发与结果聚合,是分片集群的核心组件之一。以下是其详细解析:
1、基本作用
在分片集群中,数据被分散存储在多个 分片(shard) 上,而 mongos 相当于 “路由中枢”:
- 接收客户端(如
mongo)的请求 - 根据分片键(sharding key)规则,将请求路由到对应的分片
- 收集各分片的返回结果,聚合后返回给客户端
- 维护集群元数据(存储在配置服务器
config server中)的缓存
2、基本语法
启动 mongos 进程的基本格式:
mongos [选项]
mongos 本身不存储数据,启动时必须指定配置服务器的地址(分片集群的元数据存储处)。
3、核心配置选项
①. 配置服务器相关(必需)
--configdb <配置服务器列表>
指定分片集群中配置服务器的地址(必选参数)。
配置服务器通常以副本集形式部署,格式为:副本集名称/IP1:端口1,IP2:端口2,...
示例:mongos --configdb cfgReplSet/192.168.1.10:27019,192.168.1.11:27019
②. 网络与连接相关
-
--port <端口号>
指定mongos监听的端口(默认27017,建议与分片节点端口区分)。
示例:mongos --port 27018 --configdb ... -
--bind_ip <IP地址>
指定允许连接的 IP 地址(默认仅localhost)。
示例:mongos --bind_ip 0.0.0.0 --configdb ...(允许所有 IP 连接) -
--auth
启用身份验证(与分片集群的权限系统联动,需在配置服务器中预先创建管理员用户)。
③. 其他常用选项
-
--logpath <路径>
指定日志文件路径(避免日志输出到控制台)。
示例:mongos --logpath /var/log/mongodb/mongos.log --configdb ... -
--logappend
日志以追加方式写入(默认覆盖旧日志)。 -
--fork
以守护进程(后台)模式运行(仅 Linux/macOS 支持)。 -
--config <配置文件路径>
通过配置文件加载参数(推荐生产环境使用)。
4、配置文件示例
生产环境中,mongos 通常通过配置文件启动(如 mongos.conf):
systemLog:
destination: file
path: "/var/log/mongodb/mongos.log"
logAppend: true
net:
port: 27017
bindIp: 192.168.1.5 # 仅允许集群内部IP连接
sharding:
configDB: cfgReplSet/192.168.1.10:27019,192.168.1.11:27019 # 配置服务器副本集
processManagement:
fork: true
security:
authorization: enabled # 启用身份验证
启动命令:mongos --config /etc/mongos.conf
5、使用场景与注意事项
(1)仅用于分片集群:
mongos 是分片集群的专属组件,单节点或副本集环境不需要启动 mongos。
(2)多实例部署:
为提高可用性,通常部署多个 mongos 进程(配合负载均衡),避免单点故障。
(3)与配置服务器的依赖:
mongos 启动时必须能连接配置服务器,否则无法正常工作;配置服务器的拓扑变更后,需重启 mongos 以更新元数据缓存。
(4)客户端连接方式:
客户端(如 mongo)需连接 mongos 而非直接连接分片节点,所有操作通过 mongos 路由。
6、启动与停止
- 启动:执行
mongos命令并指定配置服务器等参数(或通过配置文件)。 - 停止:
- 交互式启动时,按
Ctrl + C终止。 - 后台模式时,通过
mongo连接mongos后执行db.shutdownServer(),或使用kill <pid>(不推荐强制终止)。
- 交互式启动时,按
总结:mongos 是 MongoDB 分片集群的 “交通指挥官”,负责请求路由和结果聚合,是实现大规模数据分片存储的核心组件。
3081

被折叠的 条评论
为什么被折叠?



