Hacder's Lab
哥德疯了


mongodb 整理 (1)

July 18th, 2011 . by hacder

 MongoDB的启动和参数

  1. /usr/local/mongodb/bin/mongodb   --dbpath /data/mongodb/db/ --logpath /data/logs/mongodb --logappend --fork

参数说明
–dbpath   #指定db文件存放的目录,每个数据库会在其中创建一个子目录。用于防止同一个实例多次运行的mongod.lock也保存在此目录中
–port #指定mongod服务使用的端口,Web管理端口在这个port的基础上+1000
–fork #设置mongo服务为后台(Daemon)运行
–logpath #指定log文件的目录和文件名
–logappend #设置每次log采用追加模式(默认是覆写模式)
–rest #关闭rest api功能
–nohttpinterface #关闭web管理功能
–auth #指定mongo使用身份验证机制
–bindip #用逗号分隔ip地址,用来指定对外服务的绑定ip,一般设置为空,及绑定在本机所有可用ip上,如有需要可以单独指定
–f #将所有前面介绍的参数都可以存放到一个配置文件中,然后用这个参数调用配置文件来启动mongod服务
–journal #开启日志功能,通过保存操作日志来降低单机故障的恢复时间,在1.8版本后正式加入,取代在1.7.5版本中的dur参数。
–syncdelay # 执行sync的间隔,单位为秒。
–directoryperdb # 每个db存放在单独的目录中,建议设置该参数。
–maxConns # 最大连接数
–repairpath # 执行repair时的临时目录。在如果没有开启journal,异常宕机后重启,必须执行repair操作。
另外,mongod也和mysqld一样支持将参数写入到一个配置文本文件中,然后通过config参数来引用此配置文件:

  1. ./mongod --config /etc/mongo.cnf

MongoDB 安装目录下文件

  • mongod:数据库服务端,类似mysqld,每个实例启动一个进程,可以fork为Daemon运行
  • mongo:客户端命令行工具,类似sqlplus/mysql,其实也是一个js解释器,支持js语法
  • mongodump/mongorestore:将数据导入为bson格式的文件/将bson文件恢复为数据库,类似xtracbackup
  • mongoexport/mongoimport:将collection导出为json/csv格式数据/将数据导入数据库,类似mysqldump/mysqlimport
  • bsondump:将bson格式的文件转储为json格式的数据
  • mongos:分片路由,如果使用了sharding功能,则应用程序连接的是mongos而不是mongod
  • mongofiles:GridFS管理工具
  • mongostat:实时监控工具

关闭/停止 MongoDB

  1. a. db.shutdownServer() #推荐优先使用
  2. b. ctrl + c #在不使用 --fork参数的时候可以使用,可能会造成数据文件损坏
  3. c. kill / kill -2 #在无法使用 a和b的情况下使用,可能会造成数据文件损坏
  4. d. kill -9

查看MongoDB状态

  1. a.db.runCommand({"serverStatus":1})
  2. b.MONGO_HOME/bin/mongostat

4. 添加用户,切换用户 使 –auth参数起效

  1. db.addUser("root","123")
  2. db.addUser("read_only","123",true); #第3个参数表示设置readonly的状态
  3.  
  4. db.auth("read_only","123")

数据库备份
有4种方法备份数据库

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

 修复数据库
当数据库文件遭到损坏的时候有3种方法修复数据文件

  1. a. MONGO_HOME/bin/mongod --repair
  2. b. use test
  3. db.repairDatabase()
  4. c. db.runCommand({"repairDatabase":1});

原创文章如转载,请注明:转载自 Hacder's Lab [ http://www.hacder.com ]
本文链接地址:http://www.hacder.com/archives/1035.html

Leave a Reply

You must be logged in to post a comment.