Mongodb 数据库管理

xiaoxiao2021-02-28  95

1.监控

1.serverStatus获取运行中的MongoDB服务器统计信息

db.runCommand({"serverStatus":1})

2.mongostat 每秒更新一次

mongostat -u "username" -p "password" --authenticationDatabase dbname

输出

insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 258M 10.0M 0|0 0|0 178b 51.7k 2 May 6 11:26:10.924 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 258M 10.0M 0|0 0|0 149b 43.5k 2 May 6 11:26:11.979 *0 *0 *0 *0 0 1|0 0.0% 0.0% 0 258M 10.0M 0|0 0|0 155b 45.3k 2 May 6 11:26:12.992 *0 *0 *0 *0 0 2|0 0.0% 0.0% 0 258M 10.0M 0|0 0|0 169b 49.1k 2 May 6 11:26:13.925

2. 安全和认证

创建用户

db.createUser({ user: "<name>", pwd: "<cleartext password>", customData: { <any information> }, roles: [ { role: "<role>", db: "<database>" } | "<role>", ... ] },writeConcern)

user字段,为新用户的名字 pwd字段,用户的密码 cusomData字段,为任意内容,例如可以为用户全名介绍 roles字段,指定用户的角色,可以用一个空数组给新用户设定空角色 在roles字段,可以指定内置角色和用户定义的角色

Built-In Roles(内置角色):

1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase 6. 超级用户角色:root // 这里还有几个角色间接或直接提供了系统超级用户的访问(dbOwner 、userAdmin、userAdminAnyDatabase) 7. 内部角色:__system

角色权限介绍

Read:允许用户读取指定数据库 readWrite:允许用户读写指定数据库 dbAdmin:允许用户在指定数据库中执行管理函数,如索引创建、删除,查看统计或访问system.profile userAdmin:允许用户向system.users集合写入,可以找指定数据库里创建、删除和管理用户 clusterAdmin:只在admin数据库中可用,赋予用户所有分片和复制集相关函数的管理权限。 readAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读权限 readWriteAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的读写权限 userAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的userAdmin权限 dbAdminAnyDatabase:只在admin数据库中可用,赋予用户所有数据库的dbAdmin权限。 root:只在admin数据库中可用。超级账号,超级权限

writeConcern文档(官方说明)

w选项:允许的值分别是 1、0、大于1的值、"majority"、<tag set>; j选项:确保mongod实例写数据到磁盘上的journal(日志),这可以确保mongd以外关闭不会丢失数据。设置true启用。 wtimeout:指定一个时间限制,以毫秒为单位。wtimeout只适用于w值大于1。

exp:

db.createUser( { user:"root", pwd:"root", roles:[{role:"root",db:"admin"}] }) db.createUser( { user:"hqq", pwd:"hqq", roles:[{role:"readWrite",db:"hqq"}] })

创建好后开启auth重启启动服务即可

3.备份和修复

mongodump 可以在运行时备份

mongodump -h dbhost -d dbname -o dbdirectory

-h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017 -d:需要备份的数据库实例,例如:test -o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据。

mongodump -u "hqq" -p "hqq" -d hqq -o F:\Mongodb\backup

mongorestore 从备份中恢复数据

mongorestore -h dbhost -d dbname --directoryperdb dbdirectory

-h:MongoDB所在服务器地址 -d:需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2 –directoryperdb:备份数据所在位置,例如:c:\data\dump\test,这里为什么要多加一个test,而不是备份时候的dump,读者自己查看提示吧! –drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!

mongorestore -u "root" -p "root" -d admin --drop F:\Mongodb\backup\hqq\

fsync 可以在运行时备份数据且不损坏数据

//加锁 > db.runCommand({"fsync":1,"lock":1}) { "info" : "now locked against writes, use db.fsyncUnlock() to unlock", "lockCount" : NumberLong(1), "seeAlso" : "http://dochub.mongodb.org/core/fsynccommand", "ok" : 1 } //备份 .. //解锁 > db.$cmd.sys.unlock.findOne() { "info" : "fsyncUnlock completed", "lockCount" : NumberLong(0), "ok" : 1 }

修复数据库

db.repairDatabase()
转载请注明原文地址: https://www.6miu.com/read-48339.html

最新回复(0)