欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

monogdb之数据备份恢复与数据的导入导出

程序员文章站 2024-01-12 13:36:10
...

###备份方式和恢复方式备份全部数据库mkdir/bakmongodump备份指定数据库mkidr/bakmongodump-dadmin备份一个数据库中的某个集合mkdir/bakmongodump-dadmin-cstude

### 备份方式和恢复方式

备份全部数据库

mkdir /bak

mongodump

备份指定数据库

mkidr /bak

mongodump -d admin

备份一个数据库中的某个集合

mkdir /bak

mongodump -d admin -c student

恢复全部数据库

mongorestore --drop # --drop是为了防止数据重复

恢复某个数据库

mongorestore -d dbname --drop

恢复某个数据库的某个集合

mongorestore -d dbname -c student --drop

异机数据恢复

mongorestore -h host -d dbname /path/sourcefile # 注意这里要使用dump出来的文件的源文件

mongodump

-h 导出源

-d 要导出的数据库名称

-o 数据库要导出的位置

mongorestore

-d 使用的数据库名称

-c 恢复一个表

### 数据的导出

Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。

mongoexport

参数说明:

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名字

-c:指明collection的名字

-f:指明要导出那些列

-o:指明到要导出的文件名

-q:指明导出数据的过滤条件

### 数据的导入

mongoimport

-type 指明要导入的文件格式

-headerline 指明不导入第一行

-file 指明要导入的文件路径

参数说明:

-h:指明数据库宿主机的IP

-u:指明数据库的用户名

-p:指明数据库的密码

-d:指明数据库的名字

-c:指明collection的名字

-f:指明要导入那些列

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



### 演示备份数据库

mkdir /bak cd /bak [root@redis bak]# mongodump -h 192.168.58.30 --port 27017 -u root -p connected to: 192.168.58.30:27017 Enter password: Thu Jul 17 08:15:42.996 all dbs Thu Jul 17 08:15:43.006 DATABASE: admin to dump/admin Thu Jul 17 08:15:43.015 admin.system.indexes to dump/admin/system.indexes.bson Thu Jul 17 08:15:43.076 2 objects Thu Jul 17 08:15:43.077 admin.system.users to dump/admin/system.users.bson Thu Jul 17 08:15:43.077 1 objects Thu Jul 17 08:15:43.077 Metadata for admin.system.users to dump/admin/system.users.metadata.json Thu Jul 17 08:15:43.078 DATABASE: guest to dump/guest Thu Jul 17 08:15:43.082 guest.system.indexes to dump/guest/system.indexes.bson Thu Jul 17 08:15:43.088 3 objects Thu Jul 17 08:15:43.088 guest.system.users to dump/guest/system.users.bson Thu Jul 17 08:15:43.097 1 objects Thu Jul 17 08:15:43.097 Metadata for guest.system.users to dump/guest/system.users.metadata.json Thu Jul 17 08:15:43.098 guest.student to dump/guest/student.bson Thu Jul 17 08:15:43.103 26 objects Thu Jul 17 08:15:43.103 Metadata for guest.student to dump/guest/student.metadata.json [root@redis bak]# ll total 4 drwxr-xr-x 4 root root 4096 Jul 17 08:15 dump [root@redis bak]# cd dump/ [root@redis dump]# ls admin guest [root@redis dump]#


###恢复数据库

  • 由于刚开始的时候指定了备份目录下面的所有文件,所以会报错

  • [root@localhost ~]# [root@localhost ~]# mongorestore -d admin admin/* ERROR: too many positional options Import BSON files into MongoDB.
  • 后来从新换了一个,再次报错

  • [root@localhost ~]# mongorestore -d admin admin/ couldn't connect to [127.0.0.1] couldn't connect to server 127.0.0.1:27017
  • 上面报错是因为我配置文件中写的是本机ip,更换后

  • [root@localhost ~]# mongorestore -d admin admin/ -h 192.168.58.10 connected to: 192.168.58.10 Thu Jul 17 09:08:33.873 admin/system.users.bson Thu Jul 17 09:08:33.873 going into namespace [admin.system.users] 1 objects found Thu Jul 17 09:08:33.902 Creating index: { key: { _id: 1 }, ns: "admin.system.users", name: "_id_" } Thu Jul 17 09:08:34.043 Creating index: { key: { user: 1, userSource: 1 }, unique: true, ns: "admin.system.users", name: "user_1_userSource_1" } [root@localhost ~]#


    ### 查看是否正确导入

    [root@localhost ~]# mongo 192.168.58.10 MongoDB shell version: 2.4.6 connecting to: 192.168.58.10/test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see Questions? Try the support group > show dbsl Thu Jul 17 09:12:34.806 don't know how to show [dbsl] at src/mongo/shell/utils.js:847 > show dbs; admin0.203125GB guest0.203125GB local0.078125GB > use guest switched to db guest > show collections; student system.indexes system.users > db.student.find() { "_id" : ObjectId("53c769621d184866a15043ec"), "name" : "zhuima" } { "_id" : ObjectId("53c769861d184866a15043ed"), "x" : 1 } { "_id" : ObjectId("53c769861d184866a15043ee"), "x" : 2 } { "_id" : ObjectId("53c769861d184866a15043ef"), "x" : 3 } { "_id" : ObjectId("53c769861d184866a15043f0"), "x" : 4 } { "_id" : ObjectId("53c769861d184866a15043f1"), "x" : 5 } { "_id" : ObjectId("53c769861d184866a15043f2"), "x" : 6 } { "_id" : ObjectId("53c769861d184866a15043f3"), "x" : 7 } { "_id" : ObjectId("53c769861d184866a15043f4"), "x" : 8 } { "_id" : ObjectId("53c769861d184866a15043f5"), "x" : 9 } { "_id" : ObjectId("53c769861d184866a15043f6"), "x" : 10 } { "_id" : ObjectId("53c769861d184866a15043f7"), "x" : 11 } { "_id" : ObjectId("53c769861d184866a15043f8"), "x" : 12 } { "_id" : ObjectId("53c769861d184866a15043f9"), "x" : 13 } { "_id" : ObjectId("53c769861d184866a15043fa"), "x" : 14 } { "_id" : ObjectId("53c769861d184866a15043fb"), "x" : 15 } { "_id" : ObjectId("53c769861d184866a15043fc"), "x" : 16 } { "_id" : ObjectId("53c769861d184866a15043fd"), "x" : 17 } { "_id" : ObjectId("53c769861d184866a15043fe"), "x" : 18 } { "_id" : ObjectId("53c769861d184866a15043ff"), "x" : 19 } Type "it" for more >



    ### 用户管理

    添加超级用户

    use admin

    db.addUser('name','password')

    添加只读用户

    use dbname

    db.addUser('name','password',true)

    添加普通用户

    use dbname

    db.addUser('name','password') 其实也不能说是普通用户,,这个只是针对于某一个数据库有权限

    删除用户

    use dbname

    db.system.users.remove('name','password')

    更换用户密码

    use dbname

    db.addUser('name','password')

    切换用户(必须要先到对对应的数据库,root账户除外)

    use dbname

    db.auth('name','password')

    查找用户

    use dbname

    db.system.users.find()


    ### 监控mongodb