MongoDB 数据库管理(不定时更新)

之前的几篇文章大致说了副本集的搭建、副本集的管理,现在说下MongoDB数据库的管理。

:查看服务器状态:db.serverStatus()

zjy:PRIMARY> db.serverStatus()
{
    "host" : "zhoujinyi",
    "version" : "3.0.4",
    "process" : "mongod",
    "pid" : NumberLong(3939),
    "uptime" : 149427,
    "uptimeMillis" : NumberLong(149427393),
    "uptimeEstimate" : 140539,
    "localTime" : ISODate("2015-07-01T14:06:12.922Z"),
    "asserts" : {
        "regular" : 0,
        "warning" : 0,
        "msg" : 0,
        "user" : 30,
        "rollovers" : 0
    },
    "backgroundFlushing" : {
        "flushes" : 2490,
        "total_ms" : 10410,
        "average_ms" : 4.180722891566265,
        "last_ms" : 10,
        "last_finished" : ISODate("2015-07-01T14:05:47.284Z")
    },
    "connections" : {
        "current" : 7,
        "available" : 43,
        "totalCreated" : NumberLong(10016)
    },
...
...
    "network" : {
        "bytesIn" : 23165291,
        "bytesOut" : 25295567,
        "numRequests" : 209093
    },
    "opcounters" : {
        "insert" : 9,
        "query" : 53,
        "update" : 9,
        "delete" : 0,
        "getmore" : 59219,
        "command" : 149822
    },
    "opcountersRepl" : {
        "insert" : 0,
        "query" : 0,
        "update" : 0,
        "delete" : 0,
        "getmore" : 0,
        "command" : 0
    },
    "repl" : {
        "setName" : "zjy",
        "setVersion" : 31303,
        "ismaster" : true,
        "secondary" : false,
        "hosts" : [
            "127.0.0.1:27017",
            "127.0.0.1:27018",
            "127.0.0.1:27019"
        ],
        "primary" : "127.0.0.1:27017",
        "me" : "127.0.0.1:27017",
        "electionId" : ObjectId("5592be327c7062c30c3bff24"),
        "rbid" : 652411007
    },
    "storageEngine" : {
        "name" : "mmapv1"
    },
    "writeBacksQueued" : false,
    "mem" : {
        "bits" : 64,
        "resident" : 130,
        "virtual" : 9710,
        "supported" : true,
        "mapped" : 4574,
        "mappedWithJournal" : 9148
    },
...
...
    "ok" : 1
}

通过上面看到MongoDB的版本、后台刷写情况、副本集情况、操作数量情况、进出网络情况、连接数情况和内存情况。

其中内存相关字段的含义是:单位是M
mapped:映射到内存的数据大小
visze:占用的虚拟内存大小
res:实际使用的内存大小
在上面的结果中,virtual是mapped的两倍,而mapped等于数据文件的大小,所以说vsize是数据文件的两倍,之所以会这样,是因为本例中,MongoDB开启了journal,需要在内存里多映射一次数据文件,如果关闭journal,则virtual和mapped大致相当。

也可以通过mongostat来查看:

[email protected]:~# mongostat
insert query update delete getmore command flushes mapped vsize    res faults qr|qw ar|aw netIn netOut conn set repl     time
    *0    *0     *0     *0       1     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  262b    11k    7 zjy  PRI 10:23:13
    *0    *0     *0     *0       0     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  215b    11k    7 zjy  PRI 10:23:14
    *0    *0     *0     *0       0     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  215b    11k    7 zjy  PRI 10:23:15

:查看数据库/表状态:db.stats()/db.coll.stats()

zjy:PRIMARY> db.stats()
{
    "db" : "test",
    "collections" : 7,
    "objects" : 36,
    "avgObjSize" : 417.1111111111111,
    "dataSize" : 15016,      #数据文件大小。
    "storageSize" : 1093632, #存储空间大小:datasize+集合两端预留的未使用空间。
    "numExtents" : 7,
    "indexes" : 4,
    "indexSize" : 32704,
    "fileSize" : 67108864, #物理文件大小:包括预分配
    "nsSizeMB" : 16,
    "extentFreeList" : {
        "num" : 0,
        "totalSize" : 0
    },
    "dataFileVersion" : {
        "major" : 4,
        "minor" : 22
    },
    "ok" : 1
}

通过上面看到数据库的名称,集合(表)数量,索引数量、大小,数据文件大小,存储空间大小和物理文件大小。

,查看当前Query执行情况:db.currentOP():

zjy:PRIMARY> db.currentOP()
{
    "inprog" : [
        {
            "desc" : "conn4732",   #可与日志信息联系起来
            "threadId" : "0x33903c0",
            "connectionId" : 4732, #连接ID
            "opid" : 221672,       #操作标识,可以用这个ID来终止该操作:db.killOP(opid)
            "active" : true,       #表示线程是否在运行
            "secs_running" : 4,    #执行的时间
            "microsecs_running" : NumberLong(4999899),
            "op" : "getmore",      #操作类型:插入、删除、更新、查询
            "ns" : "local.oplog.rs", #操作的集合
            "query" : {
                "ts" : {
                    "$gte" : Timestamp(1435674461, 1)
                }
            },
            "client" : "127.0.0.1:52101",
            "numYields" : 0, #表示该操作交出锁,而使其他操作得以运行。
            "locks" : {      #锁信息

            },
            "waitingForLock" : false,
            "lockStats" : {
                "Global" : {
                    "acquireCount" : {
                        "r" : NumberLong(10)
                    }
                },
                "MMAPV1Journal" : {
                    "acquireCount" : {
                        "r" : NumberLong(5)
                    }
                },
                "Database" : {
                    "acquireCount" : {
                        "r" : NumberLong(5)
                    }
                },
                "oplog" : {
                    "acquireCount" : {
                        "R" : NumberLong(5)
                    }
                }
            }
        }......

通过上面看到当前执行的进程,类似MySQL的show processlist。可以添加过滤条件:

zjy:PRIMARY> db.currentOP({"ns":"test"})

:监控MongoDB各个状态:mongotop、mongostat

[email protected]:~# mongotop     #查看那个几个最繁忙
                     ns    total    read    write    2015-07-01T11:24:43-04:00
                    abc      0ms     0ms      0ms
                abc.AOE      0ms     0ms      0ms
                abc.aoe      0ms     0ms      0ms
     abc.system.indexes      0ms     0ms      0ms
          abc.system.js      0ms     0ms      0ms
  abc.system.namespaces      0ms     0ms      0ms
               abc.test      0ms     0ms      0ms
   admin.system.indexes      0ms     0ms      0ms
admin.system.namespaces      0ms     0ms      0ms
     admin.system.roles   
[email protected]:~# mongostat
insert query update delete getmore command flushes mapped vsize    res faults qr|qw ar|aw netIn netOut conn set repl     time
    *0    *0     *0     *0       0     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  215b    11k    7 zjy  PRI 11:26:21
    *0    *0     *0     *0       0     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  215b    11k    7 zjy  PRI 11:26:22
    *0    *0     *0     *0       0     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  215b    11k    7 zjy  PRI 11:26:23
    *0    *0     *0     *0       1     2|0       0   4.5G  9.5G 133.0M      0   0|0   0|0  262b    11k    7 zjy  PRI 11:26:24

上面insert、query、update、delete、getmore、command 每种对应操作的发生次数。

flushes:表示刷写到磁盘的次数。
mapped:表示映射到内存的数量,约等于数据目录大小。
vsize:表示正在使用的虚拟内存大小,通常为数据目录的2倍。(一次用于映射,一次用于日志系统)
res:表示正在使用的内存大小。
qr|qw:表示读写操作队列大小,即有多少读写操作被阻塞,等待进行处理。
ar|aw:表示活动客户端的数量,即正在进行读写操作的客户端。
netId:表示通过网络传输进来的字节数。
netou:t表示通过网络传输出的字节数。
Conn:表示服务器打开的连接数。
time:表示统计的时间。

:日志分割,db.adminCommand({"logRotate":1})

zjy:PRIMARY> db.adminCommand({"logRotate":1})
{ "ok" : 1 }

类似MySQL的flush log。

时间: 2024-11-06 09:46:29

MongoDB 数据库管理(不定时更新)的相关文章

iOS 属性修饰符记录 --不定时更新

重新审视了一下OC在属性修饰符,特意记录一下来.以后不定时更新 > retain:只有在非ARC下才会有效,所有如果在ARC下使用了retain修饰也白搭 如以下的data属性用retain修饰: #import <UIKit/UIKit.h> @interface MyView : UIView @property(nonatomic, retain) NSMUtableArray* data; @end 在对应的setter方法中,会以如下代码实现: if (_data != new

Android学习笔记(不定时更新)

在很久之前,我就想写写博客,不过本人比较懒,这几天心血来潮,决定开写博客,因为学习,实习,面试关系,不会定时更新,以下是我所学的知识,总结分享一下,如有不正确,希望各位轻喷. QQ:545662362.欢迎交流,因为第一次写博客,格式什么的也不是特别好.好了,学习目录如下 1.Android 开发环境搭建 2.Android 应用程序 3.Android 常用基本控件 4.Android 常用高级控件 5.Android 消息与广播 6.Service 后台服务 7.Android 数据存储与服

即日起,博客将不定时更新技术内容

Hello,everybody!这是我新开的博客,以后我会将我收藏的资源以及修改之后的资源发布到这里,希望对大家有所帮助. 同时,本人的个人贴吧也开通了,欢迎有志之士加入我这个大家庭,帮助更多开发者,共同学习,共同进步. 贴吧链接 吕昌辉吧 即日起,博客将不定时更新技术内容,布布扣,bubuko.com

apue第四章习题的一些拙见(不定时更新)

写在前面:最近要期末考试,看来真的是要不定时更新啦XD apue4.1: 由于在这里lstat是不跟随符号文件的,而stat是跟随符号文件的,这样一来,如果使用stat,而不使用lstat那么就无法观察到符号文件.在书上4.3姐中有提到. apue4.2: 首先我在ubuntu的shell上查看原来的umask是多少,结果是0002,这里touch一个文件是不确定的,但是其他者的权限中写的权限一定是没有的.因为创建一个文件所拥有的权限不光与umask有关还与应用程序自身在创建的时候使用的参数有关

linux下svn定时更新项目

方法一.用shell脚本定时更新项目 1.进入网站的根目录,假设项目位置放在/var/www/test cd /var/www/test 2.建立脚本文件update.sh,分两步进行.首先利用touch命令创建,之后使用vim进行编辑. touch update.sh vim update.sh 输入以下内容 #!/bin/sh while true do svn update --username 你的svn用户名 --password 你的svn密码 sleep 60 done 这里我设置

[Android Traffic] 调整定时更新的频率(C2DM与退避算法)

转载自: http://blog.csdn.net/kesenhoo/article/details/7395253 Minimizing the Effect of Regular Updates[最小化定时更新操作的副作用] 最佳的定时更新频率是不确定的,通常由设备状态,网络连接状态,用户行为与用户定义明确的偏好而决定. Optimizing Battery Life([Android Training - 04]优化电池寿命)这一章有讨论如何根据设备状态来修改更新频率.里面介绍了当断开网络

KindEditor问题汇总【不定时更新】

问题一:KindEditor放在隐藏的元素里面,当用jq控制其显示时KindEditor编辑器显示不出来. 解决方法:在textarea 加个宽 就OK了<textarea id="Contents1" name="Contents1" rows="5" cols="30" style="width:500px"></textarea> 相关链接1:http://kindeditor

android之后台定时更新ui天气【Timer、service、broadcast、activity】

这个案例只是为了关联各个知识点,在实际开发中还有待优化 项目结构分析: Weather实体类:用来存放我们的天气实体 WeatherManager: 用来操作Weather MainActivity:主acaitivy CityWeatherService:定时轮询来更新前台的信息 原理比较简单直接贴出代码: Weather: [java] view plaincopy package com.example.weatherdemo; public class Weather { private

MongoDB数组修改器更新数据

MongoDB数组修改器更新数据 2013-04-22 10:20:40      我来说两句    来源:姜志福 的BLOG    收藏  我要投稿 MongoDB数组修改器更新数据 这里,我们将了解一下数组修改器.数组,是我们经常看到和使用到的且非常有用的数据结构:它不仅可以通过索进行引用,还可以作为集合来使用.数组修改器,顾名思义,它是用来修改数组的,而不能用来修改整数或者字符串.数组修改器不多,就那么几个,但熟练掌握它后,将给我们带来非常方便的操作.下面,我们来了解一下: > db.us

android AppWidget的使用以及利用TimerTask实现widget的定时更新

第一步:首先是Widget的定义声明: 在资源文件下的xml文件夹中建立文件example_appwidget_info.xml: <?xml version="1.0" encoding="utf-8"?> <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android" android:initialLayout="@lay