linux下配置安装mongodb

来源:互联网 发布:如何评价宋思明知乎 编辑:程序博客网 时间:2024/05/16 18:29
  • 在官网http://www.mongodb.org/downloads下载mongodb
  • 解压 tar xzf mongodb-linux-x86_64-2.4.8.tgz
  • 创建mongodb存放的数据文件,我是在压缩后的当前目录建立dada/mongodb 
    • sudo mkdir data
    • cd data
    • mkdir mongodb
  • 进入mongodb-linux-x86_64-2.4.8/bin,启动mongodb
    • 输入命令:/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/bin/mongod--dbpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/data/mongodb/ --logpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/logs --logappend --port=27017 --fork
    • 然后过一段时间就会出现:about to fork child process, waiting until server is ready for connections.
      forked process: 29517
      all output going to: /home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/logs
      child process started successfully, parent exiting
    • 设置mongodb自动启动,将如下命令添加到 /etc/rc.local:/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/bin/mongod --dbpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/data/mongodb/ --logpath=/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/logs --logappend --port=27017 --fork
    • 检查端口是否启动,端口为:27017
    • 在bin文件夹执行mongo查看安装是否成功
    • connecting to: test,test是默认的一个collection,在mongodb中,collection相当于关系型数据库的表,但并不需提前创建,更不需要预先定义字段,更多关于coolection可以查看http://blog.csdn.net/kingfengks/article/details/6067429
  • (可选)在安装mongodb的用户下添加如下环境变量,以便直接使用mongodb bin目录下的命令
    PATH=$PATH:$HOME/bin:/home/zhongkeli/tools/mongodb-linux-x86_64-2.4.8/bin 
  • 以下是mongodb启动时的常用参数说明:
--bind_ip 绑定IP,绑定后只能绑定的IP访问服务
--dbpath 指定数据库目录
--port 指定数据库端口,默认是27107
--logpath 指定日志存放目录
--logappend 使用追加的方式写日志
--pidfilepath 指定进程文件,不指定则不产生进程文件
--journal 启用日志
--maxConns 最大的并发连接数,默认2000
--fork 将服务放到后台运行
--notablescan 不允许表扫描

--syncdelay 数据写入硬盘的时间(秒),0是不等待,直接写入

  • shell操作数据库:
    • 1.  超级用户相关: 
               1. #进入数据库admin 
                use admin 
               2. #增加或修改用户密码 
                db.addUser('name','pwd') 
               3. #查看用户列表 
                db.system.users.find() 
               4. #用户认证 
                db.auth('name','pwd') 
               5. #删除用户 
                db.removeUser('name') 
               6. #查看所有用户 
                show users 
               7. #查看所有数据库 
                show dbs 
               8. #查看所有的collection 
                show collections 
               9. #查看各collection的状态 
                db.printCollectionStats() 
              10. #查看主从复制状态 
                db.printReplicationInfo() 
              11. #修复数据库 
                db.repairDatabase() 
              12. #设置记录profiling,0=off 1=slow 2=all 
                db.setProfilingLevel(1) 
              13. #查看profiling 
                show profile 
              14. #拷贝数据库 
                db.copyDatabase('mail_addr','mail_addr_tmp') 
              15. #删除collection 
                db.mail_addr.drop() 
              16. #删除当前的数据库 
                db.dropDatabase() 
  • 2. 增删改 (其中下面的foo与user_addr为collection)
             1. #存储嵌套的对象 
                db.foo.save({'name':'ysz','address':{'city':'beijing','post':100096},'phone':[138,139]}) 
             2. #存储数组对象 
                db.user_addr.save({'Uid':'yushunzhi@sohu.com','Al':['test-1@sohu.com','test-2@sohu.com']}) 
             3. #根据query条件修改,如果不存在则插入,允许修改多条记录 
                db.foo.update({'yy':5},{'$set':{'xx':2}},upsert=true,multi=true) 
             4. #删除yy=5的记录 
                db.foo.remove({'yy':5}) 
             5. #删除所有的记录 
                db.foo.remove() 
  •    3. 索引 (其中下面的foo与user_addr为collection)
             1. #增加索引:1(ascending),-1(descending) 
             2. db.foo.ensureIndex({firstname: 1, lastname: 1}, {unique: true}); 
             3. #索引子对象 
             4. db.user_addr.ensureIndex({'Al.Em': 1}) 
             5. #查看索引信息 
             6. db.foo.getIndexes() 
             7. db.foo.getIndexKeys() 
             8. #根据索引名删除索引 
             9. db.user_addr.dropIndex('Al.Em_1') 
  • 4. 查询 (其中下面的foo与user_addr为collection)
             1. #查找所有 
            2. db.foo.find() 
            3. #查找一条记录 
            4. db.foo.findOne() 
            5. #根据条件检索10条记录 
            6. db.foo.find({'msg':'Hello 1'}).limit(10) 
            7. #sort排序 
            8. db.deliver_status.find({'From':'ixigua@sina.com'}).sort({'Dt',-1}) 
             9. db.deliver_status.find().sort({'Ct':-1}).limit(1) 
            10. #count操作 
            11. db.user_addr.count() 
            12. #distinct操作,查询指定列,去重复 
            13. db.foo.distinct('msg') 
            14. #”>=”操作 
            15. db.foo.find({"timestamp": {"$gte" : 2}}) 
            16. #子对象的查找 
            17. db.foo.find({'address.city':'beijing'}) 
  •    5. 管理  (其中下面的deliver_status为collection)
             1. #查看collection数据的大小 
             2. db.deliver_status.dataSize() 
             3. #查看colleciont状态 
             4. db.deliver_status.stats() 
             5. #查询所有索引的大小 
             6. db.deliver_status.totalIndexSize() 
  • 更多的shell操作可以查看http://quanzhong.iteye.com/blog/916237

参考文献:http://hi.baidu.com/allen_zzw/item/046e97cbed23a5df964452b8

http://www.hblpf.com/?post=20

http://quanzhong.iteye.com/blog/916237

http://blog.csdn.net/kingfengks/article/details/6067429


1.下载安装包
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.8.2.tgz
下载完成后解压缩压缩包
tar zxf mongodb-linux-i686-1.8.2.tgz
 
2. 安装准备
将mongodb移动到/usr/local/server/mongdb文件夹
mv mongodb-linux-i686-1.8.2 /usr/local/mongodb
 
创建数据库文件夹与日志文件
mkdir /usr/local/mongodb/data
touch /usr/local/mongodb/logs
 
3. 设置开机自启动
将mongodb启动项目追加入rc.local保证mongodb在服务器开机时启动 
echo "/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data –logpath=/usr/local/server/mongodb/logs –logappend  --auth –port=27017" >> /etc/rc.local
 
4. 启动mongodb
cd到mongodb目录下的bin文件夹启动mongodb
//下面这个是需要权限的登录方式, 用户连接需要用户名和密码
/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend  --auth  --port=27017 --fork


//这个是不需要密码的
/usr/local/server/mongodb/bin/mongod --dbpath=/usr/local/server/mongodb/data --logpath=/usr/local/server/mongodb/logs --logappend  --port=27017 --fork


5. 参数解释: --dbpath 数据库路径(数据文件)
--logpath 日志文件路径
--master 指定为主机器
--slave 指定为从机器
--source 指定主机器的IP地址
--pologSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
--logappend 日志文件末尾添加
--port 启用端口号
--fork 在后台运行
--only 指定只复制哪一个数据库
--slavedelay 指从复制检测的时间间隔
--auth 是否需要验证权限登录(用户名和密码)


-h [ --help ]             show this usage information
--version                 show version information
-f [ --config ] arg       configuration file specifying additional options
--port arg                specify port number
--bind_ip arg             local ip address to bind listener - all local ips
                           bound by default
-v [ --verbose ]          be more verbose (include multiple times for more
                           verbosity e.g. -vvvvv)
--dbpath arg (=/data/db/) directory for datafiles    指定数据存放目录
--quiet                   quieter output   静默模式
--logpath arg             file to send all output to instead of stdout   指定日志存放目录
--logappend               appnd to logpath instead of over-writing 指定日志是以追加还是以覆盖的方式写入日志文件
--fork                    fork server process   以创建子进程的方式运行
--cpu                     periodically show cpu and iowait utilization 周期性的显示cpu和io的使用情况
--noauth                  run without security 无认证模式运行
--auth                    run with security 认证模式运行
--objcheck                inspect client data for validity on receipt 检查客户端输入数据的有效性检查
--quota                   enable db quota management   开始数据库配额的管理
--quotaFiles arg          number of files allower per db, requires --quota 规定每个数据库允许的文件数
--appsrvpath arg          root directory for the babble app server 
--nocursors               diagnostic/debugging option 调试诊断选项
--nohints                 ignore query hints 忽略查询命中率
--nohttpinterface         disable http interface 关闭http接口,默认是28017
--noscripting             disable scripting engine 关闭脚本引擎
--noprealloc              disable data file preallocation 关闭数据库文件大小预分配
--smallfiles              use a smaller default file size 使用较小的默认文件大小
--nssize arg (=16)        .ns file size (in MB) for new databases 新数据库ns文件的默认大小
--diaglog arg             0=off 1=W 2=R 3=both 7=W+some reads 提供的方式,是只读,只写,还是读写都行,还是主要写+部分的读模式
--sysinfo                 print some diagnostic system information 打印系统诊断信息
--upgrade                 upgrade db if needed 如果需要就更新数据库
--repair                  run repair on all dbs 修复所有的数据库
--notablescan             do not allow table scans 不运行表扫描
--syncdelay arg (=60)     seconds between disk syncs (0 for never) 系统同步刷新磁盘的时间,默认是60s

Replication options:
--master              master mode 主复制模式
--slave               slave mode 从复制模式
--source arg          when slave: specify master as <server:port> 当为从时,指定主的地址和端口
--only arg            when slave: specify a single database to replicate 当为从时,指定需要从主复制的单一库
--pairwith arg        address of server to pair with
--arbiter arg         address of arbiter server 仲裁服务器,在主主中和pair中用到
--autoresync          automatically resync if slave data is stale 自动同步从的数据
--oplogSize arg       size limit (in MB) for op log 指定操作日志的大小
--opIdMem arg         size limit (in bytes) for in memory storage of op ids指定存储操作日志的内存大小

Sharding options:
--configsvr           declare this is a config db of a cluster 指定shard中的配置服务器
--shardsvr            declare this is a shard db of a cluster 指定shard服务器
 
6. 进入数据库的CLI管理界面
cd到mongodb目录下的bin文件夹,执行命令./mongo
运行如下:
[root@namenode mongodb]# ./bin/mongo
MongoDB shell version: 1.8.2
connecting to: test
> use test;
switched to db test
 
若数据库出现如不能连上,则是一个data目录下的mongod.lock文件的问题,可以用如下的修复的命令,
mongod --repair

0 0