zoukankan      html  css  js  c++  java
  • mongodb安装部署

    1、系统准备

    a)    redhat或cnetos6.2以上系统
    b)    系统开发包完整
    c)    ip地址和hosts文件解析正常
    d)    iptables防火墙&SElinux关闭
    e)    关闭大页内存机制
    ########################################################################
            root用户下
            在vi /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
    chmod +x /etc/rc.d/rc.local
        其他系统关闭参照官方文档:    
            https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/

     为什么要关闭?

    Transparent Huge Pages (THP) is a Linux memory management system 
    that reduces the overhead of Translation Lookaside Buffer (TLB) 
    lookups on machines with large amounts of memory by using larger memory pages.
    However, database workloads often perform poorly with THP, 
    because they tend to have sparse rather than contiguous memory access patterns. 
    You should disable THP on Linux machines to ensure best performance with MongoDB.
    
    透明的大页(THP)是一个Linux内存管理系统,通过使用更大的内存页,可以减少对具有大量内存的机器的翻译查找缓冲区(TLB)查找的开销。然而,数据库工作负载通常在THP上表现不佳,因为它们往往具有稀疏而非连续的内存访问模式。您应该在Linux机器上禁用THP,以确保MongoDB的最佳性能。

    2、mongodb安装

    创建所需用户和组

    groupadd -g 800 mongod
    useradd -u 801 -g mongod mongod
    passwd mongod
    passwd 123

    创建mongodb所需目录结构

    mkdir -p /application/mongodb/bin
    mkdir -p /application/mongodb/conf
    mkdir -p /application/mongodb/log
    mkdir -p /application/mongodb/data

    上传并解压软件到指定位置

    mongodb-linux-x86_64-3.2.8.tgz
    tar xf mongodb-linux-x86_64-3.2.8.tgz
    cd mongodb-linux-x86_64-3.2.8/bin/
    cp * /application/mongodb/bin

    设置目录结构权限

    chown -R mongod:mongod /application/mongodb

    设置用户环境变量

    su - mongod
    echo 'export PATH=/application/mongodb/bin:$PATH' >> .bash_profile
    source .bash_profile

    3、启动mongodb

     mongod --dbpath=/application/mongodb/data --logpath=/application/mongodb/log/mongodb.log --port=27017 --logappend --fork
    注:
    $ mongod --help
    --dbpath:数据存放路径
    --logpath:日志文件路径
    --logappend:日志输出方式
    --port:启用端口号
    --fork:在后台运行
    --auth:是否需要验证权限登录(用户名和密码)
    --bind_ip:限制访问的ip


    启动monogodb的脚本
    #!/bin/bash
    #
    #chkconfig: 2345 80 90
    #description:mongodb
    MONGODIR=/application/mongodb
    MONGOD=$MONGODIR/bin/mongod
    MONGOCONF=$MONGODIR/conf/mongodb1.conf
    start() {
     su - mongod -c "$MONGOD -f $MONGOCONF"
    }
    
    stop() {
    su - mongod -c "$MONGOD -f $MONGOCONF --shutdown"
    }
    case "$1" in
      start)
     start
     ;;
      stop)
     stop
     ;;
      restart)
     stop
    sleep 2
     start
     ;;
      *)
     echo $"Usage: $0 {start|stop|restart}"
     exit 1
    esac
    View Code

    4、登录mongodb

    如果你不带任何参数运行 mongo , mongo shell将尝试连接运行在``localhost``上端口号为``27017``的MongoDB实例。
    [mongod@lnmp ~]$ mongo MongoDB shell version: 3.2.8 connecting to: test >

    5、使用配置文件

    方法1:

    #编辑配置文件
    vim /application/mongodb/conf/mongodb.conf
    logpath=/application/mongodb/log/mongodb.log
    dbpath=/application/mongodb/data
    port=27017
    logappend=1
    fork=1
    
    #启动
    mongod -f /application/mongodb/conf/mongodb.conf
    #关闭
    mongod -f /application/mongodb/conf/mongodb.conf --shutdown 

    方法2:建议

    #编辑配置文件
    vim  /application/mongodb/conf/mongodb1.conf 
    systemLog:
       destination: file
       path: "/application/mongodb/log/mongod.log"
       logAppend: true
    storage:
       journal:
          enabled: true
       dbPath: "/application/mongodb/data"
    processManagement:
       fork: true
    net:
       port: 27017

      mongod -f /application/mongodb/conf/mongodb1.conf

      mongod -f /application/mongodb/conf/mongodb1.conf --shutdown 

    6、mongodb的关闭方式

    方法1、kill

    ---kill进程形式
    $ kill -2 PID
    原理:-2表示向mongod进程发送SIGINT信号。
    或
    $ kill -4 PID
    原理:-4表示向mognod进程发送SIGTERM信号。

    :mongod进程收到SIGINT信号或者SIGTERM信号,会做一些处理

    方法2、自带模式

    admin> db.shutdownServer()
    或
    admin> db.adminCommand({shutdown:1})
    或
    $ mongod -f mongodb.conf  --shutdown
    killing process with pid: 1621
    !!!切记kill -9
    > 数据库直接关闭
    > 数据丢失
    > 数据文件损失
    > 修复数据库(成本高,有风险)

    7 基本操作:

    help 查看帮助

    db.help()                    help on db methods
        db.mycoll.help()             help on collection methods
        sh.help()                    sharding helpers
        rs.help()                    replica set helpers
        help admin                   administrative help
        help connect                 connecting to a db help
        help keys                    key shortcuts
        help misc                    misc things to know
        help mr                      mapreduce
    
        show dbs                     show database names
        show collections             show collections in current database
        show users                   show users in current database
        show profile                 show most recent system.profile entries with time >= 1ms
        show logs                    show the accessible logger names
        show log [name]              prints out the last segment of log in memory, 'global' is default
        use <db_name>                set current database
        db.foo.find()                list objects in collection foo
        db.foo.find( { a : 1 } )     list objects in foo where a == 1
        it                           result of the last line evaluated; use to further iterate
        DBQuery.shellBatchSize = x   set default number of items to display on shell
        exit                         quit the mongo shell
    View Code

    查看当前db版本

    > db.version()
    3.2.8

    显示当前数据库

    > db
    test

      > db.getName()
      test

    >  show dbs
    local  0.000GB

    切换数据库

    > use local
    switched to db local

    显示当前数据库状态

    > db.stats()
    {
        "db" : "local",
        "collections" : 1,
        "objects" : 7,
        "avgObjSize" : 1466,
        "dataSize" : 10262,
        "storageSize" : 36864,
        "numExtents" : 0,
        "indexes" : 1,
        "indexSize" : 36864,
        "ok" : 1
    }

    查看当前数据库的连接机器地址

    > db.getMongo()
    connection to 127.0.0.1

    创建数据库

    当使用use的时候,系统就会自动创建一个数据库。如果use之后没有创建任何集合。系统就会删除这个数据库。
    > use anyux
    switched to db anyux

     删除数据库

    如果没有选择任何数据库,会删除默认的test数据库
    > db.dropDatabase()
    { "ok" : 1 }
    > show dbs;
    local  0.000GB

     创建集合

          方法1:

    > use anyux;
    switched to db anyux        #相当于use anyux ,不同的是(从mysql关系型数据库角度解释),在mongodb中 anyux允许未创建情况下 use anyux,在创建数据表后,即创建了anyux,否则anyux不会创建
    > db.createCollection('a'); #创建集合a,a相当于mysql中的数据表
    { "ok" : 1 }                # 提示创建成功
    > db.createCollection('b');
    { "ok" : 1 }
    > show collections;
    a
    b

            方法2 :

    > db.c.insert({username:"mongodb"}) # 当插入一个文档的时候,一个集合就会自动创建。
    WriteResult({ "nInserted" : 1 })    #成功写入文档
    > show collections;                 #显示所有集合(数据表)
    a
    b
    c
    > db.c.find()                        #显示数据集合中所有数据,当前仅一条
    { "_id" : ObjectId("5a4c9509e4140b0cf22df83e"), "username" : "mongodb" }
    
    > db.log.find().pretty();              # 格式化打印结果
    {
        "_id" : ObjectId("5a4c962ce4140b0cf22df83f"),
        "uid" : 0,
        "name" : "mongodb",
        "age" : 6,
        "date" : ISODate("2018-01-03T08:37:00.214Z")
    }
    > db.c.drop()                        # 删除c集合
    true
    > db.c.find()                        # c集合置空

    批量插入数据

    for(i=0;i<10000;i++){ db.log.insert({"uid":i,"name":"mongodb","age":6,"date":new Date()}); }
    #查询集合中的记录数
    db.log.find()
    #注:默认每页显示20条记录,当显示不下的的情况下,可以用it迭代命令查询下一页数据
    #设置每页显示数据的大小:
    #每页显示50条记录
    DBQuery.shellBatchSize=50; 
    #查看第1条记录
     db.log.findOne() 
    #查询总的记录数
    db.log.count()
    #删除集合中所有记录
    db.log.remove({})
    #集合中数据的原始大小
     db.log.dataSize()
    #集合中索引数据的原始大小
    db.log.totalIndexSize()
    #集合中索引+数据压缩存储之后的大小
    db.log.totalSize()
    #集合中数据压缩存储的大小
    db.log.storageSize()

     #mongo中文文档

    http://www.mongoing.com/docs/

     

  • 相关阅读:
    1061 Dating (20 分)
    1042 Shuffling Machine (20 分)简单模拟
    1132 Cut Integer (20 分)
    1100 Mars Numbers (20 分)
    1077 Kuchiguse (20 分)求字符串最长相同后缀
    1065 A+B and C (64bit) (20 分)大数 溢出
    1107 Social Clusters (30 分)并查集
    1079 Total Sales of Supply Chain (25 分)
    1078 Hashing (25 分)
    1063 Set Similarity (25 分)
  • 原文地址:https://www.cnblogs.com/anyux/p/8184503.html
Copyright © 2011-2022 走看看