当前位置: 首页 > news >正文

mongo,mongod,mongos指令

在 MongoDB 中,mongomongodmongos是三个核心指令,分别对应不同的功能:

  • mongod:是 MongoDB 的数据库服务器进程,负责管理数据存储、处理客户端请求(如查询、插入等),是数据库的核心服务。启动mongod后,MongoDB 才真正开始运行并提供数据服务。

  • mongo:是 MongoDB 的交互式命令行客户端工具,用于连接到mongodmongos进程,执行数据库操作(如创建集合、查询数据、管理用户等),类似 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: filepath: "/var/log/mongodb/mongod.log"logAppend: true
storage:dbPath: "/var/lib/mongodb"
net:port: 27017bindIp: 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 命令:

  1. 数据库操作

    • 切换 / 创建数据库:use 数据库名(若不存在,插入数据时自动创建)。
    • 查看当前数据库:db
    • 查看所有数据库:show dbs
    • 删除当前数据库:db.dropDatabase()
  2. 集合(表)操作

    • 创建集合:db.createCollection("集合名")(可选,插入数据时会自动创建)。
    • 查看当前库的集合:show collections
    • 删除集合:db.集合名.drop()
  3. 数据操作

    • 插入:db.集合名.insertOne({key: value})(单条)、insertMany([...])(多条)。
    • 查询:db.集合名.find(条件)(返回所有符合条件的文档)、findOne(条件)(返回第一条)。
    • 更新:db.集合名.updateOne(条件, { $set: {字段: 新值} })(单条)、updateMany()(多条)。
    • 删除:db.集合名.deleteOne(条件)(单条)、deleteMany(条件)(多条)。
  4. 其他常用命令

    • 查看帮助: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: filepath: "/var/log/mongodb/mongos.log"logAppend: true
net:port: 27017bindIp: 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 分片集群的 “交通指挥官”,负责请求路由和结果聚合,是实现大规模数据分片存储的核心组件。

http://www.lryc.cn/news/607984.html

相关文章:

  • 【Linux】vim—基操
  • hcip---ospf知识点总结及实验配置
  • 剧本杀小程序系统开发:构建数字化剧本杀生态圈
  • rosdep的作用以及rosdep install时的常用参数
  • [论文阅读] 人工智能 + 软件工程 | GitHub Marketplace中CI Actions的功能冗余与演化规律研究
  • DDD Repository模式权威指南:从理论到Java实践
  • 网络基础实操篇-05-路由基础-最佳实践
  • 从C++0基础到C++入门(第十四节:流程程序结构第三部分【三目运算符与多种书写方式)】)
  • 基于单片机一氧化碳CO检测/煤气防中毒检测报警系统
  • linux中挂载磁盘和卸载
  • Redis面试精讲 Day 7:GEO地理位置应用详解
  • WinForm之ListBox 控件
  • 通过filezilla在局域网下实现高速传输数据
  • 音频3A处理简介之AGC(自动增益控制)
  • C/C++常用字符串函数
  • C++音视频开发:基础面试题
  • Vue 响应式基础全解析2
  • Python 类三大方法体系深度解析:静态方法、类方法与实例方法
  • 归并排序(简单讲解)
  • 【13】VisionMaster入门到精通——测量--线圆测量
  • Coze Studio 概览(六)--知识库管理
  • Flutter开发 初识目录结构
  • #Linux内存管理# 用一个案例详细介绍ARMv7-A架构 缺页中断处理的原理
  • C#多数据库批量执行脚本工具
  • 服装MES系统高效解决方案
  • Apache ShardingSphere 初识使用
  • 语音识别数据集
  • 力扣 二叉树遍历 中序/前序/后序(递归和迭代版)
  • Dify 从入门到精通(第 10/100 篇):使用 Dify 工具集扩展功能
  • 测试环境 PostgreSQL 库连接不上—案例分享