MongoDB备份

MongoDB备份、恢复/监控

备份、恢复

备份的语法

mongodump -h dbhost -d dbname -o dbdirectory

-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

-d:需要备份的数据库实例,例如:test

-o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

恢复的语法

mongorestore -h <hostname><:port> -d dbname <path>


--host <:port>, -h <:port>:MongoDB所在服务器地址,默认为: localhost:27017

--db , -d :需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

--drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

<path>:mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。

--dir:指定备份的目录。你不能同时指定 <path> 和 --dir 选项。
  • 备份数据库
mongodump -d alice -o /root/alice

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

mongorestore -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 --drop 文件存在路径
  • 备份集合**(备份dat文件)**
mongoexport -d alice -c test1 -o /root/test1.dat

mongoexport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 -f 字段 -o 文件存在路径
  • 恢复整个集合非csv文件
mongimport -d alice -c test1 --upsert --drop /root/test.dat

mongoimport -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -c 表名 --upsert --drop 文件名
  • 备份字段**(备份csv文件)**
mongoexport -d alice -c test1 -f name --type=csv -o /root/name.csv
  • 恢复字段
mongoimport -d alice -c test1 --type=csv --headerline --upsert --drop /root/name.csv
  • 恢复部分字段
mongoimport -d alice -c test1 --upsertFields age --drop name.json
监控

在你已经安装部署并允许MongoDB服务后,你必须要了解MongoDB的运行情况,并查看MongoDB的性能。这样在大流量得情况下可以很好的应对并保证MongoDB正常运作。

mongostat命令

mongostat是mongodb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。

mongostat
或者
mongostat --host 172.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提供每个集合的水平的统计数据。默认情况下,mongotop返回值的每一秒。

mongotop
  • ns:数据库命名空间
  • db:数据库的名称
  • total:mongod在这个命令空间上花费的总时间
  • read:在这个命令空间上mongod执行读操作花费的时间
  • write:在这个命名空间上mongod进行写操作花费的时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值