MongoDB管理与监控
来源:互联网 发布:rj45 网络变压器 无灯 编辑:程序博客网 时间:2024/06/05 17:53
MongoDB学习笔记系列博客
一,MongoDB的启动
Windows平台安装MongoDB
Linux平台安装MongoDB
MongoDB连接
二,MongoDB的停止
> use adminswitched to db admin> db.shutdownServer()
三,数据的导入与导出
MongoDB自带了两个导入、导出的工具:mongoimport和mongoexport。可以通过mongoimport导入JSON、CSV和TSV文件,这通常用于从关系型数据库想MongoDB加载数据。
mongoimport -d stocks -c values --type csv --headerline stocks.csv
本例中,将一个名为stocks.csv的CSV文件导入到了stocks数据库的values集合里。–headerline标志标明了CSV的第一行包含字段名。可以通过mongoimport –help看到所有的导入选项。
可以通过mongoimport 将一个集合的所有数据导出到一个JSON或CSV文件里。
mongoexport -d stocks -c values -o stocks.csv
这条命令会将数据导出到stocks.csv文件。通过mongoexport –help看到所有的导入选项。
四,MongoDB备份与恢复
http://write.blog.csdn.net/mdeditor#!postId=74855050
五,MongoDB监控
http://www.runoob.com/mongodb/mongodb-mongostat-mongotop.html
数据库命令serverStatus
这是一个数据库级别的命令,执行语句db.serverStatus(),输出有关此实例的各种信息,针对所有此实例上的数据库。
db.serverStatus()//只显示部分内容{"uptime" : 21.0, //表示此实例进程已激活的总时间,单位是秒"localTime" : ISODate("2017-07-09T05:28:17.007Z"), //表示实例所在服务器的当前时间"globalLock" : { "totalTime" : NumberLong(20935000), //数据库启动后运行的总时间,单位是微秒 "currentQueue" : { //表示因为锁引起读写队列数 "total" : 0, "readers" : 0, //等待读锁的操作数 "writers" : 0 //等待写锁的操作数 }, "activeClients" : { //连接的激活客户端写操作的总数 "total" : 10, "readers" : 0, //激活客户端读操作数 "writers" : 0 //激活客户端写操作数 } }, "mem" : { //表示当前内存使用情况 "bits" : 64, //mongod运行的目标机器的架构 "resident" : 96, //当前被使用的物理内存总量,单位MB "virtual" : 271, //MongoDB进程映射的虚拟内存大小,单位MB "supported" : true, //表示系统是否支持可扩展内存 "mapped" : 0, //映射数据文件所使用的内存大小,单位MB "mappedWithJournal" : 0 //映射journaling所使用的内存大小,单位MB },}
数据库命令stats
这是一个现实具体某个数据库统计信息的方法。
db.stats(){ "db" : "test", //表示统计的哪个数据库 "collections" : 4, //在这个数据接口包含的集合数 "views" : 0, "objects" : 112, //数据库中所有记录总数 "avgObjSize" : 234470.9375, //数据库中文档的平均大小,单位字节 "dataSize" : 26260745.0, //数据库中包含的所有文档记录的总大小 "storageSize" : 21544960.0, //分配给数据库的总的存储空间大小 "numExtents" : 0, //所有集合占用的区间总数 "indexes" : 8, //数据库中创建的索引总数 "indexSize" : 200704.0, //数据库中索引占用的存储空间大小 "ok" : 1.0}
top
top命令会显示每个数据库的操作计数器。如果应用程序使用了多个物理数据库,或者你想看看操作的平均耗时,可以使用这个命令。
use admindb.runCommand({top:1})
MMS
MMS(MongoDB Management Service)是一款基于云存储管理的MongoDB可视化管理及数据库备份的工具。
Web控制台
启动mongodb加上参数–httpinterface,以你的mongodb端口号+1000进行访问,就能看到MongoDB自带的Web控制台
http://localhost:28017/
影响数据库性能的几个重要因素
1,锁
MongoDB用一个锁确保数据的一致性。但如果某种操作时间运行,其他请求和操作将不得不等待这个锁,导致系统性能降低。为了验证是否由于锁降低了性能,我们可以坚持serverStatus输出的globalLock部分的数据。如果参数globalLock.currentQueue.total的值一直较大,说明系统中有许多请求在等待锁,同时表明并发问题影响了系统的性能。
2,内存
MongoDB通过内存映射数据文件,如果数据集很大,MongoDB将占用所有可用的系统内存。正式由于内存映射机制将内存的管理交给操作系统来完成,简化了MongoDB的内存管理,提高了数据库系统的性能,但是由于不能确定数据集的大小,需要多少内存也是个未知数。
通过serverStatus输出的关于内存使用状态方面的数据,我们能够深入地了解内存使用情况。检查参数mem.resident的值,如果超过了系统内存量并且还有大量的数据文件在磁盘上,表明内存过小。检查mem.mapped的值,如果这个值大于系统内存量,那么针对数据库的一些读操作将会引起操作系统的缺页操作,内存的换入换出将会降低系统的性能。
3,连接数
有时候,客户端的连接数超过了MongoDB数据库服务器处理请求的能力,这也会降低系统的性能。可以通过serverStatus输出的关于连接数方面的参数进一步分析。参数globalLock.activeClients表示当前正在进行读写操作客户端的连接数,current表示当前客户端到数据库实例的连接数,available表示可用连接数。对于读操作大的应用程序,我们可以增加复制集成员数,将读操作分发到secondary节点上,对于写操作大的应用程序,可以通过部署分片集群来分发写操作。
性能调优
1,为提升性能检查索引和查询
发现性能问题时,应该首先检查索引,让每个操作扫描尽可能少的文档。
保证没有冗余的索引,因为冗余索引会占用磁盘空间,消耗更多内存,每次写入时还需要更多工作。
2,添加内存
3,提升磁盘性能
4,水平扩展
5,寻求专业帮助
六,权限控制
基于角色的权限控制(Role-Based Access Control)
https://docs.mongodb.com/manual/security/
七,参考资料
《大数据存储 MongoDB实战指南》
《MonoDB实战》
《MongoDB权威指南》
菜鸟教程 MongoDB
- MongoDB管理与监控
- MongoDB的管理与监控
- mongodb系列之管理与监控篇
- MongoDB管理与开发精要《红丸出品》20.1 性能监控之mongosniff
- MongoDB管理与开发精要《红丸出品》20.2 性能监控之Mongostat
- MongoDB管理与开发精要《红丸出品》20.3 性能监控之db.serverStatus
- MongoDB管理与开发精要《红丸出品》20.4 性能监控之db.stats
- MongoDB管理与开发精要《红丸出品》20.5 性能监控之第三方工具
- MongoDB管理与维护
- mongodb的监控与性能优化
- mongodb的监控与性能优化
- mongodb的监控与性能优化
- mongodb的监控与性能优化
- mongodb的监控与性能优化
- AIX进程监控与管理
- AIX进程监控与管理
- 10.监控与管理虚拟机
- 告警监控与容量管理
- JDK环境变量配置
- 第一行代码—基于位置的服务笔记
- A
- jquery mobile笔记
- LTE学习笔记--PHY-Symbol与CP
- MongoDB管理与监控
- 【剑指offer】链表中环的入口结点
- UVA 2312:Crossword Answers (字符串处理)
- LTE学习笔记--PHY--PHY下行物理信道排布(FDD)
- 解决Centos环境下tomcat启动缓慢的问题
- 《机器学习实战》学习
- TCP server的实现,和多线程,多进程服务器
- String 字符串介绍
- 387. First Unique Character in a String