mongo 數(shù)據(jù)庫的備份和恢復

前言

前陣子使用 ssr 重構(gòu)了博客,需要對之前的舊數(shù)據(jù)進行備份,之前的做法是直接把mongo/data目錄下的所有文件進行備份...... (沒錯我之前就是這么干的.

最近研究了一下,有兩種方法可以備份 mongo 數(shù)據(jù)庫

如下圖,有一個 blog 數(shù)據(jù)庫,我們下面開始對其進行備份

1. mongodump、mongorestore

? mongodump 是 MongoDB 官方提供的備份工具,它可以從 MongoDB 數(shù)據(jù)庫讀取數(shù)據(jù),并生成 BSON 文件,mongodump 適合用于備份和恢復數(shù)據(jù)量較小的 MongoDB 數(shù)據(jù)庫,不適用于大數(shù)據(jù)量備份。

備份

語法如下,注意有幾個參數(shù):

  • -h:MongDB所在服務(wù)器地址,如 localhost:27017
  • -d:備份的數(shù)據(jù)庫
  • -c:備份的數(shù)據(jù)表
  • -o:備份的數(shù)據(jù)存放位置

mongodump -h dbhost -d dbname -o dbdirectory

我們直接運行命令:

# 導出 blog 數(shù)據(jù)庫 到當前目錄
mongodump -h localhost:27017 -d blog -o ./

# 也可以導出特定表
# 導出 blog 數(shù)據(jù)庫的 articles 表 到當前目錄
mongodump -h localhost:27017 -c articles -d blog -o ./

執(zhí)行完畢,我們點開blog目錄發(fā)現(xiàn),下面有后綴為 bson、json的文件,輸出一個bson文件看,發(fā)現(xiàn)是亂碼:

cat articles.bson

其實我們備份的數(shù)據(jù)都是二進制的,我們直接查看不到的,需要結(jié)合 mongo 自帶的 bsondump :

bsondump .\articles.bson

emmm,可以正常查看了

恢復

和備份差不多:

  • -h:MongDB所在服務(wù)器地址,如 localhost:27017
  • -d:需要恢復的數(shù)據(jù)庫
  • -c:需要恢復的數(shù)據(jù)表
  • <path>:mongorestore 最后的一個參數(shù),備份數(shù)據(jù)所在位置

>mongorestore -h <hostname><:port> -d dbname <path>

我們先把 blog 數(shù)據(jù)庫刪除,然后開始恢復

# 恢復 blog 數(shù)據(jù)庫的所有表
 mongorestore -h localhost:27017 -d blog ./

# 當然你也可以只恢復特定的表
# 比如,只恢復 articles 表
mongorestore -h localhost:27017  -c articles  -d blog ./articles.bson

執(zhí)行,所有數(shù)據(jù)已恢復~

2. mongoexport、mongoimport

Mongodb中 的 mongoexport 工具可以把一個 collection 導出成 JSON 格式或 CSV 格式的文件。

mongoexport 只能一個一個表導出,額.......

導出

mongoexport 的使用和參數(shù)基本和 mongodump 一樣:

  • -h:MongDB所在服務(wù)器地址,如 localhost:27017
  • -d:備份的數(shù)據(jù)庫
  • -c:備份的數(shù)據(jù)表
  • -o:備份的數(shù)據(jù)存放位置,必須指定存放類型,如 json、csv
# 導出 blog 數(shù)據(jù)庫的 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所在服務(wù)器地址,如 localhost:27017
  • -d:恢復的數(shù)據(jù)庫
  • -c:恢復的數(shù)據(jù)表
  • <path>:mongorestore 最后的一個參數(shù),備份數(shù)據(jù)所在位置
# 從json導入
mongoimport -h localhost:27017 -d blog -c articles ./articles.json
# 從csvf導入
mongoimport -h localhost:27017 -d blog -c articles ./articles.csv

恢復成功~


END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容