1. 程式人生 > >MongoDB(三) 備份與恢復

MongoDB(三) 備份與恢復

MongoDB備份與恢復

1. 備份 mongodump

用法: mongodump

將mongodb裡的資料匯出為.bson檔案

常用配置:

引數 用法
/help 列印幫助
/version 列印工具版本
/v, /verbose: 指定日誌(v的數量代表了日誌級別, 如:-vvvv, 也可以指定數字, 如:–verbose=N)
/quiet 靜默執行, 不列印任何日誌輸出
/h, /host: 指明資料庫伺服器的IP
/port: 服務埠 (也可以這麼用 –host hostname:port)
/u, /username: 連線伺服器的使用者名稱
/p, /password: 連線資料庫的密碼
/authenticationDatabase: 儲存使用者憑據的資料庫
/authenticationMechanism: 認證機制
/d, /db: 將要備份的資料庫
/c, /collection: 將要備份的集合(資料表)
/o, /out: 備份檔案輸出路徑, 預設路徑是bin下的dump 或者指定為’-’ 表示輸出到控制檯(例: -o -)

2. 恢復 mongorestore

用法: mongorestore

常用配置:

同上

3. 其他方法

有時別人會把整個MongoDB的資料檔案發給你, 這種”備份”方式很不推薦, 因為這樣很有可能在複製檔案的時候有更新操作, 導致拿到的檔案時不完整的, 從而無法恢復. 使用上述備份與恢復方法可以避免這個問題.

如果拿到的是資料檔案:
- 首先看是否有.wt檔案, 如果有, 則說明原始庫用的是WiredTiger引擎, 如果你的MongoDB是3.2以上版本, 則預設就是WiredTiger引擎, 無需額外加引數. 如果沒有.wt檔案, 而是有xxx.ns和xxx.0 xxx.1等檔案, 則說明用的是mmap引擎, 3.2一下版本預設就是這個引擎, 而3.2以上版本需要指定引數:–storageEngine=mmapv1
- 然後看資料夾中是不是每個資料庫都有自己的子資料夾, 這將決定啟動mongod的時候是否需要加引數–directoryperdb, 有子資料夾則需要加這個引數, MongoDB將會去相應的子資料夾中讀取資料檔案
- 最後別忘了加引數–dbpath用於指定你所拿到備庫資料夾的路徑