乐趣区

关于前端:mongo-数据库的备份和恢复

前言

前阵子应用 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

退出移动版