mongoDB备份与监控

本文介绍了MongoDB的备份操作,包括使用mongodump进行数据库和集合的备份与还原,并详细解析了监控工具mongostat和mongotop的使用,如查询操作、更新操作、内存使用、网络流量等关键指标,帮助运维人员实时监控数据库健康状态。

备份

针对于数据库的备份,mongodb与mysql一样提供了对应的命令行工具,mongodump

  • 备份数据库
mongodump -d mydb1 -o /root/

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 
  • 备份数据库
mongodump -d mydb1 -o /root/

mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 
  • 数据库还原
mongorestore -d test --drop /root/mydb1

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
  • 导出集合
mongoexport -d mydb1 -c myset -o /root/users.dat

mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -o 文件存在路径
  • 导出字段
mongoexport -d mydb1 -c myset -f name --type=csv -o /root/myset.csv
  • 根据条件导出字段
mongoexport -d mydb1 -c myset -q '{age:{$gte:18}}' -o name.json
  • 还原整个集合非csv文件
mongoimport -d mydb1 -c myset --upsert --drop name.json

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名
  • 还原部分字段
mongoimport -d mydb1 -c myset --upsertFields age --drop name.json
  • 还原导出的csv
mongoimport -d mydb1 -c myset --type=csv --headerline --upsert --drop a.csv
  • 还原导出的dat文件
mongoimport -d mydb1 -c myset --upsert users.dat

监控

对mongodb的运行状态进行实时监控,以便于运维人员可以进行数据库运行健康状态的判断

mongostat使用
mongostat --host 127.0.0.1:27017
  • insert/s : 官方解释是每秒插入数据库的对象数量,如果是slave,则数值前有*,则表示复制集操作

  • query/s : 每秒的查询操作次数

  • update/s : 每秒的更新操作次数

  • delete/s : 每秒的删除操作次数

  • getmore/s: 每秒查询cursor(游标)时的getmore操作数

  • command: 每秒执行的命令数,在主从系统中会显示两个值(例如 3|0),分表代表 本地|复制 命令

  • dirty: 仅仅针对WiredTiger引擎

  • used:仅仅针对WiredTiger引擎,官网解释是正在使用中的缓存百分比

  • flushes:
    For WiredTiger引擎:指checkpoint的触发次数在一个轮询间隔期间
    For MMAPv1 引擎:每秒执行fsync将数据写入硬盘的次数
    注:一般都是0,间断性会是1, 通过计算两个1之间的间隔时间,可以大致了解多长时间flush一次。flush开销是很大的,如果频繁的flush,可能就要找找原因了

  • vsize: 虚拟内存使用量,单位MB (这是 在mongostat 最后一次调用的总数据)

  • res: 物理内存使用量,单位MB (这是 在mongostat 最后一次调用的总数据)
    注:这个和你用top看到的一样, vsize一般不会有大的变动, res会慢慢的上升,如果res经常突然下降,去查查是否有别的程序狂吃内存。

  • qr: 客户端等待从MongoDB实例读数据的队列长度

  • qw: 客户端等待从MongoDB实例写入数据的队列长度

  • ar: 执行读操作的活跃客户端数量

  • aw: 执行写操作的活客户端数量
    注:如果这两个数值很大,那么就是DB被堵住了,DB的处理速度不及请求速度。看看是否有开销很大的慢查询。如果查询一切正常,确实是负载很大,就需要加机器了

  • netIn:MongoDB实例的网络进流量

  • netOut:MongoDB实例的网络出流量
    注:此两项字段表名网络带宽压力,一般情况下,不会成为瓶颈

  • conn: 打开连接的总数,是qr,qw,ar,aw的总和
    注:MongoDB为每一个连接创建一个线程,线程的创建与释放也会有开销,所以尽量要适当配置连接数的启动参数,maxIncomingConnections,阿里工程师建议在5000以下,基本满足多数场景

mongotop使用
mongotop 
  • ns:数据库命名空间
  • db:数据库的名称
  • total:mongod在这个命令空间上花费的总时间
  • read:在这个命令空间上mongod执行读操作花费的时间
  • write:在这个命名空间上mongod进行写操作花费的时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值