前言
前阵子应用 ssr 重构了博客,须要对之前的旧数据进行备份,之前的做法是间接把 mongo/data 目录下的所有文件进行备份 ……(没错我之前就是这么干的~.~)
最近钻研了一下,有两种办法能够备份 mongo 数据库
如下图,有一个 blog 数据库,咱们上面开始对其进行备份
1. mongodump、mongorestore
mongodump 是 MongoDB 官网提供的备份工具,它能够从 MongoDB 数据库读取数据,并生成 BSON 文件,mongodump 适宜用于备份和复原数据量较小的 MongoDB 数据库,不适用于大数据量备份。
备份
语法如下,留神有几个参数:
- -h:MongDB 所在服务器地址,如 localhost:27017
- -d:备份的数据库
- -c:备份的数据表
- -o:备份的数据寄存地位
mongodump -h dbhost -d dbname -o dbdirectory
咱们间接运行命令:
# 导出 blog 数据库 到当前目录
mongodump -h localhost:27017 -d blog -o ./
# 也能够导出特定表
# 导出 blog 数据库的 articles 表 到当前目录
mongodump -h localhost:27017 -c articles -d blog -o ./
执行结束,咱们点开 blog 目录发现,上面有后缀为 bson、json 的文件,输入一个 bson 文件看,发现是乱码:
cat articles.bson
其实咱们备份的数据都是二进制的,咱们间接查看不到的,须要联合 mongo 自带的 bsondump :
bsondump .\articles.bson
emmm,能够失常查看了
复原
和备份差不多:
- -h:MongDB 所在服务器地址,如 localhost:27017
- -d:须要复原的数据库
- -c:须要复原的数据表
- <path>:mongorestore 最初的一个参数,备份数据所在位置
>mongorestore -h <hostname><:port> -d dbname <path>
咱们先把 blog 数据库删除,而后开始复原
# 复原 blog 数据库的所有表
mongorestore -h localhost:27017 -d blog .\
# 当然你也能够只复原特定的表
# 比方,只复原 articles 表
mongorestore -h localhost:27017 -c articles -d blog .\articles.bson
执行,所有数据已复原~
2. mongoexport、mongoimport
Mongodb 中 的 mongoexport 工具能够把一个 collection 导出成 JSON 格局或 CSV 格局的文件。
mongoexport 只能一个一个表导出,额 ……~.~
导出
mongoexport 的应用和参数根本和 mongodump 一样:
- -h:MongDB 所在服务器地址,如 localhost:27017
- -d:备份的数据库
- -c:备份的数据表
- -o:备份的数据寄存地位,必须指定寄存类型,如 json、csv
# 导出 blog 数据库的 articles 表
mongoexport -h localhost:27017 -d blog -c articles -o ./articles.json
mongoexport -h localhost:27017 -d blog -c articles -o ./articles.csv
复原
- -h:MongDB 所在服务器地址,如 localhost:27017
- -d:复原的数据库
- -c:复原的数据表
- <path>:mongorestore 最初的一个参数,备份数据所在位置
# 从 json 导入
mongoimport -h localhost:27017 -d blog -c articles ./articles.json
# 从 csvf 导入
mongoimport -h localhost:27017 -d blog -c articles ./articles.csv
复原胜利~
END