zoukankan      html  css  js  c++  java
  • Linux下安装MongoDB

    安装MongoDB社区版

    1.下载编译好的通用软件包

    MongoDB的下载中心:https://www.mongodb.com/try/download/community
    image

    2.安装所需的依赖

    sudo yum install -y libcurl openssl xz-libs
    

    3.关闭大页内存机制(THP)

    3.1 为什么要关闭?

    透明大页面(THP)是一种Linux内存管理系统,它通过使用较大的内存页面来减少具有大量内存的计算机上的转换后备缓冲区(TLB)查找的开销。

    但是,启用THP时,数据库工作负载通常表现不佳,因为它们往往具有稀疏而不是连续的内存访问模式。在Linux上运行MongoDB时,应禁用THP以获得最佳性能。

    参照官网使用谷歌翻译的,原文地址:https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

    3.2 创建一个systemd来管理

    vim /etc/systemd/system/disable-transparent-huge-pages.service

    [Unit]
    Description=Disable Transparent Huge Pages (THP)
    DefaultDependencies=no
    After=sysinit.target local-fs.target
    Before=mongod.service
    
    [Service]
    Type=oneshot
    ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
    ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/defrag > /dev/null'
    
    [Install]
    WantedBy=basic.target
    
    3.3 启动关闭(THP)的服务
    加载systemd文件
    sudo systemctl daemon-reload
    
    启动服务
    sudo systemctl start disable-transparent-huge-pages.service
    
    加入开机启动
    sudo systemctl enable disable-transparent-huge-pages.service
    
    3.4 检查是否成功关闭(THP)
    cat /sys/kernel/mm/transparent_hugepage/enabled
    
    always madvise [never]  # 禁用状态
    [always] madvise never  # 启用状态
    

    4.MongoDB安装

    4.1 创建mongo用户
    useradd -s /sbin/nologin mongo
    
    4.2 创建mongodb所需目录结构
    mkdir -p /data/mongodb/{conf,log,data,bin}
    
    4.3 解压并移动到指定目录
    将安装包解压到指定目录
    tar xf mongodb-linux-x86_64-rhel70-3.6.21.tgz -C /data/mongodb
    
    移动到bin目录下
    mv /data/mongodb/mongodb-linux-x86_64-rhel70-3.6.21/bin/* /data/mongodb/bin/
    
    4.4 添加mongo用户环境变量
    echo 'export PATH=$PATH:/data/mongodb/bin/' >>  /etc/profile 
    source /etc/profile
    
    检查一下看环境变量是否生效
    mongo --version
    MongoDB shell version v3.6.21
    
    4.5 YAML格式配置文件讲解
    --系统日志有关  
    systemLog:
       destination: file        
       path: "/data/mongodb/log/mongodb.log"     --日志位置
       logAppend: true					         --日志以追加模式记录
    
    --数据存储有关   
    storage:
       journal:
          enabled: true
       dbPath: "/data/mongodb/data"     --数据路径的位置
    
    -- 进程控制  
    processManagement:
       fork: true                       --后台守护进程
           pidFilePath: <string>		--pid文件的位置,一般不用配置,可以去掉这行,自动生成到data中
            
    --网络配置有关   
    net:			
       bindIp: <ip>         -- 监听地址,如果不配置这行是监听在0.0.0.0
       port: <port>			-- 端口号,默认不配置端口号,是27017
       
    -- 安全验证有关配置      
    security:
      authorization: enabled        --是否打开用户名密码验证
    
    4.6 YAML配置文件示例
    cat > /data/mongodb/conf/mongo.conf <<EOF
    systemLog:
       destination: file
       path: "/data/mongodb/log/mongodb.log"
       logAppend: true
    storage:
       journal:
          enabled: true
       dbPath: "/data/mongodb/data/"
    processManagement:
       fork: true
    net:
       port: 27017
       bindIp: 0.0.0.0
    EOF
    
    4.7 设置目录权限
    chown -R mongo. /data/mongodb
    
    4.8 使用配置文件启动/关闭
    使用配置文件启动
    [root@mongodb ~]# mongod -f /data/mongodb/conf/mongo.conf
    about to fork child process, waiting until server is ready for connections.
    forked process: 40813
    child process started successfully, parent exiting
    
    [root@mongodb ~]# netstat -lnptu | grep 27017
    tcp        0      0 0.0.0.0:27017           0.0.0.0:*               LISTEN      40813/mongod        
    
    登陆
    [root@mongodb ~]# mongo
    MongoDB shell version v3.6.21
    connecting to: mongodb://127.0.0.1:27017/?gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("ce5902e2-c166-4b09-a9d5-19e6549fb5d4") }
    MongoDB server version: 3.6.21
    > 
    > 
    
    关闭
    [root@mongodb ~]# mongod -f /data/mongodb/conf/mongo.conf --shutdown
    killing process with pid: 40813
    
    
    4.9 使用systemctl命令管理服务
    cat > /etc/systemd/system/mongod.service <<EOF
    [Unit]
    Description=mongodb 
    After=network.target remote-fs.target nss-lookup.target
    [Service]
    User=mongo
    Type=forking
    ExecStart=/data/mongodb/bin/mongod --config /data/mongodb/conf/mongo.conf
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/data/mongodb/bin/mongod --config /data/mongodb/conf/mongo.conf --shutdown
    PrivateTmp=true  
    [Install]
    WantedBy=multi-user.target
    EOF
    
    基于systemctl管理
    systemctl daemon-reload
    systemctl start mongod.service
    systemctl stop mongod.service
    

    5.MongoDB常用基本操作

    5.1 mongodb 默认存在的库
    > show databases;
    admin   0.000GB
    config  0.000GB
    local   0.000GB
    
    5.2 帮助命令
    help
    KEYWORDS.help()
    KEYWORDS.[TAB]
    
    db.help()
    db.a.help()
    rs.help()
    sh.help()
    
    5.3 常用操作
    --查看当前db版本
    test> db.version()
    
    --显示当前数据库
    
    test> db
    test
    或
    > db.getName()
    test
    
    --查询所有数据库
    test> show dbs
    
    – 切换数据库
    > use local
    switched to db local
    
    - 查看所有的collection
    show  tables;
    
    – 显示当前数据库状态
    test> use local
    switched to db local
    
    local> db.stats()
    
    – 查看当前数据库的连接机器地址
    > db.getMongo()
    connection to 127.0.0.1
    指定数据库进行连接
    默认连接本机test数据库
    

    6.其它安装方法

    更多安装方法可以参考官网:https://docs.mongodb.com/manual/administration/install-on-linux/

    因为有悔,所以披星戴月;因为有梦,所以奋不顾身! 个人博客首发:easydb.net 微信公众号:easydb 关注我,不走丢!

    image

  • 相关阅读:
    git submodule的使用
    Git 工具
    Simple Rtmp Server的安装与简单使用
    Java 获取当前系统的操作系统类型
    OA系统 权限管理的设计流程
    基于角色访问控制的OA系统的设计与实现
    Neo4j:Index索引
    Neo4j Cypher查询语言详解
    win10命令行kill进程
    用BlazeMeter录制JMeter测试脚本
  • 原文地址:https://www.cnblogs.com/easydb/p/14190727.html
Copyright © 2011-2022 走看看