MongoDB管理(2)

一. 命令行操作

  1. 使用count():
   db.test.count()
  1. 使用eval
    在启动时输入:>mongo --eval="printjson(db.test.count())"

二. 进程控制

  1. 查看活动进程:
    >db.currentOp() 查看当前活动的进程

  2. 结束进程:

   db.killOp(进程号Opid)   
    //结束Opid号进程

三. 监控

MongoDB DBA很重要的工作就是监控系统的状态和性能。

  1. 使用管理接口
    启动mongodb时,默认会启动一个基本的HTTP服务器,服务器的监听端口号比主服务的端口号大1000。启动后,在浏览器输入http://localhost:28017,可以看到管理接口(如果启动了–port指定接口,则HTTP端口比这个大1000),可以看到断言,锁,索引,复制等信息

  2. serverStatus
    使用:>db.runCommand({"serverStatus":1}) 查看服务器信息
    不再赘述结果,提供代码说明:
    globalLock: 表示全局写入锁占用了服务器多少时间
    mem: 包含服务器内存映射了多少数据
    indexCounters: 表示B树在磁盘检索和内存检索的次数,如果这个比值看是上升就要考虑添加内存了,否则性能低下
    backgroundFlushing: 表示后台做了多少次fsync以及时间
    opcounters: 包含每种主要操作的次数
    asserts: 统计了断言的次数
    注意:
    serverStatus结构中的所有技术都是在服务器启动时计算的,多国过大就会复位。发生复位所有计数器都会复位,asserts中的roolovers值会增加

  3. mongostat
    mongostat输出一些serverStatus提供的重要信息。每秒输出新的一行,多个列,和serverStatus相对应,在启动时输入:
    >mongostat,按control+c停止,结果不赘述,提供代码说明:
    insert: 每秒插入量
    query: 每秒查询量
    update: 每秒更新量
    delete: 每秒删除量
    locked: 锁定量
    qr|qw : 客户端查询排队长度(读|写)
    ar|aw: 活跃客户端量(读|写)
    conn: 连接数
    time: 当前时间

四. 数据导出mongoexport

如果需要将数据导入或导出,可以使用MongoDB提供的mongoexport和mongoimport工具:
1. 常用导出方法

>mongoexport -d test -c t1 -o t1.dat

代码说明:

  • -d: 指明使用的库
  • -c: 指明要导出的集合
  • -o: 指明要导出的文件名,也可以指定路径

2.导出CSV格式的文件

>mongoexport -d test -c t1 -csv -f num -o t1.dat

代码说明:

  • -csv: 指明导出为CSV格式
  • -f : 指明需要导出哪些例

五. 数据导入mongoimport

  1. 导入JSON数据
>mongoimport -d test -c t1 -file t1.dat

将t1.dat文件导入test库中的t1集合中,会隐式创建集合结构

2.导入CSV数据:

>mongoimport -d test -c t1 --type csv --headerline -file t1.dat
  • -type: 指明导入文件格式
  • -headerline:指明不导入第一行,因为第一行是列名
  • –file:指明要导入的文件路径

六. 数据备份和修复

  1. 数据文件备份:在关闭服务器情况下,直接复制数据目录db
  2. 运行时备份mongod
>mongodump -d test

备份test数据库的数据,此时会在当前目录下创建一个dump目录,用于存放备份出来的文件,也可以指定备份存放的目录:

>mongodump -d test -o D:\data\dump

3.数据恢复mongorestore
mongorestore获取mongodump的输出结果,并将备份的数据插入到运行的MongoDB实例中

>mongorestore -d test dump/*

4.fsync和锁
mongodump和mongorestore失去了获取实时数据视图的能力。而fsync命令能在MongoDB运行时复制数据目录并且不会损毁数据:

>db.runCommand({ "fsync":1 , "lock":1 })

有了fsync命令,就可以不用停掉服务器,也不用牺牲备份的实时特性。只是会导致写入操作暂时被阻塞。唯一不耽误读写还能保证实时快照的备份方式就是从服务器备份
数据备份好了,就要进行解锁:

>db.$cmd.sys.unlock.findOne()
>db.currentOp()

运行db.currentOp查看结果

5.从属备份
前面的方法不但可以用到主服务器上,也可以用在从服务器上,而且效果非常好,推荐使用。

6.数据恢复:

>db.repairDatabase()
//恢复数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值