mongo备份恢复导入导出

2021年11月12日 994点热度 0人点赞 0条评论
  • 前言

    mongodb4.4开始,导入导出工具需要单独开始安装了。

    https://docs.mongodb.com/v4.4/reference/program/mongoexport/

    https://fastdl.mongodb.org/tools/db/mongodb-database-tools-macos-x86_64-100.5.1.zip

    1 导入

    导入数据命令:

    mongoimport -h dbhost -d dbname -c collectionname 文件的地址...
    
    -h : 数据库地址,MongoDB 服务器所在的 IP 与 端口,如 localhost:27017
    -d :指明使用的库,指明使用的数据库实例,如 test
    -c :指明要导入的集合,如 c1、c2、可以和导出时不一致,自定义即可,不存在时会直接创建。
    本地的文件地址:事先导出好的 mongoDB 集合文件

    1.1 导入JSON文件

    bin/mongoimport -h localhost:27017 -uroot -p123456 --authenticationDatabase=admin -d book2  -c book_2  book.json
    2021-11-03T20:56:16.057+0800	connected to: mongodb://localhost:27017/
    2021-11-03T20:56:18.192+0800	35443 document(s) imported successfully. 0 document(s) failed to import.
    

     

    https://docs.mongodb.com/manual/reference/program/mongoimport/index.html

    mongoimport -c=people -d=example --mode=upsert --file=people-20160927.json

    2 导出

    导出数据命令:

    mongoexport -h dbhost -d dbname -c collectionName -o output
    -h :数据库地址,MongoDB 服务器所在的 IP 与 端口,如 localhost:27017
    -d :指明使用的数据库实例,如 test
    -c 指明要导出的集合,如 c1
    -o 指明要导出的文件名,如 E:/wmx/mongoDump/c1.json,注意是文件而不是目录,目录不存在时会一同新建

    2.1 导出json文件

    mongoexport -h localhost:27017 -d book -c book -o /Users/ymz/book.json

    mongodb 导出 带条件_mongoexport 带条件导出数据
    https://blog.csdn.net/weixin_39824223/article/details/111554708

    3 备份

    在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。

    mongodump命令可以通过参数指定导出的数据量级转存的服务器。

    语法

    mongodump命令脚本语法如下:

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

    mongodump 命令可选参数列表如下所示:

    语法

    描述

    实例

    mongodump --host HOST_NAME --port PORT_NUMBER

    该命令将备份所有MongoDB数据

    mongodump --host runoob.com --port 27017

    mongodump --dbpath DB_PATH --out BACKUP_DIRECTORY

     

    mongodump --dbpath /data/db/ --out /data/backup/

    mongodump --collection COLLECTION --db DB_NAME

    该命令将备份指定数据库的集合。

    mongodump --collection mycol --db test

    3.1 例子

    mongodump -h localhost:27017 -d book -o /Users/ymz
    2021-11-03T20:22:30.265+0800	writing book.book to /Users/ymz/book/book.bson
    2021-11-03T20:22:30.265+0800	writing book.samples to /Users/ymz/book/samples.bson
    2021-11-03T20:22:30.266+0800	done dumping book.samples (4 documents)
    2021-11-03T20:22:30.689+0800	done dumping book.book (35443 documents)
    

    4 恢复

    mongodb使用 mongorestore 命令来恢复备份的数据。

    语法

    mongorestore命令脚本语法如下:

    mongorestore -h <hostname><:port> -d dbname <path>
    • --host <:port>, -h <:port>:MongoDB所在服务器地址,默认为: localhost:27017
    • --db , -d 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2
    • --drop:恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用哦!
    • <path>:mongorestore 最后的一个参数,设置备份数据所在位置,例如:c:\data\dump\test。你不能同时指定 <path> 和 --dir 选项,--dir也可以设置备份目录。
    • --dir:指定备份的目录你不能同时指定 <path> 和 --dir 选项。


    4.1 导入dump文件

    bin/mongorestore -h localhost:27017 -uroot -p123456 --authenticationDatabase=admin -d book2  /Users/ymz/Downloads/book
    2021-11-03T20:51:33.749+0800	The --db and --collection flags are deprecated for this use-case; please use --nsInclude instead, i.e. with --nsInclude=${DATABASE}.${COLLECTION}
    2021-11-03T20:51:33.749+0800	building a list of collections to restore from /Users/ymz/Downloads/book dir
    2021-11-03T20:51:33.750+0800	reading metadata for book2.book from /Users/ymz/Downloads/book/book.metadata.json
    2021-11-03T20:51:33.751+0800	reading metadata for book2.samples from /Users/ymz/Downloads/book/samples.metadata.json
    2021-11-03T20:51:33.863+0800	restoring book2.book from /Users/ymz/Downloads/book/book.bson
    2021-11-03T20:51:33.893+0800	restoring book2.samples from /Users/ymz/Downloads/book/samples.bson
    2021-11-03T20:51:33.921+0800	finished restoring book2.samples (4 documents, 0 failures)
    2021-11-03T20:51:35.667+0800	finished restoring book2.book (35443 documents, 0 failures)
    2021-11-03T20:51:35.667+0800	restoring indexes for collection book2.book from metadata
    2021-11-03T20:51:35.668+0800	index: &idx.IndexDocument{Options:primitive.M{"background":false, "name":"book_idx_isbn", "unique":true, "v":2}, Key:primitive.D{primitive.E{Key:"isbn", Value:1}}, PartialFilterExpression:primitive.D(nil)}
    2021-11-03T20:51:35.668+0800	no indexes to restore for collection book2.samples
    2021-11-03T20:51:36.022+0800	35447 document(s) restored successfully. 0 document(s) failed to restore.
    

     

    错误原因没有授权

    bin/mongorestore -h localhost:27017 -uymz -p123456 -d book2  /Users/ymz/Downloads/book
    2021-11-03T20:48:45.709+0800	error connecting to host: could not connect to server: connection() error occured during connection handshake: auth error: sasl conversation error: unable to authenticate using mechanism "SCRAM-SHA-1": (AuthenticationFailed) Authentication failed.
    

    参考

    https://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html

     

管理员

这个人很懒,什么都没留下

文章评论