备份和恢复
MongoDB数据库,支持导出数据到文件,也支持从数据库文件导入,对应着备份和恢复。
与之对应,MongoDB提供了两个成对的配套的工具:
mongodump
和mongorestore
mongoexport
和mongoimport
下面详细介绍一下区别和具体用法。
mongodump/mongorestore
和mongoimport/mongoexport
的区别
概述=结论:
mongodump
和mongorestore
:适合整个database,甚至所有database的数据的备份和恢复- 导出数据格式是:
bson
- 导出数据格式是:
mongoexport
和mongoimport
:适合单个database的单个collection的数据备份和恢复- 支持导入格式是:
json
- 支持导入格式是:
详解:
- 背景知识
- JSON vs BSON
- MongoDB内部数据保存用BSON
- 原因:JSON是BSON的子集
- -> 部分数据类型无法用JSON保存
- -> 所以如果导出为JSON格式,可能会丢失部分复杂的数据类型的数据
- -> 部分数据类型无法用JSON保存
- 原因:JSON是BSON的子集
- MongoDB内部数据保存用BSON
- JSON vs BSON
- 区别和对比
mongodump/mongorestore | mongoimport/mongoexport | |
---|---|---|
导出格式 | BSON | JSON |
主要用途 | 简单且高效的 小型的MongoDB的数据库的备份/恢复 | 小规模的或部分的Mongo的数据的,测试期间的数据备份/恢复 |
额外说明 | 不适合备份/恢复 大型MongoDB数据库 mongodump不导出local(这个特殊的)数据库 mongodump不导出index索引 |
导出数据时使用严格模式(strict mode representation=MongoDB Extended JSON )仅支持UTF-8编码的数据 |
经验和结论 | 支持普通导出单个db的所有的collection 建议:普通的,简单的,数据的备份和恢复,都还是用mongodump/mongorestore这套工具 |
不支持普通导出单个db的所有的collection |
- 其他相关
- 如果是在线云平台部署的Mongo,备份/恢复可以使用
- MongoDB Atlas
- Fully Managed MongoDB, hosted on AWS, Azure, and GCP | MongoDB
- MongoDB Atlas
- 如果是
replica sets
,备份/恢复可以使用:
- 如果是在线云平台部署的Mongo,备份/恢复可以使用