MongoDB 权限备份还原去重
Posted itonet
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB 权限备份还原去重相关的知识,希望对你有一定的参考价值。
MongoDB 权限、备份、还原、去重
-
权限
数据安全是数据库至关重要的一部分,那么下面是设置MongoDB的用户权限的大致过程。
首先,在无授权模式下新建数据库管理员:
启动数据库服务:
mongod
启用命名行工具:
mongo use admin db.createUser({user:"gly",pwd:"P@ssword",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
然后,为指定数据库新建用户:
db.createUser({user:"testdb",pwd:"P@ssword",roles:[{role:"readWrite",db:"testdb"},{role:"userAdmin",db:"testdb"},{role:"dbAdmin",db:"testdb"}]})
最后,在授权模式下访问数据:
mongod -auth
启用命名行工具:
mongo use testdb db.auth("testdb","P@ssword") db.CompanyCards.find({}).limit(1)
注意:
设置密码时,字符中尽量不要使用‘@’,否则在配置数据库连接字符串时会无法正常连接,比如连接字段串
mongodb://testdb:P@ssword!@139.219.231.46:27017/testdb?authSource=testdb
,‘@’作为数据库用户名:密码与数据库主机地址之间的分隔符,故不能使用’@’;正确的连接字符串可以配置为:mongodb://testdb:Password!@139.219.231.46:27017/testdb?authSource=testdb
。以上连接字符串中数据和用户名称都为testdb。 -
备份(导出)
命令:
mongoexport -u UName -p P@ssword -h 127.0.0.1:27017 -d DBName -c CName --type csv -o C:\\DBak\\CName_201708.csv -f Name,Code,Status
解译:
运行:
结果:
执行耗时:约18分钟;导出数据: 68,668,050 条;导出文件:4,159,994KB;测试服务器:2核8G。
导出的文件数据示例:
-
还原(导入)
命令:
mongoimport -h 127.0.0.1:27017 -d DBName -c CName --type csv --file C:\\DBak\\CName_20170800.csv -u UName -p P@ssword --fields Name.string(),Code.string(),Status.int32() --columnsHaveTypes
在导入时,我显示指定了Document的Fields,而对于导出的数据,我不想要第一行,因为它是标题行。那么有两种方法:一,直接导入,然后删除;二,删除标题,然后导入。
方法一:
方法二:
解译:
运行:
结果:
执行耗时:约27分钟;导入数据: 68,668,050 条;导入文件:4,227,053KB;测试服务器:2核8G。
-
去重
索引:
use testdb db.auth("testdb","P@ssword") db.CompanyCards.createIndex( { Name: 1 } )
命令:
db.CompanyCards.aggregate([{ $group: { _id: {Name: \'$Name\'}, count: {$sum: 1}, dups: {$addToSet: \'$_id\'}}},{ $match: {count: {$gt: 1}}}],{ allowDiskUse: true }).forEach( function(doc){ doc.dups.shift(); db.CompanyCards.remove({_id: {$in: doc.dups}});});
注意:因为我们操作的数据集合比较大,所以允许使用磁盘存储
allowDiskUse:true
。运行:
因为耗时比较长,所以就不写结果了。
以下数据是我之前做的测试结果,提供参考:
去重前:1263765 条
去重后:1258414 条
总耗时:53.151 s
过滤掉:5351 条 笔记本:4核8G,i5处理器。
-
更多
更多操作请参见MongoDB官方在线文档 MongoDB Documention 。
以上是关于MongoDB 权限备份还原去重的主要内容,如果未能解决你的问题,请参考以下文章