zoukankan      html  css  js  c++  java
  • MongoDB安装与配置

    版本: 
    OS:CentOS 6.6 64bit 
    DB:MongoDB企业版3.4.10 

    1、操作系统设置 
    --关闭防火墙 

    # chkconfig iptables off 

    --关闭SELINUX 

    # vi /etc/selinux/config 
    SELINUX=disabled 

    重启服务器生效 

    --关闭透明大页(transparent_hugepage) 

    # /etc/rc.local 

    在文件末尾加入如下内容 

    if test -f /sys/kernel/mm/transparent_hugepage/enabled; then 
       echo never > /sys/kernel/mm/transparent_hugepage/enabled 
    fi 
    if test -f /sys/kernel/mm/transparent_hugepage/defrag; then 
       echo never > /sys/kernel/mm/transparent_hugepage/defrag 
    fi 

    重启服务器 

    --创建运行MongoDB的用户和组 

    # groupadd mongod 
    # useradd -g mongod mongod 
    # passwd mongod 

    --提高默认文件描述符和进程/线程数限制 

    # vi /etc/security/limits.conf 
    mongod soft nproc 64000 
    mongod hard nproc 64000 
    mongod soft nofile 64000 
    mongod hard nofile 64000 

    2、安装MongoDB软件 
    --创建MongoDB二进制软件存放目录 

    # mkdir /mongodb 

    --上传MongoDB二进制软件/tmp目录下并解压到/mongodb目录下 

    # tar zxvf mongodb-linux-x86_64-enterprise-rhel62-3.4.10.tgz -C /mongodb 

    赋权限: 

    # chown -R mongod:mongod /mongodb 

    --修改全局环境变量 

    # vi /etc/profile 
    export PATH=$PATH:/mongodb/mongodb-linux-x86_64-enterprise-rhel62-3.4.10/bin 


    使环境变量生效: 

    # source /etc/profile 

    或mongod用户下 

    .bash_profile 

    3、启动/登录/关闭MongoDB 
    --创建数据和日志存放目录 

    # mkdir -p /db/data 
    # mkdir -p /db/log 

    赋权限: 

    # chown -R mongod:mongod /db 

    ==启动MongoDB 

    # su - mongod 
    $ mongod --dbpath=/db/data/ --logpath=/db/log/mongodb.log --logappend --fork 


    成功标识: 
    about to fork child process, waiting until server is ready for connections. 
    forked process: 1814 
    child process started successfully, parent exiting 

    注: 
    $ mongod --help 
    --dbpath:数据存放路径 

    --logpath:日志文件路径 

    --logappend:日志输出方式 

    --port:启用端口号 

    --fork:在后台运行 

    --auth:是否开启安全认证(默认不开启) 

    --bind_ip:以逗号分隔的ip地址列表,默认为所有本地ips。 

    ==登录MongoDB 

    $ mongo 
    MongoDB shell version v3.4.10 
    connecting to: mongodb://127.0.0.1:27017 
    MongoDB server version: 3.4.10 
    MongoDB Enterprise > 

    注:默认连接到test数据库 

    MongoDB Enterprise > db 
    test 

    ==关闭MongoDB 
    --获取mongod的进程号PID 

    $ ps -ef | grep mongod 

    --关闭MongoDB 

    $ kill PID 

    原理: 
    > 关闭所有打开的连接 
    > 将内存数据强制刷新到磁盘 
    > 当前的操作执行完毕 
    > ... 
    > 安全停止 

    !!!切记kill -9 
    > 数据库直接关闭 
    > 数据丢失 
    > 数据文件损失 
    > 修复数据库(成本高,有风险) 

    4、使用MongoDB 
    (运行mongo启动shell,shell会在启动时自动连接MongoDB服务器,默认连接test数据库,并将这个数据库连接赋值给全局变量db,这个变量是MongoDB的主要入口点。shell是功能完备的Javascript解释器,可以运行任何Javascript程序。) 
    > x=100 
    100 
    > x/10 
    10 

    --查看当前连接的数据库服务器 
    > db.getMongo() 
    connection to 192.168.1.21:27017 

    --查看当前数据库版本 
    > db.version() 

    --显示当前数据库 
    > db 
     
    > db.getName() 

    --查看所有数据库 
    > show dbs 

    --切换数据库 
    > use test 

    --查看某一数据库下的所有集合 
    如app库: 
    > use app 
    > show collections 

    --创建数据库:当use的时候,系统就会自动创建一个数据库。如果use之后没有创建任何集合。系统就会删除这个数据库。 

    --删除数据库 
    如:test数据库 
    > use test 
    > db.dropDatabase() 

    --创建集合 
    如:在app数据库下创建集合a 
    方法1 
    > use app 
    > db.createCollection('a') 

    方法2:当插入一个文档的时候,一个集合就会自动创建。 
    > use app 
    > db.b.insert({username:"mongodb"}) 

    --删除集合 
    > use app 
    > db.a.drop() 

    --重命名集合 
    //把a改名为c 
    > db.a.renameCollection("c") 

    --重命名数据库 
    虽然MongoDB没有renameDatabase的命令,但提供了renameCollection的命令,这个命令并不是仅仅能修改collection的名字,同时也可以修改database。 
    如: 
    > db.adminCommand({renameCollection: "test.a", to: "app.b"}) 
    上述命令实现了将test数据库下的集合a,重命名为app数据库下的集合b,这个命令只修改元数据,开销很小,有了这个功能,要实现test重命名为app,只需要遍历test下所有的集合,重命名到app下,就实现了renameDatabase的功能。 

    --插入数据 
    > use app 
    > for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":18,"date":new Date()}); } 

    --查询集合中的记录数 
    > db.log.find() //查询所有记录 
    注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据。 
    设置每页显示数据的大小: 
    > DBQuery.shellBatchSize=50; //每页显示50条记录 

    格式化输出:db.<collection>.find().pretty() 

    > db.log.findOne() //查看第1条记录 

    > db.log.count() //查询总的记录数 

    --删除集合中的记录数 
    > db.log.remove({}) //删除集合中所有记录 

    > db.log.distinct("name") //去重 

    ==查看集合存储信息 
    > db.log.stats() 

    > db.log.dataSize() //集合中数据的原始大小 

    > db.log.totalIndexSize() //集合中索引数据的原始大小 

    > db.log.totalSize() //集合中索引+数据压缩存储之后的大 小 

    > db.log.storageSize() //集合中数据压缩存储的大小 

    查看具体方法代码: 
    app> show collections 
    log 

    app> db.log.dataSize 
    function () { 
        return this.stats().size; 
    } 

    app> db.log.totalIndexSize 
    function (verbose) { 
        var stats = this.stats(); 
        if (verbose) { 
            for (var ns in stats.indexSizes) { 
                print(ns + " " + stats.indexSizes[ns]); 
            } 
        } 
        return stats.totalIndexSize; 
    } 

    app> db.log.totalSize 
    function () { 
        var total = this.storageSize(); 
        var totalIndexSize = this.totalIndexSize(); 
        if (totalIndexSize) { 
            total += totalIndexSize; 
        } 
        return total; 
    } 

    app> db.log.storageSize 
    function () { 
        return this.stats().storageSize; 
    } 

    --查看数据库状态 
    如:test数据库 
    > use test 

    > db.stats() 
    { 
        "db" : "test", 
        "collections" : 4, 
        "views" : 0, 
        "objects" : 10007, 
        "avgObjSize" : 80.1122214449885, 
        "dataSize" : 801683,     "storageSize" : 274432,     "numExtents" : 0,     "indexes" : 3,     "indexSize" : 196608,     "ok" : 1 } 补: 1、自定义提示符 mongod home目录下编辑.mongorc.js隐藏文件 eg: $ cat .mongorc.js var compliment = ["attractjve","intelligent","like Batman"]; var index = Math.floor(Math.random()*3); print("Hello,you're looking particularly "+compliment[index]+" today!"); prompt = function() {     return (new Date())+">"; }; prompt = function() {     if (typeof db == 'undefined') {         return '(nodb)> '; }     try {         db.runCommand({getLastError:1});     }     catch (e) {         print(e);     }     return db+"> "; }; 2、开启安全认证并使用用户名密码登录 (1)不开启安全认证创建超级管理员root --admin db.createUser(   {     user: "root",     pwd: "grjin",     roles: [ { role: "root", db: "admin" } ]   } ) db.auth("root","grjin") (2)开启安全认证 --auth (3)重启MongoDB (4)完整登录方式 $ mongo -uroot -pgrjin 192.168.1.21:27017/admin 3、MongoDB标准配置文件 # su - mongod $ vi mongodb.conf systemLog:   destination: file   path: /db/log/mongod.log   logAppend: true   logRotate: rename processManagement:   fork: true   pidFilePath: /db/data/mongod.pid net:   bindIp: 192.168.1.21   port: 27018   http:     enabled: false   maxIncomingConnections: 1000 operationProfiling:   mode: slowOp   slowOpThresholdMs: 100 security:   authorization: enabled storage:   dbPath: /db/data   wiredTiger:     engineConfig:       cacheSizeGB: 1       directoryForIndexes: true     collectionConfig:       blockCompressor: zlib     indexConfig:       prefixCompression: true   directoryPerDB: true $ mongod -f mongodb.conf //启动MongoDB $ mongod -f mongodb.conf --shutdown //关闭MongoDB

    Priestess©版权所有,禁止转载
  • 相关阅读:
    CSS 使用技巧
    CSS display
    CSS float
    .NET自动识别HttpWebResponse的编码及是否压缩
    通用权限管理系统基类中数据库的连接
    通用权限底层实现的记录软删除及表中应包含的基本字段
    最好用的兼容多种数据库通用高效的大数据分页功能
    水平权限漏洞的修复方案
    通用权限管理系统菜单展示的一个技巧
    IE11下用forms身份验证的问题
  • 原文地址:https://www.cnblogs.com/priestess-zhao/p/8268083.html
Copyright © 2011-2022 走看看