MongoDB运维需要掌握基础操作、数据维护、性能监控等多类命令,这些命令可以帮助运维人员快速完成日常管理任务,保障数据库服务的稳定可用。

基础数据库操作命令
基础操作命令是日常运维中最常用的部分,主要用于查看数据库状态、切换数据库、查看集合信息等。
- 查看所有数据库:使用
show dbs命令可以列出当前MongoDB实例中所有的数据库,包含数据库名称和占用的存储空间大小。 - 切换/创建数据库:使用
use 数据库名命令,如果数据库不存在则会自动创建,存在则直接切换到该数据库。 - 查看当前数据库集合:切换到目标数据库后,使用
show collections命令可以列出当前数据库下的所有集合。
以下是基础操作的示例:
# 查看所有数据库 show dbs # 切换到test数据库,不存在则创建 use test # 查看test数据库下的所有集合 show collections
集合与文档操作命令
集合和文档是MongoDB存储数据的核心结构,运维过程中经常需要查看、插入、删除相关数据。
集合操作
创建集合可以使用db.createCollection(集合名, 可选配置)命令,删除集合使用db.集合名.drop()命令。
# 创建名为user的集合,设置最大文档数为1000
db.createCollection("user", {max: 1000})
# 删除user集合
db.user.drop()
文档操作
文档的增删改查是运维中处理数据的基础操作,以下是常用命令示例:
# 向user集合插入一条文档
db.user.insertOne({name: "张三", age: 25, city: "北京"})
# 查询user集合中所有年龄大于20的文档
db.user.find({age: {$gt: 20}})
# 更新user集合中name为张三的文档,将年龄改为26
db.user.updateOne({name: "张三"}, {$set: {age: 26}})
# 删除user集合中city为北京的文档
db.user.deleteMany({city: "北京"})
索引管理命令
索引可以提升查询效率,运维过程中需要定期检查索引状态,创建或删除不必要的索引。
- 创建索引:
db.集合名.createIndex({字段名: 1}),1表示升序,-1表示降序。 - 查看索引:
db.集合名.getIndexes()可以列出集合的所有索引信息。 - 删除索引:
db.集合名.dropIndex(索引名)可以删除指定名称的索引。
# 给user集合的name字段创建升序索引
db.user.createIndex({name: 1})
# 查看user集合的所有索引
db.user.getIndexes()
# 删除名为name_1的索引
db.user.dropIndex("name_1")
用户与权限管理命令
MongoDB的用户权限管理可以保障数据库的安全性,运维人员需要掌握用户创建、权限分配等相关命令。
首先需要在admin数据库下创建管理员用户,然后为业务数据库创建对应的读写用户。
# 切换到admin数据库
use admin
# 创建管理员用户,拥有所有数据库的管理权限
db.createUser({
user: "admin",
pwd: "admin_pwd",
roles: [{role: "root", db: "admin"}]
})
# 切换到test数据库,创建只读用户
use test
db.createUser({
user: "test_read",
pwd: "read_pwd",
roles: [{role: "read", db: "test"}]
})
性能监控与状态查看命令
运维过程中需要定期查看数据库的运行状态,定位性能瓶颈,以下是常用的监控命令。
| 命令 | 作用说明 |
|---|---|
db.serverStatus() | 查看MongoDB实例的整体运行状态,包含连接数、内存使用、操作计数等信息 |
db.stats() | 查看当前数据库的状态信息,包含数据大小、索引大小、集合数量等 |
db.currentOp() | 查看当前正在执行的所有操作,可用于定位慢查询或阻塞操作 |
db.killOp(操作ID) | 终止指定ID的长时间运行的操作,操作ID可通过db.currentOp()获取 |
# 查看实例整体状态,筛选连接数相关字段 db.serverStatus().connections # 查看当前数据库的状态 db.stats() # 查看当前正在执行的操作 db.currentOp() # 终止ID为12345的操作 db.killOp(12345)
备份与恢复命令
数据备份和恢复是运维的重要工作,MongoDB提供了mongodump和mongorestore命令行工具来完成相关操作。
备份命令需要在系统命令行执行,不是在MongoDB shell中执行:
# 备份整个MongoDB实例,输出到backup目录 mongodump --host 127.0.0.1 --port 27017 -o ./backup # 备份test数据库 mongodump --host 127.0.0.1 --port 27017 -d test -o ./backup
恢复数据的命令同样在系统命令行执行:
# 恢复整个备份目录的数据 mongorestore --host 127.0.0.1 --port 27017 ./backup # 恢复test数据库的备份 mongorestore --host 127.0.0.1 --port 27017 -d test ./backup/test