Mongodb之安装与配置

1.  mongodb在linux下的安装与配置

    1.  去官网下载

        https://www.mongodb.com/download-center/community

        wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.10.tgz

    2.  解压缩

        tar -zxvf mongodb-linux-x86_64-4.0.10.tgz

    3.  移动到指定位置

        mv mongodb-linux-x86_64-4.0.10 /usr/local/

        ln -s /usr/local/mongodb-linux-x86_64-4.0.10 /usr/local/mongodb

    4.  创建一些特定的目录

        cd /usr/local/mongodb/

        mkdir conf logs db

    5.  创建配置文件

        cd conf

        vi mongodb.conf

systemLog:
  destination: file
  logAppend: true
  path: /usr/local/mongodb/logs/mongodb.log

storage:
  dbPath: /usr/local/mongodb/db
  journal:
    enabled: true

processManagement:
  fork: true  # fork and run in background

net:
  port: 16535
  bindIp: 0.0.0.0

    6.  创建普通用户

        useradd mongouser -s /sbin/nologin

        chown -R mongouser.mongouser /usr/local/mongodb        

    7.  切换用户,启动mongodb

        /usr/local/mongodb/bin/mongod --config=/usr/local/mongodb/conf/mongodb.conf

    8.  mongo客户端登录mongodb

        /usr/local/mongodb/bin/mongo 172.168.2.120:16535

        /usr/local/mongodb/bin/mongo 172.168.2.120:16535/admin

    9.  关闭mongodb

        1.  登录到mongodb中,执行命令。

            /usr/local/mongodb/bin/mongo --port 16535

            use admin

            db.shutdownServer();

            注意:这种方法要求必须使用localhost或者127.0.0.1登录。

        2.  使用mongod命令关闭

            /usr/local/mongodb/bin/mongod --shutdown --config=/usr/local/mongodb/conf/mongodb.conf                         

    10.  查看mongodb服务器的状态

        1.  使用命令db.serverstatus(),查看的是整个服务器的状态。

db.serverStatus()
{
"host" : "core_appdb_2:10001", #主机名和mongo端口
"version" : "2.2.4", #mongo版本
"process" : "mongod", #进程名称
"pid" : 30011, #进程id
"uptime" : 15054670, #mongo启动时间单位秒
"uptimeMillis" : NumberLong("15054669872"),#mongo启动时间单位毫秒
"uptimeEstimate" : 14884601, #基于MongoDB内部粗粒度定时器的运行时间
"localTime" : ISODate("2014-03-19T06:51:48.303Z"), #当前UTC 时间
"locks" : {
"." : {
"timeLockedMicros" : { #所用库的锁时间单位微秒
"R" : NumberLong(604780392),#所用库的读锁时间单位微秒
"W" : NumberLong("13531173187")#所用库的写锁时间单位微秒
},
"timeAcquiringMicros" : {
"R" : NumberLong(635619713),#所用库的等待读锁时间单位微秒
"W" : NumberLong(114062002)#所用库的等待读锁时间单位微秒
}
},
"admin" : {
"timeLockedMicros" : {
"r" : NumberLong(46802786),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(3942271),
"w" : NumberLong(0)
}
},
"local" : {
"timeLockedMicros" : {
"r" : NumberLong("6484531006"),
"w" : NumberLong("7723991598")
},
"timeAcquiringMicros" : {
"r" : NumberLong(605019419),
"w" : NumberLong(1003472196)
}
},
"config" : {
"timeLockedMicros" : {
"r" : NumberLong(4723313),
"w" : NumberLong(0)
},
"timeAcquiringMicros" : {
"r" : NumberLong(1517553),
"w" : NumberLong(0)
}
},
"task" : {
"timeLockedMicros" : {
"r" : NumberLong("51722457503"),
"w" : NumberLong("30996304856")
},
"timeAcquiringMicros" : {
"r" : NumberLong("24704782100"),
"w" : NumberLong("10218470097")
}
},
"test" : {
"timeLockedMicros" : {
"r" : NumberLong(4502479),
"w" : NumberLong(14)
},
"timeAcquiringMicros" : {
"r" : NumberLong(1014481),
"w" : NumberLong(3)
}
}
},
"globalLock" : {
"totalTime" : NumberLong("15054669872000"), #自数据库启动并且创建全局锁的时间,单位微妙,和数据库启动时间相近
"lockTime" : NumberLong("13531173187"),##自数据库启动并且获得全局锁的时间,单位微妙
"currentQueue" : {
"total" : 0, #当前等待获取锁的队列
"readers" : 0, #当前等待获取读锁的队列
"writers" : 0 #当前等待获取写锁的队列
},
"activeClients" : {
"total" : 0, #当前活动的连接数
"readers" : 0, #当前活动的读连接数
"writers" : 0 #当前活动的写连接数
}
},
"mem" : {
"bits" : 64, # 64位mongo
"resident" : 20729,#常驻内存单位M
"virtual" : 93204, #虚拟内存单位M,如果 journaling开启,大约是mapped内存的二倍,
如果内存是mapped内存的三倍或者更多可能会出现内存泄漏
"supported" : true,#是否支持扩展内存
"mapped" : 45195, #数据映射到内存的大小单位M,和数据的总大小相近。
"mappedWithJournal" : 90390#数据文件和 journaling文件映射到内存中的大小,单位M,这个值一直
是mapped的二倍。
},
"connections" : {
"current" : 2050, #当前的连接数
"available" : 14350 #还可以用的连接数
},
"extra_info" : {
"note" : "fields vary by platform",
"heap_usage_bytes" : 91177440,#数据库用的heap内存大小单位bytes
"page_faults" : 57650 #访问swap分区中的数据大小,单位page
},
"indexCounters" : {
"btree" : {
"accesses" : 692698855,#访问索引的次数
"hits" : 692704555, #访问内存中索引的次数
"misses" : 0, #访问磁盘中索引的次数
"resets" : 0, #自启动数据库以后,索引统计被重置的次数
"missRatio" : 0 #
}
},
"backgroundFlushing" : {
"flushes" : 250852, #数据库刷新数据到磁盘的次数
"total_ms" : 52897489,#数据库刷新数据到磁盘花费的时间,单位毫秒
"average_ms" : 210.871306587151, #平均每次刷新磁盘花费的时间,单位毫秒。
"last_ms" : 797, #最后一次刷新磁盘花费的时间,单位毫秒。
"last_finished" : ISODate("2014-03-19T06:51:03.102Z")#最后一次完成刷新磁盘后的utc时间点。
},
"cursors" : {
"totalOpen" : 2, #当前打开cursor的数量
"clientCursors_size" : 2, #从1.x版本已经去除
"timedOut" : 1444 #curser超时次数
},
"network" : {
"bytesIn" : 31179599101,#发送到数据库的数据总量(bytes)
"bytesOut" : 567176581019,#数据库发出的数据总量(bytes)
"numRequests" : 192840604 #发送到数据库的请求量
},
"repl" : {
"setName" : "shard1", #主从复制的名字
"ismaster" : true, #是不是主从复制的主服务器
"secondary" : false,#是不是主从复制的从服务器
"hosts" : [ #主从复制包括的机器
"10.0.3.56:10001",
"10.0.3.56:10002"
],
"arbiters" : [ #仲裁机器
"10.0.3.56:10003"
],
"primary" : "10.0.3.56:10001",#主服务器地址
"me" : "10.0.3.56:10001" #当前服务器地址
},
"replNetworkQueue" : {
"waitTimeMs" : 0,
"numElems" : 0,
"numBytes" : 0
},
"opcounters" : {
"insert" : 8179832, #自实例启动以来总的insert次数
"query" : 76509861, #自实例启动以来总的query次数
"update" : 15971292, #自实例启动以来总的update次数
"delete" : 254882, #自实例启动以来总的delete次数
"getmore" : 34581601, #自实例启动以来总的getmore次数
"command" : 62259857 #自实例启动以来总的命令次数
},
"asserts" : {
"regular" : 0,#自实例启动以来抛出正规断言次数
"warning" : 0,#自实例启动以来抛出的告警总次数
"msg" : 0, #自实例启动以来总服务器内部定义的好的断言次数
"user" : 5756,#自实例启动以来总的用户断言次数
"rollovers" : 0#自实例启动以来总assert counters have rolled over的次数
},
"writeBacksQueued" : false,
"dur" : { #每3秒统计一次,统计3-6秒之间的数据
"commits" : 27, #上一间隔journal日志发生commit的次数
"journaledMB" : 0.114688, #上一间隔journal日志产生的数据量
"writeToDataFilesMB" : 0.13708, #上一间隔journal日志写到磁盘上的数据量
"compression" : 0.8158085672418944, #journal日志压缩比,( journaled_size_of_data / uncompressed_size_of_data )
"commitsInWriteLock" : 0, #多少次在journal日志提交时有写锁。
"earlyCommits" : 0,#在自动commit前,有多少次被要求commit
"timeMs" : {
"dt" : 3087, #统计timeMs数据花费的时间,单位毫秒
"prepLogBuffer" : 0,#准备写journal日志花费的时间,单位毫秒,越少性能越好
"writeToJournal" : 246,#写journal日志花费的时间,单位毫秒
"writeToDataFiles" : 5,#在写journal日志后,向数据文件中写数据花费的时间
"remapPrivateView" : 1#重新映射数据花费的时间,时间越短性能越好。
}
},
"recordStats" : {
"accessesNotInMemory" : 1224, #多少次访问数据没在内存中
"pageFaultExceptionsThrown" : 197,#多少次访问数据 抛出page Fault Exceptions。
"admin" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
},
"config" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
},
"local" : {
"accessesNotInMemory" : 27,
"pageFaultExceptionsThrown" : 0
},
"task" : {
"accessesNotInMemory" : 1197,
"pageFaultExceptionsThrown" : 197
},
"test" : {
"accessesNotInMemory" : 0,
"pageFaultExceptionsThrown" : 0
}
},
"ok" : 1
}

        2.  查看服务器内存的使用情况

            db.serverstatus().mem;

        3.  查看服务器连接数

            db.serverstatus().connections;

    注意:以上是单节点的配置方法                                                                                

2.  开机启动

    1.  centos7

        1.   创建mongodb.service文件

            cd /lib/systemd/system

            vi mongodb.service

[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
 
[Service]
User=mongouser
Group=mongouser
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongodb.conf
#ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/conf/mongodb.conf
PrivateTmp=false
 
[Install]
WantedBy=multi-user.target

        2.  设置开机启动

            systemctl enable mongodb.service

        3.  启动mongodb

            systemctl start mongodb

        4.  关闭mongodb    

            systemctl stop mongodb

    2.  centos6

        1.  在/etc/init.d/目录下,添加一个文件mongodb

 

#!/bin/bash
# create by yangjianbo at 2022/08/17
#chkconfig: 2345 80 90
#description: auto_run
. /etc/init.d/functions
start () {
  sudo -u mongouser /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/conf/mongodb.conf
}

stop () {
  sudo -u mongouser /usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/conf/mongodb.conf
}

case "$1" in
     start)
        start
        ;;
     stop)
        stop
        ;;
     restart)
        stop
        sleep 10
        start
        ;;
     help|*)
        echo $"Usage: $0 {start|stop|status|restart|help}"
        exit 1
        ;;
esac

        2.  添加执行权限

            chmod +x mongodb

        3.  添加到系统启动

            chkconfig --add mongodb  

        4.  开启mongodb

            /etc/init.d/mongodb start

        5.  关闭mongodb

            /etc/init.d/mongodb stop

        注意:当用户名称超过8个字符,查看进程的时候,显示的是uid,而不是用户名称。  

posted @ 2019-08-09 17:34  奋斗史  阅读(246)  评论(0)    收藏  举报