明辉站/网络软件/内容

mongodb数据的备份、数据导入管理--数据的备份导入与数据备份恢复

网络软件2023-09-07 阅读
[摘要]mongodb数据的导出、数据导入管理--数据的导出导入和数据备份恢复 mongodb数据管理数据的导出、数据导入数据导出 mongoexport [使用mongoexport -h查看参数]数据导入 mongoimport [使用mongoimport -h查看参数]导入导出json数据实例mo...

mongodb数据的导出、数据导入管理--数据的导出导入和数据备份恢复

mongodb数据管理

数据的导出、数据导入
数据导出 mongoexport [使用mongoexport -h查看参数]
数据导入 mongoimport [使用mongoimport -h查看参数]

导入导出json数据实例

mongoexport -d mydb -c user -o d:/mongdbback/user.dat--mydb是要导出的表所属的数据库--user是要导出的集合名c表示collection--user.dat是导出后的文件
名mongoimport -d mydb -c user d:/mongdbback/user.dat--mydb 
数据导入的目标数据库--user 数据导入的目标集合--d:/mongdbback/user.dat 待导入的数据文件存放路径

导入导出csv数据

CSV格式良好,主流数据库都支持导出为csv的格式,所以这种格式非常利于异构数据迁移.

mongoexport -d mydb -c user --csv -f  id,name,age  -o d:/mongodbback/user_csv.data--导出csv格式--f 指定要导出的列的名字mongoimport -d mydb -c user --type csv --headerline
 --file d:/mongodbback/user_csv.data;--mydb 数据导入的目标数据库--user 数据导入的目标集合--type
表示导入的文件格式--headerline 表明不导入第一行,因为第一行是列名--d:/mongodbback/user_cvs.data 待导入的数据文件存放路径

数据备份、数据恢复
数据备份mongodump
数据恢复mongorestore

备份实例mongodump -d mydb    //备份mydb数据库此时会在当前目录下默认创建一个dump目录,用于存放备份出来的文件,也可以指定备份存放的目录使用-omongodump -d mydb -o d:/databack/恢复实例mongorestore -d mydb d:/databack/mydb/数据
备份是为了发生灾难事件后可以恢复数据,但是不幸总是存在的,即没有数据备份,
好在MongoDB内建了修复功能.可以尝试修复受损文件,如果Mongdb不正常关闭,启动服务时会看到一堆警告信息.修复所有数据最简单的方法就是在mongod启动时加上--repaire参数.修复单个数据库可以再mongodb的shell里边执行repaireDatabase命令,
如>use testswitched to db test>db.repaireDatabase();{“ok” : 1}

克隆collection

克隆collection是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式.

远程克隆例如,将192.168.1.32上test下的user集合克隆到本地db.runCommand({cloneCollection:”test.user”, from:”192.168.1.32:27017”});本地克隆由于mongoDB没有提供本地克隆collection的命令或方法,所以需要写一个
循环插入的方案来完成这项工作.例如,将user集合中的数据克隆一份到taruser中.> 
db.user.find().forEach( function(x){ db.taruser.insert(x); } );> db.taruser.find();

复制数据库

使用copyDatabase(fromdb,todb,fromhost)命令来实现复制数据库

远程复制数据库> db.copyDatabase("from_db1","to_db2","192.163.1.167");本地复制数据库> db.copyDatabase("to_db1","to_db2","localhost");

刷新磁盘

在mongoDB中使用”db.runCommand({fsync:1})”命令将内存中尚未写入磁盘的信息写入磁盘,并锁住对数据库更新的操作,但读擦做可以继续.

数据压缩

repairDatabase命令是MongoDB内置的一个方法,调用这个方法MongoDB会扫描数据库中的所有数据,并将通过导入/导出来重新整理数据,整理磁盘碎片

mongoDB中可以使用db.collection.storageSize()和db.collection.totalSize()命令来搜集压缩命令执行前后集合所占用磁盘空间情况

> db.user.storageSize();8192> db.user.totalSize();16384> db.repairDatabase();{ "ok" : 1 }> db.user.storageSize();8035> db.user.totalSize();9384

捕获异常

MongoDB的写是异步的,返回给客户端成功但写不一定成功,db.getLastError命令有2个功能,即当MongoDB在写操作时,默认不会等数据写完后才返回,这是可以通过这个命令来保证写入是否是成功的.

查看活动进程

> db.currentOp();字段说明:opid:操作进程号,可以使用db.killop(opid)op:操作类型(查询、更新等)ns:命名空间,指操作的是哪个对象query:如果操作类型是查询的话,将显示具体的查询内容inLock:指名锁定的类型.-1代表读锁,0代表无锁.1代表写锁.

用户安全和认证

限制特定IP地址访问

这样可以避免来自公网上的恶意攻击.

MongDB可以指定对外服务的绑定,默认设置为空,即绑定在本机所有可用IP上,对于商业系统,出于安全考虑,可以绑定内网,减少外网访问避免攻击.只需要启动时加bind_ip即可.    >mongod --bind_ip 169.254.180.132 
   //启动mongodb时绑定ip169.254.180.132此时客户端想访问169.254.180.132上的服务器,就需要显示地指定连接的IP地址是169.254.180.132.eg.    >mongo 169.254.180.132

设置监听端口

MongoDB默认的监听端口是27017,为了安全,一般都会修改这个监听端口.

eg.    >mongod --bind_ip 169.254.180.132 --port 9888    //启动mongodb时绑定ip 并修改端口同理.客户端连接时需要指定ip跟端口eg.    >mongo 169.254.180.132:9888

设置登录用户名和口令

mongodb默认是没有用户名和口令的,启动后,可以直接用mongoDB连接,并且对所有的库具有root权限,为了安全,必须给其设置用户名和口令.

只需要再启动的时候,指定auth参数.就可以阻止客户端的访问和连接,如下

eg.>mongod -auth --dbpath=../data --logpath=../logs/mongodb.logs

想要登录验证模块生效,必须在admin库中添加一个用户,同时要指定auth参数.

D:\program files\mongo\bin>mongoMongoDB shell version: 1.8.1connecting to: test> use adminswitched to db admin> db.addUser("root","root123");{        "user" : "root",   
     "readOnly" : false,        "pwd" : "81c5bca573e01b632d18a459c6cec418"}> db.auth("root","root123");1>此时建立了系统root用户.

也可以对某个特定的数据库设置用户,这样权限的细粒度划分,也方便进行用户管理.

注意:建立指定权限的用户只能用系统用户来操作.

为mydb创建一个用户名为mydbusr口令为123的用户

D:\program files\mongo\bin>mongo -uroot -proot123 localhost:27017/adminMongoDB shell version

常见的网络操作系统有UNIX、Netware、Windows NT、Linux等,网络软件的漏洞及缺陷被利用,使网络遭到入侵和破坏。

……

相关阅读