• Centos7部署单机版MongoDB


    Centos7部署单机版MongoDB

    MongoDB介绍

    MongoDB 是一个开源的 NoSQL 数据库,主要用于高性能、高可用性和易扩展性的应用场景。它是由 C++ 编写的,采用文档导向的数据模型,使用 BSON(Binary JSON)格式来存储数据。MongoDB 与传统的关系数据库(如 MySQL、Oracle 等)有几个主要区别:

    数据模型

    • 文档导向:MongoDB 使用一个类似 JSON 的数据格式(BSON)来存储数据,而不是表格。这使得它更为灵活,因为文档可以包含不同的字段和结构。

    索引

    • 全面的索引支持:MongoDB 支持多种类型的索引,包括地理空间索引,使得复杂查询更加高效。

    分布式

    • 水平可扩展性:通过数据分片(Sharding),MongoDB 可以非常容易地水平扩展,以支持非常大的数据集和高吞吐量的应用。

    高可用性

    • 复制和故障恢复:MongoDB 支持自动复制和故障转移,提高了数据的可用性。

    查询语言

    • 丰富的查询语言:除了基本的 CRUD 操作,MongoDB 支持丰富的查询操作,包括聚合和文本搜索等。

    驱动和社区

    • 多语言支持:有许多语言的驱动程序和库,包括 Java, Python, C#, Node.js 等,这让不同背景的开发者都能容易地使用 MongoDB。

    • 活跃的社区和商业支持:因为是一个开源项目,MongoDB 有一个非常活跃的社区,同时也有商业版本和支持。

    用途

    MongoDB 广泛应用于各种类型的应用,包括物联网、实时分析、移动应用、内容管理和交付、以及许多其他用例。

    缺点

    • 事务支持:虽然近年来 MongoDB 已经增加了对多文档 ACID 事务的支持,但这在某些复杂场景下可能不如关系数据库完善。

    • 数据一致性:默认情况下,MongoDB 使用最终一致性模型,这可能不适用于需要强一致性的应用。

    • 存储空间:由于其灵活的文档模型和索引,MongoDB 可能需要更多的存储空间。

    总体而言,MongoDB 是一个非常强大和灵活的数据库选择,适用于需要快速开发和扩展的现代应用。这里使用单机版本的进行演示。

    下载并解压安装包

    下载地址:

    社区版:https://www.mongodb.com/try/download/community

    企业版:https://www.mongodb.com/try/download/enterprise

    下载企业版tgz免安装包

    # 创建文件夹
    mkdir /home/soft/mongodb
    #解压文件
    tar -zxvf mongodb-linux-x86_64-enterprise-rhel70-4.4.5.tgz 
    
    • 1
    • 2
    • 3
    • 4

    image-20230916111735401

    创建相关文件夹和文件

    # 创建日志文件夹
    mkdir -p /home/soft/mongodb/data/log/
    # 创建日志文件
    touch /home/soft/mongodb/data/log/mongod.log
    # 创建数据存储文件夹
    mkdir -p /home/soft/mongodb/data/db
    # 内存文件夹,重开机后必须重建此文件夹才能成功启动mongodb
    mkdir -p /var/run/mongodb/
    # 
    touch /var/run/mongodb/mongod.pid
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    编辑mongod.conf文件

    vim /home/soft/mongodb/data/etc/mongod.conf
    
    • 1
    systemLog:
      destination: file
      logAppend: true
      path: /home/soft/mongodb/data/log/mongod.log
      
    storage:
      dbPath: /home/soft/mongodb/data/db
      journal:
        enabled: true
    
    processManagement:
      fork: true
      pidFilePath: /var/run/mongodb/mongod.pid
      timeZoneInfo: /usr/share/zoneinfo
     
    net:
      port: 27017
      bindIp: 0.0.0.0 
      
    security:
      authorization: enabled 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    如果不配置security: authorization: enabled,mongodb是不安全的谁都可以访问

    启动mongodb

    # 进入mongodb文件夹
    cd  /home/soft/mongodb/bin
    # 手动启动mongodb
    ./mongod -f /home/soft/mongodb/data/etc/mongod.conf
    
    • 1
    • 2
    • 3
    • 4

    在启动 mongod的时候遇到error while loading shared libraries: libnetsnmpagent.so.20: cannot open shared object file: No such file or directory

    该error 是因为未装net-snmp

    直接连接外网的Linux服务器可直接使用:

    yum install net-snmp
    
    • 1

    登录命令

    ./mongo
    
    • 1

    image-20230916112456263

    创建管理员用户

    # 登录mongodb
    ./mongo --port 27017
    
    # 切换到admin库
    use admin
    
    # 创建超级用户,用root权限可以管理整个集群
    db.createUser({"user":"admin",pwd:"admin",roles:["root"]})
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    终止MongoDB服务

    • 方法一:登录后在MongoDB shell下执行终止指令
    # 切换至admin数据库
    use admin
    # 关闭服务
    db.shutdownServer()
    
    • 1
    • 2
    • 3
    • 4
    • 方法二:在操作系统下终止服务
    ps awx|grep mongod
    
    kill pid
    
    • 1
    • 2
    • 3

    配置自启动服务

    关闭SELinux

    # 检查SELinux是否开启
    /usr/sbin/sestatus -v
    
    # 编辑文件
    vim /etc/selinux/config
    
    # 设置配置
    SELINUX=disabled
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    重启机器

    reboot
    
    • 1

    编辑自启动服务文件

    vim /usr/lib/systemd/system/mongod.service
    
    • 1
    [Unit]  
    Description=mongodb  
    After=network.target remote-fs.target nss-lookup.target  
      
    [Service]  
    Type=forking  
    RuntimeDirectory=mongodb
    RuntimeDirectoryMode=0751
    PIDFile=/var/run/mongodb/mongod.pid
    ExecStart=/home/soft/mongodb/bin/mongod --config /home/soft/mongodb/data/etc/mongod.conf
    ExecStop=/home/soft/mongodb/bin/mongod --shutdown --config /home/soft/mongodb/data/etc/mongod.conf  
    PrivateTmp=false  
      
    [Install]  
    WantedBy=multi-user.target
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    mongodb服务命令

    #查询服务状态
    systemctl status mongod.service
    
    # 启动自启动服务
    systemctl enable mongod.service
    
    # 开启服务
    systemctl start mongod.service
    
    # 停止服务
    systemctl stop mongod.service
    
    # 关闭自启动服务
    systemctl disable mongod.service
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    查询服务状态,看到如下内容便是启动完成了

    image-20230916163659278

  • 相关阅读:
    while和for循环练习
    删库到跑路?还得看这篇Redis数据库持久化与企业容灾备份恢复实战指南
    Systemd&&Sysvinit
    内存-虚拟地址到物理内存地址转换
    MySQL【数据处理的增删改】
    Misc思路
    C#,电话数字键盘问题(Mobile Numeric Keypad problem)的算法与源代码
    jfinal中如何使用过滤器监控Druid监听SQL执行?
    计算机网络练习-计算机网络体系结构与参考模型
    VirtualBox7安装Ubuntu20及全屏、共享、粘贴板等设置
  • 原文地址:https://blog.csdn.net/qq_36213352/article/details/132920781