发布新日志

  • mongleDB 系统管理(1)

    2011-05-17 20:51:14

    最近完成了一个基于MongoDB的项目虽然项目已经上线,但是要使MongoDB长期健壮的运行在产品环境作为研发团队中的一员必须要对MongoDB的系统管理要有比较深入的了解。
    我准备用4-5个篇幅来介绍MongoDB系统管理--这是第1篇,接下来的操作如果没有特别说明都以CentOS Linux环境为准

    1.要尝试使用MongoDB首先必须要在命令行运行mongod服务
    a. cd MONGO_HOME/bin
    b. ./mongod --dbpath /data/mongodb/db/  --logpath /data/mongodb/logs/mongolog  --logappend --fork

    参数说明
    --dbpath            #指定db文件存放的目录
    --port              #指定mongod服务使用的端口
    --fork              #设置mongo服务为后台运行
    --logpath           #指定log文件的目录和文件名
    --logappend         #设置每次log添加在文件最后
    --rest              #关闭rest api功能
    --nohttpinterface   #关闭web管理功能
    --auth              #指定mongo使用身份验证机制
    --bindip            #用逗号分隔ip地址,用来指定
    --f                 #将所有前面介绍的参数都可以存放到一个配置文件中,然后用这个参数调用配置文件来启动mongod服务

    2.关闭MongoDB有几种方法
    a. db.shutdownServer()  #推荐优先使用
    b. ctrl + c             #在不使用 --fork参数的时候可以使用,可能会造成数据文件损坏
    c. kill / kill -2       #在无法使用 a和b的情况下使用,可能会造成数据文件损坏
    d. kill -9              #不在万不得已的情况下,不要使用这个方法

    3. 查看MongoDB状态
    a.db.runCommand({"serverStatus":1})
    b.MONGO_HOME/bin/mongostat

    4. 添加用户,切换用户 使 --auth参数起效
    db.addUser("root","123")
    db.addUser("read_only","123",true);  #第3个参数表示设置readonly的状态

    db.auth("read_only","123")

    5. 数据库备份
    有4种方法备份数据库
    a. 关闭mongod服务后,复制--dbpath参数指定的数据文件。优点速度快,缺点需要停止mongo服务。
    b. 使用mongodump 导出数据,并用mongorestore 导入数据。优点不需要停止mongo服务,缺点在mongodump操作时用户插入的数据可能无法备份出来。
    c. fsync and lock锁定数据库的让用户只能使用read功能,再使用方法b导出并导入数据。优点不需要停止mongo服务,缺点在数据库lock期间用户无法执行insert操作。
    d. 使用slaveDB并且 使用方法c锁定slaveDB,再使用方法b导出并导入数据。优点不需要停止mongo服务,不会影响用户insert操作(推荐使用此方法)。

    6. 修复数据库
    当数据库文件遭到损坏的时候有3种方法修复数据文件
    a. MONGO_HOME/bin/mongod --repair
    b. use test
       db.repairDatabase()
    c. db.runCommand({"repairDatabase":1});

  • mongodb 将查询结果导出到文件

    2011-05-10 21:13:52


    ./mongoexport  -h "127.0.0.1" -d seo -c kw_city -csv -o test1.csv -q '{"state":"ny"}' -f city,state

    注意事项:
    在windows的cmd命令行导出linux服务器的数据是不能使用 -q参数的

    options:
      --help                  produce help message
      -v [ --verbose ]        be more verbose (include multiple times for more
                              verbosity e.g. -vvvvv)
      --version               print the program's version and exit
      -h [ --host ] arg       mongo host to connect to ( <set name>/s1,s2 for sets)
      --port arg              server port. Can also use --host hostname:port
      --ipv6                  enable IPv6 support (disabled by default)
      -u [ --username ] arg   username
      -p [ --password ] arg   password
      --dbpath arg            directly access mongod database files in the given
                              path, instead of connecting to a mongod  server -
                              needs to lock the data directory, so cannot be used
                              if a mongod is currently accessing the same path
      --directoryperdb        if dbpath specified, each db is in a separate
                              directory
      -d [ --db ] arg         database to use
      -c [ --collection ] arg collection to use (some commands)
      -f [ --fields ] arg     comma separated list of field names e.g. -f name,age
      --fieldFile arg         file with fields names - 1 per line
      -q [ --query ] arg      query filter, as a JSON string
      --csv                   export to csv instead of json
      -o [ --out ] arg        output file; if not specified, stdout is used
      --jsonArray             output to a json array rather than one object per




  • mongle db 简单查询

    2011-05-10 21:03:12

    1.指定列显示并且加查询条件
    db.kw_city.find({state:"nc"},{ctiy:1,state:1,_id:0})
    city:1表示要显示city列
    _id:0 表示不要显示_id列

    2.查询条件大于等于
    db.kw_city.find({"recordcnt":{$gte:163757}},{city:1,state:1,_id:0})
    $gte:163757 表示recordcnt的值大于163757

    3.不等于查询条件
     db.kw_city.find({"state":{$ne:"ny"}},{city:1,state:1,_id:0})
    表示state不等于ny


    4.in查询条件
     db.kw_city.find({"state":{$in:['ny','ca']}},{city:1,state:1,_id:0})
    表示state等于ny或者ca

    5.not in查询条件
     db.kw_city.find({"state":{$nin:['ny','ca']}},{city:1,state:1,_id:0})

    6.or条件查询
    db.kw_city.find({$or : [{"recordcnt":77607},{catecnt:3134}]})
    表示查询条件为recordcnt=77607或者catecnt=3134

    7.between条件查询
    db.kw_city.find({"recordcnt":{$lt:163757,$gt:10000}})
    表示recordcnt大于10000小于163757

    8.is null条件查询
    db.kw_city.find({recordcnt:null})
    db.kw_city.find({recordcnt:{$in:[null],$exists:true}})


    9.正则表达式
    db.kw_city.find({city:/new/i})
    mongodb 支持Perl Compatible Regular Expression (PCRE) library

  • 可爱的mongle db

    2011-05-09 20:05:42

    最近公司来了一批新的开发,并且将mongodb带来了,今天下午玩了一下觉得还不错
    1.下载
    http://www.mongodb.org/

    2.安装
    其实非常简单只要解压缩就可以了

    3.启动 mongo
    ./mongod --dbpath /data/mongodb/db/ --logpath  /data/mongodb/logs/mongolog --fork --logappend

    --dbpath指定一个目录作为数据文件的存放位置
    --logpath 设定log存放的位置
    --fork 后台运行mongodb

    4.使用mongodb
    执行{mongodb_home}/bin/mongo #进入mongo shell环境
    use test #切换databases
    db.foo.save({a:1})#插入数据
     db.foo.find()#查询数据

    5.关闭mongo
    use admin #切换database
    db.shutdownServer()#执行关闭命令
    exit#退出mongo shell环境

    6.在windows中通过工具访问Linux机器中的mongoDB
    1.关闭iptables
    方法1.  service iptables stop
    方法2.   chkconfig --level 2345 iptables off && chkconfig --level 2345 ip6tables off

    2.通过工具来访问mongodb
    推荐使用mongovue
    http://www.mongovue.com/

    觉得非常的棒,要比mysql和oracle简单多了。因为只是初学先写这些,改天接着写
Open Toolbar