mongodb运维管理常用命令

# 连接MongoDB:
mongo 127.0.0.1:20001 -uroot -p"mima123456" --authenticationDatabase=admin
mongo --host 127.0.0.1 --port 20001 -uroot -p"mima123456" --authenticationDatabase=admin


# 查看MongoDB版本:
db.version()


# 查看当前所在哪个数据库:
db


# 查看当前正在执行的操作,包括查询和聚合操作:
db.currentOp()

查询正在等待lock的所有写操作信息:
db.currentOp(
{
"waitingForLock" : true,
$or: [
{ "op" : { "$in" : [ "insert", "update", "remove" ] } },
{ "command.findandmodify": { $exists: true } }
]
}
)

查询所有活动但没有工作(active but no yield)的操作:
db.currentOp(
{
"active" : true,
"numYields" : 0,
"waitingForLock" : false
}
)

查询db1 数据库上所有执行超过3秒的活动会话:
db.currentOp(
{
"active" : true,
"secs_running" : { "$gt" : 3 },
"ns" : /^db1/./
}
)

查询正在创建索引的操作:
db.adminCommand(
{
currentOp: true,
$or: [
{ op: "command", "command.createIndexes": { $exists: true } },
{ op: "none", "msg" : /^Index Build/ }
]
}
)


# 终止执行的操作:
db.killOp(opid) 

Shard cluster 环境下,读写操作可能会在多个shard 上有会话信息,所以killOp()需要同时kill 掉这些会话。 
MongoDB 4.0 后在一个shard节点上执行时,会同步kill 掉其他节点上的操作,之前的版则需要手工分别kill 这些操作。

use admin
db.aggregate( [
{ $currentOp : { allUsers: true } },
{ $match : <filter condition> } // Optional. Specify the condition to find the op.
// e.g. { op: "getmore", "command.collection": "someCollection" }
] )

{
"shard" : "shardB",
..
"opid" : "shardB:79014",
...
},
{
"shard" : "shardA",
..
"opid" : "shardA:100813",
...
},

db.killOp("shardB:79014");
db.killOp("shardA:100813");


# 查看当前数据库进程状态
db.serverStatus()


# 查看当前有多少个连接
db.serverStatus().connections

{ "current" : 7, "available" : 398, "totalCreated" : 818364 }
current:当前已经建立的连接数。
available:当前可用的连接数。


# 查询当前连接来源
use admin
db.runCommand({currentOp: 1, $all: true})


# 慢请求日志:
db.system.profile.find().pretty()


# 查看库的大小:
use testdb;
db.stats()
{
        "db" : "testdb",
        "collections" : 1,
        "views" : 0,
        "objects" : 33755,
        "avgObjSize" : 34,
        "dataSize" : 1147670,
        "storageSize" : 536576,
        "indexes" : 2,
        "indexSize" : 1572864,
        "totalSize" : 2109440,
        "scaleFactor" : 1,
        "fsUsedSize" : 5834960896,
        "fsTotalSize" : 52601794560,
        "ok" : 1,
        "$gleStats" : {
                "lastOpTime" : Timestamp(0, 0),
                "electionId" : ObjectId("7fffffff0000000000000009")
        },
        "lastCommittedOpTime" : Timestamp(1652078534, 1),
        "$configServerState" : {
                "opTime" : {
                        "ts" : Timestamp(1652078538, 5),
                        "t" : NumberLong(9)
                }
        },
        "$clusterTime" : {
                "clusterTime" : Timestamp(1652078538, 5),
                "signature" : {
                        "hash" : BinData(0,"iqDiWpKk8TUIG23PzdjdqsXB2Uw="),
                        "keyId" : NumberLong("7093529851058978835")
                }
        },
        "operationTime" : Timestamp(1652078534, 1)
}

db:当前数据库名称
collections:当前数据库中collection数量
views: 当前数据库中view数量
objects:当前数据库所有集合中文档的总数。
avgObjSize:每个文档的平均大小(bytes), 等于dataSize/objects, 我们这里就是1147670/33755=34 bytes。
dataSize:所有未压缩的数据总大小,当删除文档时,该值也会缩小。
storageSize:数据库为存储文档所分配的所有空间大小,包括空闲空间。 
indexes:数据库中所有集合上的索引总数 
indexSize:数据库为索引分配的所有空间,包括空闲索引空间。 
totalSize:数据库为文档和索引分片的所有空间。 = indexSize +  storageSize。
scale:默认为1,以字节返回大小的数据。要以KB 单位,指定scale值1024。
fsUsedSize:MongoDB 存储数据在文件系统中所占用的总磁盘空间。
fsTotalSize:MongoDB 在文件系统可使用的磁盘磁盘空间。即—dbpath 路径对应目录下的可用空间大小。

也可以直接查询某个具体的值:
db.stats().indexSize;
db.stats(1024).indexSize;


# 查看集合的大小:
db.user.stats();

查看集合的统计信息(以kb为单位显示):
db.user.stats(1024)
{
        "ns" : "cndba.user",
        "size" : 1120,
        "count" : 33755,
        "avgObjSize" : 34,
        "storageSize" : 524,
        "freeStorageSize" : 0,
        "capped" : false,
        "wiredTiger" : {
                "metadata" : {
                        "formatVersion" : 1
                },
……
        "nindexes" : 2,
        "indexBuilds" : [ ],
        "totalIndexSize" : 1536,
        "totalSize" : 2060,
        "indexSizes" : {
                "_id_" : 932,
                "_id_hashed" : 604
        },
        "scaleFactor" : 1024,
        "ok" : 1,

Ns: 当前集合名称。
Size:集合在内存中所有未压缩的文档的大小(The total uncompressed size in memory of all records in a collection),该值不包含索引的空间。
Count:集合中文档的总数。
avgObjSize: 集合中文档的平均大小。
storageSize:集合存储文档分配的总空间,该值不包含索引占用的空间。
freeStorageSize:MongoDB 4.4 版本的中属性,可重用的存储空间大小。 不适用In-Memory 引擎。
Nindexes:集合上所有索引的总数,至少有1个索引:_id.
indexBuilds: 正在重建的索引名称,一旦重建完成,这里显示为空。
totalIndexSize:所有索引的总大小,从4.2 开始,该值包含正在创建的索引的大小。
totalSize:MongoDB 4.4 中引入,= storageSize + totalIndexSize。
indexSizes:每个索引的大小。


# 启动数据库时,MongoDB 会向 local.startup_log 集合中写入一个文档,来描述MongoDB 的版本、底层系统以及所使用的标志位。
> use local
switched to db local
> db.startup_log.find().sort({startTime: -1}).limit(1).pretty()
{
    "_id" : "hwprod-ops-dba-1702350797715",
    "hostname" : "hwprod-ops-dba",
    "startTime" : ISODate("2023-12-12T03:13:17Z"),
    "startTimeLocal" : "Tue Dec 12 11:13:17.715",
    "cmdLine" : {
        "config" : "/data/mongo_repl/node/mongo_01.cnf",
        "net" : {
            "bindIp" : "0.0.0.0",
            "port" : 20001
        },
        "processManagement" : {
            "fork" : true,
            "pidFilePath" : "/data/mongo_repl/node/mongod_01.pid",
            "timeZoneInfo" : "/usr/share/zoneinfo"
        },
        "replication" : {
            "replSet" : "rs"
        },
        "security" : {
            "authorization" : "enabled",
            "keyFile" : "/data/mongo_repl/node/mongo_01.key"
        },
        "storage" : {
            "dbPath" : "/data/mongo_repl/repl_data_01",
            "journal" : {
                "enabled" : true
            }
        },
        "systemLog" : {
            "destination" : "file",
            "logAppend" : true,
            "path" : "/data/mongo_repl/node/mongod_01.log"
        }
    },
    "pid" : NumberLong(11448),
    "buildinfo" : {
        "version" : "4.2.24",
        "gitVersion" : "5e4ec1d24431fcdd28b579a024c5c801b8cde4e2",
        "modules" : [ ],
        "allocator" : "tcmalloc",
        "javascriptEngine" : "mozjs",
        "sysInfo" : "deprecated",
        "versionArray" : [
            4,
            2,
            24,
            0
        ],
        "openssl" : {
            "running" : "OpenSSL 1.0.1e-fips 11 Feb 2013",
            "compiled" : "OpenSSL 1.0.1e-fips 11 Feb 2013"
        },
        "buildEnvironment" : {
            "distmod" : "rhel70",
            "distarch" : "x86_64",
            "cc" : "/opt/mongodbtoolchain/v3/bin/gcc: gcc (GCC) 8.5.0",
            "ccflags" : "-ffp-contract=off -fno-omit-frame-pointer -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-const-variable -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp",
            "cxx" : "/opt/mongodbtoolchain/v3/bin/g++: g++ (GCC) 8.5.0",
            "cxxflags" : "-Woverloaded-virtual -Wno-maybe-uninitialized -fsized-deallocation -std=c++17",
            "linkflags" : "-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--build-id -Wl,--hash-style=gnu -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro",
            "target_arch" : "x86_64",
            "target_os" : "linux"
        },
        "bits" : 64,
        "debug" : false,
        "maxBsonObjectSize" : 16777216,
        "storageEngines" : [
            "biggie",
            "devnull",
            "ephemeralForTest",
            "wiredTiger"
        ]
    }
}

 

posted @ 2017-08-28 09:56  屠魔的少年  阅读(235)  评论(0)    收藏  举报