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 备份
将数据导出为JSON 或CSV 格式的文本文件,适合用于备份小规模数据或进行数据迁移;导出特定集合的数据
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