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
相关推荐
Cchengzu13 分钟前
百度23届秋招研发岗A卷
开发语言·数据库·c++
编程修仙13 分钟前
MySQL子查询
数据库·mysql
@黄色海岸18 分钟前
【数据分析】表结构数据特征、获取、使用
数据库·数据挖掘·数据分析
吴冰_hogan40 分钟前
MySQL事务隔离
数据库·mysql
练小杰44 分钟前
我在广州学 Mysql 系列之 数据“表”的基本操作
android·数据库·学习·mysql·adb
gsforget3211 小时前
ORACLE RAC ADG备库报错ORA-04021: timeout occurred while waiting to lock object
数据库·oracle·oracle adg
Yvemil71 小时前
数据库镜像(Database Mirroring):高可用性与灾难恢复技术
数据库·oracle
赵师的工作日1 小时前
MongoDB-单键索引与复合索引
数据库·mongodb
初晴~2 小时前
【Redis】高并发场景下秒杀业务的实现思路(单机模式)
java·数据库·redis·后端·spring·缓存·中间件
KevinAha3 小时前
MySQL迁移SQLite
数据库·mysql·sqlite