mongo开启慢日志及常用命令行操作、数据备份

mongo开启慢日志及常用命令行操作、数据备份

1.常用命令行操作

连接命令行

格式:mongo -u用户名 -p密码 --host 主机地址 --port 端口号 库名

如:连接指定的主机的mongo库;
mongo -uroot -p123456 --host 127.0.0.1 --port 27017 admin

参数:

-u:指定用户名;

-p:指定密码;

--host:指定连接的主机地址;

--port:指定连接的端口;

库名:用于指定账号密码认证的库;

use db_Name:切换指定的数据库;
db.auth("user", "pwd"):进行账号认证;
show dbs:列出所有的数据库;
show collections:列出当前数据库所有的集合;
db.collection_Name.getIndexes(): 列出指定集合的所有索引;

创建用户

sql 复制代码
use admin
db.createUser({
	 user: "用户名",  
	 pwd: "密码", 
	 roles:[{
		  role: "角色",  
		  db: "库名称"  
		}]
})

更新用户信息

sql 复制代码
use admin
db.updateUser(
  "用户名", 
  {
    roles: [
      { role: "角色1", db: "数据库名1" }
    ]
  }
)

常用的角色如下:

角色类型 角色名称 对应权限
数据库用户角色 read 允许用户,读取指定数据库数据
- readWrite 允许用户,读/写指定数据库数据
数据库管理角色 dbAdmin 允许用户,在当前的数据库中执行管理操作(不含用户管理、不含读写数据)
- dbOwner 允许用户,在当前的数据库中执行任意操作(任何操作)
- userAdmin 允许用户,在当前的数据库中管理User(管理用户操作),创建、删除和管理用户
跨库角色 readAnyDatabase 允许用户,读取所有数据库的数据,只能切到admin库中进行分配
- readWriteAnyDatabase 允许用户,读写所有数据库的数据,只能切到admin库中进行分配
- userAdminAnyDatabase 允许用户,管理 所有的数据库的User,只能切到admin库中进行分配
- dbAdminAnyDatabase 允许用户管理,所有数据库的权限 (任何操作),只能切到admin库中进行分配

更新用户密码

sql 复制代码
use admin
db.changeUserPassword("用户名", "新密码")

删除用户

sql 复制代码
use admin
db.dropUser("用户名")

2.mongo备份

  • mongodump备份
    mongodump命令,用于创建 mongo 数据库的备份。它会将数据导出为bson文件,并可以包含索引和视图;

    备份整个数据库
    格式:
    mongodump --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名称 --out 导出文件存放路径

    备份特定数据库
    格式:
    mongodump --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 --db 备份库名称 --out 导出文件存放路径

    备份特定集合
    格式:
    mongodump --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 --db 备份库名称 --collection 备份集合名称 --out 导出文件存放路径

参数说明
--host:指定 mongo的主机地址;
--port :指定 mongo的端口号,默认是 27017;
-u :指定连接的用户名;
-p:指定连接的密码;
--authenticationDatabase:指定认证数据库;
--db:指定需要备份的数据库;
--collection:指定需要备份的集合;
--out:指定备份文件存放的目录;

  • mongorestore恢复

    恢复整个数据库实例
    mongorestore --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 导出文件存放路径

    恢复特定数据库
    mongorestore --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 --db 恢复库名称 导出文件存放路径/恢复库名称

    恢复特定集合
    mongorestore --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 --db 恢复库名称 --collection 恢复集合名称 导出文件存放路径/恢复库名称/恢复集合名称.bson

  • mongoexport 备份
    将数据导出为JSONCSV 格式的文本文件,适合用于备份小规模数据或进行数据迁移;

    导出特定集合的数据
    mongoexport --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 --db 备份库名称 --collection 备份集合名称 --out 导出文件存放路径/文件名

  • mongoimport恢复
    导入 JSON 文件中的数据

    mongoimport --host 主机地址 --port 端口 -u用户名 -p密码 --authenticationDatabase 认证库名 --db 恢复库名称 --collection 恢复集合名称 --file 导出文件存放路径/文件名

3.通过命令临时开启慢日志记录

通过连接命令行后执行语句开启慢查询,好处是不需要重启服务,但服务只要重启后就会失效;

1.进入mongo命令行:

bash 复制代码
#进入命令行;
mongo
#切换到认证库;use 库名称
use admin
#进行账号权限认证,未启用认证可以跳过;db.auth("账号","密码")
db.auth("root","123456")

2.然后执行语句开启慢查询记录即可;

bash 复制代码
#开启慢查询记录,1表示日志级别,100表示阈值,100ms;
db.setProfilingLevel(1, 100)

#查询设置是否成功
db.getProfilingStatus()
#查询超过100ms的慢日志
db.system.profile.find({millis: {$gt: 100}})

注意:

1.setProfilingLevel是针对库进行设置的,需要use切换到指定库执行命令,只会对该库生效,其他库不会有任何影响;且重启服务后设置失效;

2.此方法开启的慢日志是存在对应的系统集合system.profile中;因此,需要通过查询语句来查看慢日志;

4.通过修改配置开启慢日志记录

修改配置开启慢日志,首次配置需要重启服务才能生效;

mongod.conf文件中添加以下内容,保存后重启服务器即可,慢日志会写入到mongo系统日志中;

bash 复制代码
operationProfiling:
  #设置模式,分为off/slowOp/all (关闭/仅记录慢操作/记录所有操作);
  mode: slowOp
  #设置慢日志阈值,默认100ms;
  slowOpThresholdMs: 100

重启mongo服务

bash 复制代码
systemctl restart mongod
相关推荐
山甫aa10 分钟前
JavaWeb后端开发学习手册
java·开发语言·数据库·学习·mysql·springboot·web
JavaPub-rodert21 分钟前
MongoDB 常用命令和常见问题大全
数据库·mongodb
Dovis(誓平步青云)2 小时前
从Redis指标采集到异常告警:redis_exporter + Prometheus 完整实战
服务器·数据库·人工智能·redis·架构·prometheus·vibe coding
城管不管9 小时前
重生——第十一次面试之挖财一面2026.8.19已OC
java·服务器·jvm·数据库·spring·面试·职场和发展
倔强的石头1069 小时前
向量数据库从相似度检索走向融合数据底座
数据库
今天AI了吗11 小时前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习
lilian23312 小时前
Harmony os 技术实战|拼豆制图27:用单字符编码承载 50 张 70×70 图纸
前端·数据库·华为·harmonyos
皮卡丘不断更12 小时前
手机优先的 Personal Ledger:把账目、学习和复盘放到同一个入口
数据库·sqlite·fastapi·开源项目·个人效率
保卫大狮兄13 小时前
设备管理从台账到报废,完整生命周期一次讲清
数据库·设备管理·设备
数据安全技术观察14 小时前
数据动态脱敏:让脱敏策略跟着数据目录走
大数据·网络·数据库