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
相关推荐
数据智能老司机2 小时前
CockroachDB权威指南——SQL调优
数据库·分布式·架构
数据智能老司机2 小时前
CockroachDB权威指南——应用设计与实现
数据库·分布式·架构
数据智能老司机2 小时前
CockroachDB权威指南——CockroachDB 模式设计
数据库·分布式·架构
数据智能老司机21 小时前
CockroachDB权威指南——CockroachDB SQL
数据库·分布式·架构
数据智能老司机21 小时前
CockroachDB权威指南——开始使用
数据库·分布式·架构
松果猿1 天前
空间数据库学习(二)—— PostgreSQL数据库的备份转储和导入恢复
数据库
无名之逆1 天前
Rust 开发提效神器:lombok-macros 宏库
服务器·开发语言·前端·数据库·后端·python·rust
s9123601011 天前
rust 同时处理多个异步任务
java·数据库·rust
数据智能老司机1 天前
CockroachDB权威指南——CockroachDB 架构
数据库·分布式·架构
hzulwy1 天前
Redis常用的数据结构及其使用场景
数据库·redis