14.导入、导出、运行时备份

本文介绍了 MongoDB 中数据的导出、导入、备份与恢复的方法。涵盖了 mongoexport 和 mongoimport 命令的使用,包括参数说明及示例,以及 mongodump 和 mongorestore 的实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.导出数据(需中断其他操作)

打开CMD
查看mongoexport命令

参数含义
-ddatabase 指明使用的库
-ccolletion 指明要导出的表(不指明则默认导出该库中所有的表(集合))
-ooutputfile 指明要导出的文件名
-csv制定导出的是 csv 格式
-q过滤导出
–type指定其他格式 `< json

1.1把数据库 foobar 中的 persons文档 导出

 mongoexport -d foobar -c persons -o d:/persons.json

1.2导出其他主机数据库的文档

 mongoexport --host 192.168.0.16 --port 37017

2.导入数据(中断其他操作)

API参考:
http://cn.docs.mongodb.org/manual/reference/mongoimport/

2.1 向persons数据库导入persons文件

     mongoimport --db persons --collection persons --file d:/persons.json

或者简写为:
     mongoimport -d persons -c persons --file d:/persons.json

注:如果数据库有用户安全认证要求,则需要在后面加上参数 -u USERNAME -p PASSWORD才可以顺利执行导入导出操作

3.运行时备份– mongodump 命令

API参考:
http://cn.docs.mongodb.org/manual/reference/mongodump/

1.1 备份127.0.0.1服务器下的27017端口的foobar数据库

     mongodump --host 127.0.0.1:27017 -d foobar -o d:/foobar

日志显示:

C:\Users\dxf>mongodump -h 127.0.0.1:27017 -d persons -o d:/mongooutput
connected to: 127.0.0.1:27017
DATABASE: persons        to     d:/mongooutput/persons
        persons.books to d:/mongooutput/persons/books.bson
                 200000 objects
        persons.system.indexes to d:/mongooutput/persons/system.indexes.bson
                 10 objects
        persons.map to d:/mongooutput/persons/map.bson
                 14 objects
        persons.mycoll to d:/mongooutput/persons/mycoll.bson
                 4 objects
        persons.fs.files to d:/mongooutput/persons/fs.files.bson
                 1 objects
        persons.fs.chunks to d:/mongooutput/persons/fs.chunks.bson
                 1 objects
        persons.system.js to d:/mongooutput/persons/system.js.bson
                 2 objects
        persons.persons to d:/mongooutput/persons/persons.bson
                 12 objects

4.运行时恢复– mongorestore 命令应用

mongoDB可以在运行时进行备份,但同时,在缓冲池中的数据还没来得及写入数据库,就会被漏掉,后面将介绍锁的使用来避免这种数据遗漏的现象。
API参考:
http://cn.docs.mongodb.org/manual/reference/mongorestore/

4.1删除原本的数据库用刚才导出的数据库恢复

删除原本的数据库

> db.dropDatabase()
{ "dropped" : "persons", "ok" : 1 }

> show dbs
foobar  0.03125GB
local   (empty)

已经没有了persons数据库

4.2 用刚才导出的数据库恢复

     mongorestore --host 127.0.0.1:27017 -d foobar -directoryperdb d:/foobar/foobar

日志显示:

C:\Users\dxf>mongorestore --host 127.0.0.1:27017 -d persons -directoryperdb d:/m
ongooutput/persons
connected to: 127.0.0.1:27017
Fri Dec 09 10:55:04 d:/mongooutput/persons/books.bson
Fri Dec 09 10:55:04      going into namespace [persons.books]
                1056090/11688890        9%
                2036290/11688890        17%
                3086090/11688890        26%
                4420090/11688890        37%
                5859690/11688890        50%
                7818490/11688890        66%
                9800890/11688890        83%
                10845190/11688890       92%
200000 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/fs.chunks.bson
Fri Dec 09 10:55:30      going into namespace [persons.fs.chunks]
1 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/fs.files.bson
Fri Dec 09 10:55:30      going into namespace [persons.fs.files]
1 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/map.bson
Fri Dec 09 10:55:30      going into namespace [persons.map]
14 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/mycoll.bson
Fri Dec 09 10:55:30      going into namespace [persons.mycoll]
4 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/persons.bson
Fri Dec 09 10:55:30      going into namespace [persons.persons]
12 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/system.js.bson
Fri Dec 09 10:55:30      going into namespace [persons.system.js]
2 objects found
Fri Dec 09 10:55:30 d:/mongooutput/persons/system.indexes.bson
Fri Dec 09 10:55:30      going into namespace [persons.system.indexes]
Fri Dec 09 10:55:30 { key: { _id: 1 }, ns: "persons.books", name: "_id_" }
Fri Dec 09 10:55:30 { key: { number: 1.0 }, ns: "persons.books", name: "number_1
" }
Fri Dec 09 10:55:31 { key: { _id: 1 }, ns: "persons.map", name: "_id_" }
Fri Dec 09 10:55:31 { key: { gis: "2d" }, ns: "persons.map", name: "gis_", min:
-1.0, max: 201.0 }
Fri Dec 09 10:55:31 { key: { _id: 1 }, ns: "persons.fs.files", name: "_id_" }
Fri Dec 09 10:55:31 { key: { filename: 1 }, ns: "persons.fs.files", name: "filen
ame_1" }
Fri Dec 09 10:55:31 { key: { _id: 1 }, ns: "persons.fs.chunks", name: "_id_" }
Fri Dec 09 10:55:31 { key: { files_id: 1, n: 1 }, ns: "persons.fs.chunks", name:
 "files_id_1_n_1" }
Fri Dec 09 10:55:31 { key: { _id: 1 }, ns: "persons.system.js", name: "_id_" }
Fri Dec 09 10:55:31 { key: { _id: 1 }, ns: "persons.persons", name: "_id_" }
10 objects found

5.懒人备份

mongoDB是文件数据库,这就可以用直接拷贝文件的方式进行备份
但是这需要停止服务器之后才能备份

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值