zoukankan      html  css  js  c++  java
  • MongoDB 3.x 安装配置

    目录

    见右侧目录栏导航)
    - 1. 安装Mongodb
        - 1.1 使用二进制包安装
        - 1.2 运行MongoDB
    - 2. MongoDB 配置文件详解
        - 2.1 说明
        - 2.2 配置文件格式
        - 2.3 配置文件的核心选项
            - 2.3.1 systemLog 选项
            - 2.3.2 processMangement 选项
            - 2.3.3 net 选项
            - 2.3.4 storage 选项
            - 2.3.5 replication 选项
    - 3. 启动/关闭MongoDB服务
        - 3.1 通过 mongod 命令启动
        - 3.2 通过服务启动

    1. 安装Mongodb


    官网下载地址:https://www.mongodb.com/download-center/community
    官网Centos/RHEL安装教程:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/

    1.1 使用二进制包安装


        (1)安装前准备
        OS:CentOS Linux release 7.2
        首先安装依赖:
       

    yum install libcurl openssl -y


        (2)下载并解压
        MongoDB下载中心   这里采用 mongodb-linux-x86_64-rhel70-3.6.10.tgz 版本

    [root@mongodb src]# tar xf mongodb-linux-x86_64-rhel70-3.6.10.tgz 
    [root@mongodb src]# mkdir -pv /mongodb
     mkdir: created directory ‘/mongodb’
    [root@mongodb src]# cp -a mongodb-linux-x86_64-rhel70-3.6.10/bin/ /mongodb/


        
        (3)添加MongoDB执行文件到环境变量PATH中

    [root@mongodb src]# echo "export PATH=$PATH:/mongodb/bin" >> /etc/profile.d/mongodb.sh
    [root@mongodb src]# . /etc/profile.d/mongodb.sh

    1.2 运行MongoDB


        (1)前提
        设置系统 ulimit

    [root@mongodb src]# egrep -v "^#|^$" /etc/security/limits.conf
    *       soft    nproc       655350
    *       hard    nproc       655350
    *       soft    nfile       655350
    *       soft    nfile       655350
    [root@mongodb src]# ulimit -SHn 655350


        
        (2)目录
        使用默认目录
        默认,MongoDB使用mongod用户和使用默认的目录
         /var/lib/mongo    数据目录
        /var/log/mongodb    日志目录
        
        这里我们不使用默认的目录,采取自行指定目录
        
        创建MongoDB 使用目录
       

    [root@mongodb ~]# mkdir -p /mongodb/{bin,data,etc,log,run}


       

    2. MongoDB 配置文件详解

    2.1 说明


        配置mongodb有两种方式:


        (1)通过mongod和mongos两个命令;
        (2)通过配置文件的方式(推荐使用)

    2.2 配置文件格式


        mongodb 配置文件采用的 YAML格式;
        
        例如:

    systemLog:
       destination: file
       path: "/var/log/mongodb/mongod.log"
       logAppend: true
    storage:
       journal:
          enabled: true
    processManagement:
       fork: true
    net:
       bindIp: 127.0.0.1
       port: 27017
    setParameter:
       enableLocalhostAuthBypass: false


       

    2.3 配置文件的核心选项


    2.3.1 systemLog 选项

    systemLog:
       verbosity: <int>
       quiet: <boolean>
       traceAllExceptions: <boolean>
       syslogFacility: <string>
       path: <string>
       logAppend: <boolean>
       logRotate: <string>
       destination: <string>
       timeStampFormat: <string>
       component:
          accessControl:
             verbosity: <int>
          command:
             verbosity: <int>


    ==================重点参数==================
    systemLog.destination
        类型:string
        作用:指定日志文件的路径,如果设置了这个值,必须指定systemLog.path.如果没有设置,日志会标准的输出到后台

    systemLog.path
        类型:string
        作用:指定日志文件的目录

    systemLog.logAppend
        类型:boolean
        默认值:False
        作用:当mongod或mongos重启时,如果为true,将日志追加到原来日志文件内容末尾;如果为false,将创建一个新的日志文件

    =========================================

    systemLog.timeStampFormat
        类型:string
        默认值:iso8601-local
        作用:为日志添加时间戳。

    值     描述
    ctime    显示时间戳格式为:Wed Dec 31 18:17:54.811
    iso8601-utc    安装iso-8601-utc格式显示:1970-01-01T00:00:00.000Z
    iso8601-local    按照iso8601-local格式显示:1969-12-31T19:00:00.000-0500
            
    systemLog.traceAllExceptions
        类型:boolean
        作用: 为调试打印详细信息,用于支持相关的故障排除。
        
    systemLog.syslogFacility
        类型:string
        默认值:user
        作用:将mongodb使用日志记录到系统日志中,如果要使用这个选项,必须开启--sysylog选项
        
     2.3.2 processMangement 选项

    processManagement:
       fork: <boolean>
       pidFilePath: <string>


    ==================重点参数==================
    processMangement.fork
        类型:Boolean
        默认值:False
        作用:在前台启动Mongodb进程,如果Session窗口关闭,Mongodb进程也随之停止。不过Mongodb同时还提供了一种后台Daemon方式启动,只需要加上一个"--fork"参数即可,值得注意的是,用到了"--fork"参数就必须启用"--logpath"参数。如下所示:

    [root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork
    --fork has to be used with --logpath
    [root@localhost mongodb]# ./bin/mongod --dbpath=data/db --fork --logpath=log/mongodb.log 
    all output going to: /opt/mongodb/log/mongodb.log
    forked process: 3300  


        
    =========================================

    2.3.3 net 选项

    net:
       port: <int>
       bindIp: <string>
       maxIncomingConnections: <int>
       wireObjectCheck: <boolean>
       ipv6: <boolean>
       unixDomainSocket:
          enabled: <boolean>
          pathPrefix: <string>
          filePermissions: <int>
       http:
          enabled: <boolean>
          JSONPEnabled: <boolean>
          RESTInterfaceEnabled: <boolean>
       ssl:
          sslOnNormalPorts: <boolean>  # deprecated since 2.6
          mode: <string>
          PEMKeyFile: <string>
          PEMKeyPassword: <string>
          clusterFile: <string>
          clusterPassword: <string>
          CAFile: <string>
          CRLFile: <string>
          allowConnectionsWithoutCertificates: <boolean>
          allowInvalidCertificates: <boolean>
          allowInvalidHostnames: <boolean>
          disabledProtocols: <string>
          FIPSMode: <boolean>
       compression:
          compressors: <string>


    ==================重点参数==================
    net.port
        类型:integer
        默认值:27017
        作用:设置mongodb的监听TCP端口
        
    net.bindIp
        类型:string
        作用:设置mongodb服务器监听ip地址,默认是127.0.0.1;如果监听多个ip地址,使用逗号隔开

    =========================================

    net.maxIncomingConnections
        类型:integer
        默认值:65536
        作用:最大并发链接数
        
    2.3.4 storage 选项

    storage:
       dbPath: <string>
       indexBuildRetry: <boolean>
       repairPath: <string>
       journal:
          enabled: <boolean>
          commitIntervalMs: <num>
       directoryPerDB: <boolean>
       syncPeriodSecs: <int>
       engine: <string>
       mmapv1:
          preallocDataFiles: <boolean>
          nsSize: <int>
          quota:
             enforced: <boolean>
             maxFilesPerDB: <int>
          smallFiles: <boolean>
          journal:
             debugFlags: <int>
             commitIntervalMs: <num>
       wiredTiger:
          engineConfig:
             cacheSizeGB: <number>
             journalCompressor: <string>
             directoryForIndexes: <boolean>
          collectionConfig:
             blockCompressor: <string>
          indexConfig:
             prefixCompression: <boolean>
       inMemory:
          engineConfig:
             inMemorySizeGB: <number>



    ==================重点参数==================
    storage.dbPath
        类型:string
        默认值:/data/db(linux和macOS系统) ,datadb(window系统)
        作用:设置数据存储文件目录

    storage.journal.enabled
        类型:boolean
        默认值:true(64-bit系统);false(32-bit系统)
        作用:开启和关闭journal,为了保证数据文件的有效性和可恢复性;在设置了dbpath之后有效
        注:在in-memory存储引擎下不可用

    ========================================

    storage.indexBuildRetry
        类型:boolean
        默认值:true
        作用:开启或关闭是否在mongod下次启动重建不完整的索引。
        注:在in-memory存储引擎下不可用
        
    storage.repairPath
        类型:string
        默认值:在dbpath下的A _tmp_repairDatabase_<num> 文件目录
        作用:为进行恢复操作指定目录
        注意:仅仅在MMAPv1存储引擎下可用
        
    2.3.5 replication 选项  

    replication:
       oplogSizeMB: <int>
       replSetName: <string>
       secondaryIndexPrefetch: <string>
       enableMajorityReadConcern: <boolean>



    ==================重点参数==================
    replication.oplogSizeMB
        类型:integer
        作用:设置复制日志文件的大小;
        
    replication.replSetName
        类型:string
        作用:副本集的名称
    ========================================


    综上所有的重点参数,常用副本集配置文件如下:


    [root@mongodb ~]# vim /mongodb/etc/mongod.conf

    systemLog:
     destination: file
    ###日志存储位置
     path: /mongodb/log/mongod.log
     logAppend: true
    storage:
    ##journal配置
     journal:
      enabled: true
    ##数据文件存储位置
     dbPath: /mongodb/data/
    ##是否一个库一个文件夹
     directoryPerDB: true
    ##数据引擎
     engine: wiredTiger
    ##WT引擎配置
     wiredTiger:
      engineConfig:
    ##WT最大使用cache(根据服务器实际情况调节)
       cacheSizeGB: 10
    ##是否将索引也按数据库名单独存储
       directoryForIndexes: true
    ##表压缩配置
      collectionConfig:
       blockCompressor: zlib
    ##索引配置
      indexConfig:
       prefixCompression: true
    processManagement:
     fork: true  # fork and run in background
     pidFilePath: /mongodb/run/mongod.pid
    ##端口配置
    net:
     port: 27017
     bindIp: 192.168.118.11
    
     # 配置副本集重要参数(使用副本集群的时候使用,单节点无需次选项)
    replication:
     oplogSizeMB: 20
     replSetName: rs0
    mongod.conf



    配置文件详解:https://www.cnblogs.com/phpandmysql/p/7763394.html

    3. 启动/关闭MongoDB服务


    启动、关闭MongoDB的方式有两种:
        (1)通过命令mongod 直接启动
        (2)编写启动脚本,通过脚本启动(推荐使用)

    3.1 通过 mongod 命令启动

    启动:
    [root@mongodb ~]# mongod -f /mongodb/etc/mongod.conf
    about to fork child process, waiting until server is ready for connections.
    forked process: 19645
    child process started successfully, parent exiting
    关闭:
    [root@mongodb ~]# mongod -f /mongodb/etc/mongod.conf --shutdown
    killing process with pid: 19645

    3.2 通过服务启动

    (1)创建服务启动用户:

    [root@mongodb ~]# groupadd mongodb
    [root@mongodb mongodb]# useradd -r -d /mongodb/data -s /sbin/nologin -g mongodb mongodb
    [root@mongodb ~]# chown -R mongodb:root /mongodb/



    (2)编写服务脚本如下:

    [root@mongodb ~]# vim /lib/systemd/system/mongod.service
    [Unit]
    Description=High-performance, schema-free document-oriented database
    After=syslog.target network.target
    
    [Service]
    Type=forking
    User=mongodb
    ExecStart=/mongodb/bin/mongod -f /mongodb/etc/mongod.conf
    PrivateTmp=true
    LimitNOFILE=64000
    TimeoutStartSec=180
    
    [Install]
    WantedBy=multi-user.target



    (3)启动与关闭

    # 启动MongoDB并开机自启
    [root@mongodb mongodb]# systemctl enable mongod ; systemctl start mongod
    Created symlink from /etc/systemd/system/multi-user.target.wants/mongod.service to /usr/lib/systemd/system/mongod.service.
    [root@mongodb mongodb]# netstat -ntplu | egrep mongod
    tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      2421/mongod
    
    # 关闭MongoDB
    [root@mongodb mongodb]# systemctl stop mongod
  • 相关阅读:
    xpath语法速查
    负载均衡设计
    Nginx负载均衡配置实例详解
    实现基于DNS的负载均衡
    建立双线服务器(双线游戏服务器)
    python学习
    python多线程概念
    python 多线程就这么简单(续)
    打包一沓开源的 C/C++ 包管理工具送给你!
    讲解开源项目:功能强大的 JS 文件上传库
  • 原文地址:https://www.cnblogs.com/hukey/p/10363116.html
Copyright © 2011-2022 走看看