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

mac M2安装单机版 MongoDB 7.x

1. 通过tgz包安装MongoDB

1.1 下载并解压缩安装包

  • 官网下载 mac OS 的 MongoDB 安装包,这里选择7.x版本进行安装(下载链接)

  • 下载好的tgz包,双击解压缩,并重命名为mongdb

  • 将安装包拷贝到安装目录,笔者的安装目录为/usr/local,copy时需要root权限

    sudo cp -rf mongdb /usr/local
    

1.2 设置环境变量

  • 对于mac OS,一般通过~/.zshrc设置环境变量。因此,编辑~/.zshrc,添加如下内容

    export MONGODB_HOME=/usr/local/mongodb
    export PATH=$PATH:$MONGODB_HOME/bin
    
  • source ~/.zshrc后,分别执行如下命令,以保证 MongoDB 成功安装

    • mongod:启动 MongoDB 服务对应的命令
      mongod --version
      
    • mongos:启动 MongoDB 代理,即 mongos 对应的命令
      mongos --version
      
    • mongosh:启动 MongoDB 的shell客户端对应的命令
      mongosh --version
      
  • PS: 奇怪的是,笔者下载的是7.0.14的安装包,mongod --version却显示的是6.0.18

2. 启动服务并执行简单的查询

  • 在 Home 目录下创建data目录,用于存储数据,笔者这里选择的data目录为

    mkdir ~/mongodb/data
    

2.1 最简单的服务启动方式

  • 执行mongod命令,指定data目录、以前台运行的方式启动一个 MongoDB 服务

    • 默认端口号:27017,默认接受 0.0.0.0(所有IP)的访问
    • 默认 authorization 为false,即无需用户和密码就能访问
    mongod --dbpath ./data
    
  • 通过 mongosh 开启一个shell,其默认访问 27017 端口

    mongosh
    
  • test 库的 test_data 集合下,插入几条数据

    use test; # 切换数据库
    # 直接插入数据到test_data集合, MongoDB将自动创建test_data集合
    db.test_data.insertMany([
      { name: "Bob", age: 25, sex: "male", city: "Los Angeles" },
      { name: "Carol", age: 28, sex: "female", city: "Chicago" },
      { name: "Dave", age: 35, sex: "male", city: "San Francisco" }
    ])
    
  • 数据插入成功,返回的信息如下:

  • 执行如下命令,查询name为Bob的信息

    db.test_data.find({'name':"Bob"});
    
  • 成功查询到对应的数据

2.2 后台运行MongoDB

  • 上述启动方式,日志直接输出到控制台对于本地开发是足够的
  • 要想后台启动MongoDB、避免服务被误关闭,可以通过指定相关参数实现
    • --dbpath,指定数据目录。--logpath,指定日志目录
    • --port,指定服务运行端口。--bind_ip_all,允许从所有IP地址访问
    • --fork,以守护进程方式运行(后台运行)
    mongod --dbpath /Users/xxx/mongodb/data --logpath  /Users/xxx/mongodb/log \
    --port 27030 --bind_ip_all --fork
    

  • 还可以通过符合 yaml 格式的配置文件,以后台进程的方式启动 MongoDB

  • 在目录下,创建 /Users/xxx/mongodb/etc/mongod.conf文件,内容如下

    storage:
      dbPath: /Users/xxx/mongodb/data
      journal:
        enabled: true
    
    # 网络相关配置
    net:
      port: 27030
      bindIp: 0.0.0.0  # 允许从所有IP地址访问
    
    # 日志相关配置
    systemLog:
      destination: file
      logAppend: true
      logRotate: rename
      path: /Users/xxx/mongodb/log/mongo.log
    
    # 进程管理相关配置
    processManagement:
      fork: true  # 以守护进程方式运行(后台运行)
    
    # 安全相关配置
    security:
      authorization: disabled  # 关闭用户认证
    
  • 然后,通过指定config文件,实现服务启动

    mongod --config ~/mongodb/etc/mongod.conf
    # --config可以简写为 -f
    mongod -f ~/mongodb/etc/mongod.conf
    

2.3 后台启动的一些注意事项

  • 配置文件指定路径时,一定要写绝对路径 !!!

  • 不然会根据mongod命令的执行路径自动补全,导致路径未初始化,主要报错信息如下:

    "msg":"Error during global initialization"
    "error":{"code":38,"codeName":"FileNotOpen","errmsg":"Can't initialize rotatable 
    	log file :: caused by :: Failed to open /Users/xxx/mongodb/etc/~/mongodb/log/mongod.log"}
    
  • 如果后台启动失败,一般会提示关闭后台启动,也就是说让报错信息直接打印到前台

    • 对于直接mongod --fork的启动方式,其实就是去除 --fork
    • 对于配置文件启动,将 fork: true 改成 fork: false
      在这里插入图片描述

2.4 关于MongoDB的配置文件

  • 从网上能查找的资料,好多配置文件采用旧版写法,有些配置项可能不再支持

  • 例如博客 MongoDB主从复制(master–>slave)环境搭建 中的配置文件,master=true

  • masterslave已经不再支持,会导致MongoDB无法启动,报错信息如下:

    "msg":"Master/slave replication is no longer supported"
    

3. 后记

3.1 MongoDB 诊断命令(Diagnostic Commands)

  • MongoDB Shell 的使用可以参考:MongoDB数据库的基本使用总结
  • MongoDB 提供了丰富的诊断命令:Diagnostic Commands,可以通过这些命令查看连接池、连接数等各种服务状态
  • 甚至,一些数据库函数也可以帮助我们了解MongoDB状态

示例:查看连接数

  • 执行如下命令,可以查看服务的连接情况

    db.serverStatus().connections
    
  • 返回的信息如下,关于db.serverStatus().connections各字段的含义,甚至serverStatus的其他信息,可以参考官方文档:serverStatus

    {
      current: 5, # 当前活动连接数
      available: 199, # 剩余可用连接数,current + available可以得出集群的最大连接数
      totalCreated: 417,  # 自 MongoDB 实例启动以来创建的总连接数
      active: 2, # 连接到服务器的活跃client数量
      threaded: 5,
      exhaustIsMaster: 0,
      exhaustHello: 1,
      awaitingTopologyChanges: 1,
      loadBalanced: Long('0')
    }
    

3.2 参考链接

  • Mac OS 安装 MongoDB 详细步骤

http://www.kler.cn/news/335556.html

相关文章:

  • Spring Cloud面试题收集
  • Python知识点:在Python编程中,如何使用Gensim进行主题建模
  • 10月5日刷题记录
  • 【重学 MySQL】四十五、数据库的创建、修改与删除
  • Unity Shader Graph基础包200+节点及术语解释
  • webstorm的缩进设置(过度缩进解释)
  • Pikachu-Sql Inject-insert/update/delete注入
  • 万界星空科技MES数据集成平台
  • 位运算——n的二进制中有几个1
  • MySQL--三大范式(超详解)
  • 【2024保研经验帖】东南大学计算机学院夏令营
  • 网页前端开发之Javascript入门篇(6/9):类与实例
  • 探索大型语言模型在文化常识方面的理解能力与局限性
  • k8s 之动态创建pv失败(踩坑)
  • 在UniApp中高效处理大量文件请求的策略
  • 市场中的新兴力量与未来发展
  • Android 安卓内存安全漏洞数量大幅下降的原因
  • 项目-坦克大战学习-游戏结束
  • 深入剖析 Golang 的错误处理机制:让你的代码更加健壮与优雅
  • pillow常用知识