monogodump命令
mongodump對運行的MongoDB進行查詢,然后對查詢到的數據進行備份寫入磁盤,是一種能再運行時備份的方法,MongoDB自帶該工具。
mongodump使用的是普通的查詢機制(無鎖定),所以產生的備份不一定是服務器數據的實時快照,即當運行備份同時有客戶端寫入數據,該數據就不會備份到磁盤,備份時的查詢會對其他客戶端的性能產生不利的影響。
命令格式如下(可運行mongodump --help查看全部命令):mongodump -d 數據庫名稱 -o 文件名
實例:mongodump -d Test -o backup
mongorestore命令
mongorestore是MongoDB提供從備份中恢復數據的工具,mongorestore獲取mongodump的輸出結果,並將備份的數據插入到運行中的MongoDB實例。
命令格式如下(可運行mongorestore --help查看全部命令):mongorestore -d 數據庫名 [--drop] 數據源
--drop 代表在恢復前刪除集合(若存在),否則備份的數據就會和現有的集合合並,可能會覆蓋一些文檔。
實例:mongorestore -d Test --drop backup/Test
問題:
MongoDB版本:win32-x86_64-2.0.2
線上備份數據前已查看A集合的A字段為空,運行mongodump備份過后(數據源B)再次查看A集合的A字段,同樣為空。
該備份的數據源運行mongorestore --drop恢復到線下的MongoDB,並運行程序設置A集合的A字段有值,過后運行mongorestore --drop將數據源B再次恢復,查看A集合的A字段,發覺該字段還是有值,執行--drop應該會將之前的文檔都刪除再恢復數據源B,即A集合的A字段應該為空。
圖示如下:
1、線下恢復數據源B
2、線上備份的數據源B
請各位大神解惑,謝謝!