Mongo的命令行

Mongo shell

MongoDB 的命令行管理工具,也是 MongoDB 最常用的工具,功能非常丰富,比如常用的

  • show dbs / show tables / show users ...
  • db.stats() 查看 db 的元数据信息
  • db.colleciont.stats() 查看集合的元数据信息
  • db.serverStatus() 查看数据库状态信息
  • rs.conf() 查看复制集的配置信息
  • rs.status() 查看复制集的状态信息
  • rs.reconfig() 更改复制集的配置
  • db.printSlaveReplicationInfo() 查看主备同步延时
  • db.runCommand() 执行命令
  • ...

值得一提的是,Mongo shell 还能直接执行js 脚本,对于单个语句没法完成的操作,可以写个简单的 js 脚本,然后通过 mongo shell 来调用,这个功能对于日常的管理、分析等非常方便。

mongo --host localhost:27017 do_something.js

mongo shell 还支持命令历史、命令补全等非常贴心的功能,用起来跟linux bash 的体验差不多。

mongostat

mongostat 也是很常用的工具,能查看MongoDB 实时的增删改查操作的 pqs、以及内存使用、网络吞吐的信息。

 
  1. $mongostat --host localhost:27017

  2. insert query update delete getmore command % dirty % used flushes vsize res qr|qw ar|aw netIn netOut conn time

  3. 7803 93665 15601 7803 0 15604|0 6.1 79.7 0 1.8G 1.1G 0|0 14|2 17m 31m 0 2016-11-29T16:42:00+08:00

  4. 7921 95062 15842 7922 0 15842|0 6.4 80.0 0 1.8G 1.1G 7|0 10|1 17m 32m 0 2016-11-29T16:42:01+08:00

  5. 7996 95816 15985 7995 0 15978|0 6.5 79.6 0 1.8G 1.1G 2|0 17|1 17m 29m 0 2016-11-29T16:42:02+08:00

  6. 7995 96038 16001 7995 0 16009|0 7.3 84.7 0 1.8G 1.1G 1|0 13|3 17m 30m 0 2016-11-29T16:42:03+08:00

  7. 7836 93945 15672 7836 0 15665|0 7.3 84.5 0 1.8G 1.1G 0|0 13|1 17m 29m 0 2016-11-29T16:42:04+08:00

mongostat 也支持按复制集的方式去连接,可以同时查看复制集多个节点的实时性能数据。

如果使用的是MongoDB 3.2的最新版本,dirty持续超过20 或者 used 持续超过95,说明实例的访问已经超负荷了,可能 cpu 或 IO 资源已经不够用了,需要重点关注下。

mongotop

mongotop 能实时查看 MongoDB 在哪些集合上花的读写时间最多,能快速找出实例里的热点集合。

 
  1. $mongotop --host localhost:27017

  2. ns total read write 2016-11-29T16:52:54+08:00

  3. sb.sbtest30 673ms 0ms 673ms

  4. sb.sbtest32 666ms 0ms 666ms

  5. sb.sbtest56 665ms 0ms 665ms

  6. sb.sbtest36 660ms 0ms 660ms

  7. sb.sbtest38 651ms 0ms 651ms

  8. sb.sbtest29 648ms 0ms 648ms

  9. sb.sbtest21 647ms 0ms 647ms

  10. sb.sbtest5 647ms 0ms 647ms

  11. sb.sbtest53 647ms 0ms 647ms

  12. sb.sbtest28 644ms 0ms 644ms

mongoimport/mongoexport

mongoexport 支持以 JSON 或者 CSV 的格式导出 MongoDB 存储的数据,然后使用 mongoimport 将其导入到其他的实例;mongoexport 支持导出单个集合的数据,并能指定查询条件来导出部分符合条件的数据。

mongoexport --db sales --collection contacts --query '{"field": 1}'

mongodump/mongorestore

mongodump 与 mongoexport 类似,可用于导出 MongoDB 的数据,不同的时,mongodump 导出的数据以 BSON 的格式存储(BSON 格式数据可以通过 bsondump 工具来转换为 json),存储空间占用上比 JSON、CSV 更小,另外,mongodump 还支持对导出的数据进行压缩、归档,所以如果要对 MongoDB 的数据进行定期备份,推荐使用 mongodump 或 直接进行物理文件备份。

mongodump --archive=test.20150715.gz --gzip --db test

mongooplog

mongooplog 可以用于2个独立的 MongoDB 实例间的数据同步,它会不断的从源实例拉取 oplog(tailable cursor),然后重放到目标实例。

mongooplog  --from mongodb0.example.net --host mongodb1.example.net

mongofiles

mongofiles 是 gridfs 的命令行客户端,用于向 MongoDB 存储、读取文件,mongofiles 支持put、get、list等接口。

 
  1. $mongofiles --host localhost:27017 put hello

  2. $mongofiles --host localhost:27017 get hello

mongosniff

mongosniff 是 MongoDB 的抓包工具,直接下载二进制包可能并不包含这个工具,需要下载源码编译出来,mongosniff 可以抓取某个 MongoDB 实例的所有请求及应答数据,对于 MongoDB driver 的开发者非常有帮助,也可以用于一些网络问题的定位。

 
  1. $sudo mongosniff --source NET bond0 27017 | head -n 10

  2. sniffing... 27017

  3. 10.1.2.3.3:31405 -->> 10.1.2.3.4:27017 172 bytes id:165a40 1464896

  4. command: replSetHeartbeat database: admin metadata: { $replData: 1 } commandArgs: { replSetHeartbeat: "mongo-9554", configVersion: 23, from: "r101072137.sqa.zmf:9554", fromId: 0, term: 69 } inputDocs: [ ]

  5. 10.1.2.3.4:27017 <<-- 10.1.2.3.3:31405 445 bytes id:133027 1257511

  6. commandReply: { ok: 1.0, state: 2, v: 23, hbmsg: "", set: "mongo-9554", syncingTo: "r101072137.sqa.zmf:9554", term: 69, primaryId: 0, durableOpTime: { ts: Timestamp 1480088534000|1, t: 69 }, opTime: { ts: Timestamp 1480088534000|1, t: 69 } } metadata: { $replData: { term: 69, lastOpCommitted: { ts: Timestamp 1480088534000|1, t: 69 }, lastOpVisible: { ts: Timestamp 1479887534000|1, t: 68 }, configVersion: 23, replicaSetId: ObjectId('000000000000000000000000'), primaryIndex: 0, syncSourceIndex: 0 } } outputDocs: [ ]

mongoperf

mongoperf 的名字很容易误导人,乍一看以为是 mongodb 的性能测试工具,实际上它是用来测试磁盘 IO 性能的工具。

 
  1. echo "{nThreads:16,fileSizeMB:1000,r:true,w:true}" | mongoperf

  2. new thread, total running : 1

  3. read:1 write:1

  4. 2958 ops/sec 11 MB/sec

  5. 3022 ops/sec 11 MB/sec

  6. 3023 ops/sec 11 MB/sec

  7. 2832 ops/sec 11 MB/sec

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值