码迷,mamicode.com
首页 > 数据库 > 详细

MongoDB-服务器管理

时间:2016-05-23 17:00:52      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:

前言

      本文主要涉及一下内容:数据库的备份和恢复,对于任一数据库来说备份至关重要;数据的导入和导出;数据库修复;数据库状态监控工具mongostat;在使用过程遇到其他命令会总结在此。

1.数据库的备份和恢复

1.1 复制数据文件

备份:使用此方法时必须保证数据文件不发生变化,可以使用fsynclock命令,> db.fsyncLock()

      一旦运行该命令,就会锁定数据库,禁止任何写入,并进行同步,把数据刷到磁盘。当命令返回后,就可以复制数据文件了,如备份名为myDB的数据库,只需复制所有名为myDB.*的文件,如果使用了—directoryperdb选项,只需复制该数据库对应的整个数据目录。复制完成后,使用> db.fsyncUnlock()解锁数据库。

注意:如果启用了身份验证,那么,在调用fsyncLock和fsyncUnlock期间不要关闭shell否则只能重启mongod服务了。

恢复:保证mongod服务没启动,待恢复目录为空,将备份的数据文件拷贝到数据库目录,最后启动mongod服务即可。

1.2 使用mongodump

      使用mongodump可以单独备份数据库,集合,只不过备份和恢复的比较慢。可以使用mongodump –help查看可用选项。

备份:

备份整个foo数据库

   mongodump –h 127.0.0.1:30000 –d foo –o /data/dbback/foo

备份foo数据库中的bar集合

   mongodump –h 127.0.0.1:30000 –d foo –c foo.bar –o /data/dbback/foo/bar

备份多个集合,foo中的bar,info集合,使用逗号隔开

   mongodump –h 127.0.0.1:30000 –d foo –c foo.bar, foo.infi –o /data/dbback/foo/cols

恢复:

使用mongorestore命令,其中有两个选项值得一提:

   --drop:在恢复前删除现有集合,否则直接插入现有集合中

   --noobjcheck:忽略对象插入集合之前的验证步骤

恢复单个数据库

   mongorestore –h 127.0.0.1:30000 –d foo –dir /data/dbback/foo  

恢复单个集合

   mongorestore –h 127.0.0.1:30000 –d foo –c foo.bar –dir /data/dbback/foo/bar

恢复多个集合

   mongorestore –h 127.0.0.1:30000 –d foo –c foo.bar,foo.infi –dir /data/dbback/foo /cols

1.3 备份副本集

      直接使用复制数据文件的方式备份,这种方式备份副本集时无需做任何修改。

1.4 备份分片集群

第一步:关闭均衡器,

第二步:连接mongos执行mongodump备份

第三步:启用均衡器,

恢复备份的话,使用mongorestore连接到一个mongos执行即可

备份单个分片和备份单个服务器一样。

2.数据的导入和导出

数据导入导出就是两个命令:mongoimport和mongoexport

mongoimport,可以把CSV, TSV或者JSON格式的数据导入mongodb,其中几个有用的选项:

   --headerline:对于CSV,TSV格式文件,使用第一行作为字段名称

   --drop:导入前删除集合,否则追加集合后面

   --ignoreblanks:不导入空字段

mongoimport –h 127.0.0.1:30000 –d foo –c foo.bar –type csv –headerline < csvfile

mongoexport,可以把mongodb数据导出JSON,CSV格式的文件。其中几个有用的选项:

   --q:指定查询条件导出数据,默认为{}

   --f:指定导出的字段名称

mongoexport –h 127.0.0.1:30000 –d foo –c foo.bar –q {} –type=csv > bar.csv

3.数据库状态监控

      使用mongostat默认每一秒输出服务当前状态,输出主要字段说明表,使用方法mongostat –port 30000。

      使用db.currentOp()可以查看数据库当前执行的操作有哪些。

表1 mongostat字段说明

insert

每秒插入的次数

query

每秒查询的次数

update

每秒更新的次数

delete

每秒删除的次数

getmore

每秒查询游标getmore次数

command

每秒执行的命令树,除增删改查,还有其它统计命令

flushes

每秒执行fsync将数据写入磁盘的次数

mapped

所有被mmap映射进内存的数据量,单位M

vsize

虚拟内存使用量,单位M

res

物理内存使用量,单位M

faults

每秒访问失败的次数,当faults居高不下时,一般是以下几个原因:

1. 磁盘空间不足

2. 内存不足

3. 磁盘IO达到瓶颈

qr|qw

表示读,写队列,高并发时队列的值一般会升高

ar|aw

表示活跃的读,写客户端数

netIn

每秒通过网络输入的字节数

netOut

每秒通过网络输出的字节数

conn

服务器打开的连接数,包括输入和输出连接

MongoDB-服务器管理

标签:

原文地址:http://www.cnblogs.com/cyhe/p/5520456.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!